Docker에서 시뮬레이션된 Lambda 환경을 사용하여 Lambda 계층을 만들려면 어떻게 해야 하나요?

3분 분량
0

대상 환경 런타임과 호환되는 AWS Lambda 계층을 만들고 싶습니다. 어떻게 해야 하나요?

간략한 설명

Lambda 함수를 개발할 때 지원되는 Lambda 런타임 버전 중에서 선택합니다. 특정 런타임과 호환되는 Lambda 함수 및 계층을 생성하려면 다음 중 하나를 수행합니다.

자세한 내용은 Lambda 레이어 생성 및 공유를 참조하세요.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하는 경우, 최신 AWS CLI 버전을 사용하고 있는지 확인하세요.

다음 지침에서는 Python을 코딩 언어로 사용하고 Linux 기반 컴퓨터 플랫폼을 예로 사용합니다. 다른 코딩 언어 및 플랫폼의 경우 그에 따라 단계를 조정하세요.

컴퓨터에 Docker 설치

아직 설치하지 않았다면 컴퓨터에 Linux, Windows 또는 macOS용 Docker를 설치합니다.

적절한 디렉토리 구조를 생성하고 pip 요구 사항 파일(requirements.txt)에 종속성 지정

디렉터리 구조 생성에 대한 자세한 내용은 레이어에 라이브러리 종속성 포함을 참조하세요. 종속성 지정에 대한 자세한 내용은 pip 사용 설명서의 요구 사항 파일을 참조하세요.

Python 버전 3.6 및 3.8과 호환되는 Lambda 계층의 디렉토리 구조 예시

├── requirements.txt
└── python/
    └── lib/
        ├── python3.6/
        │   └── site-packages/
        └── python3.8/
            └── site-packages/

참고: 함수와 모든 레이어의 압축되지 않은 총 크기는 압축되지 않은 배포 패키지 크기 제한인 250MB를 초과할 수 없습니다. Lambda에서 Python 버전 지원에 대한 자세한 내용은 Python으로 Lambda 함수 빌드를 참조하세요.

디렉토리 구조에서 지정한 런타임을 기반으로 라이브러리 종속성을 적절한 하위 폴더에 설치

디렉토리 구조에서 지정한 각 런타임에 대해 다음 AWS CLI 명령을 한 번씩 실행합니다.

중요: 설치할 호환 라이브러리에 따라 3.63.7 또는 3.8로 바꿉니다.

docker run -v "$PWD":/var/task "public.ecr.aws/sam/build-python3.6" /bin/sh -c "pip install -r requirements.txt -t python/lib/python3.6/site-packages/; exit"

레이어용.zip 파일 아카이브 생성

다음 명령을 실행하여 python 폴더를 압축하고 레이어 패키지를 생성합니다.

참고: mypythonlibs를 원하는 이름으로 바꿀 수 있습니다.

zip -r mypythonlibs.zip python > /dev/null

.zip 파일은 Lambda 환경의 /opt 폴더에서 압축되었습니다. /opt 폴더는 Lambda 함수 코드에서 액세스할 수 있습니다.

레이어 생성 또는 업데이트

Lambda 계층을 생성하거나 업데이트하려면, 다음 명령을 실행합니다.

중요: 이전에 지정한 호환 가능한 런타임을 포함해야 합니다. mypythonlibs를 이전 단계에서 사용한 패키지 이름으로 바꿉니다. My python libs를 원하는 설명으로 바꿉니다.

aws lambda publish-layer-version --layer-name mypythonlibs --description "My python libs" --zip-file fileb://mypythonlibs.zip --compatible-runtimes "python3.6" "python3.8"

출력을 검토하고 레이어의 Amazon 리소스 이름(ARN)을 복사합니다. 다음 단계를 완료하려면 레이어의 ARN이 필요합니다.

계층을 사용하도록 Lambda 함수 구성 업데이트

다음 명령을 실행하여 계층을 사용하도록 Lambda 함수 구성을 업데이트합니다.

중요: arn:aws:lambda:us-east-2:123456789012:layer:mypythonlibs:1을 레이어 ARN으로 바꿉니다.

aws lambda update-function-configuration --layers arn:aws:lambda:us-east-2:123456789012:layer:mypythonlibs:1 --function-name my-function

(선택 사항) Lambda 패키지에 AWS SAM 파일 대신 Docker 이미지 사용

AWS SAM 파일 대신 amazon/aws-sam-cli-build-image Docker 이미지를 사용하여 Lambda 패키지를 생성할 수도 있습니다. Docker 이미지를 사용하면 계층을 만들지 않고도 패키지를 생성할 수 있습니다.

1.    다음 명령을 실행하여 필요한 종속성 버전을 가져옵니다.

중요: 설치할 호환 라이브러리에 따라 3.63.7 또는 3.8로 바꿉니다.

docker run -v "$PWD":/var/task "public.ecr.aws/sam/build-python3.6" /bin/sh -c "pip install -r requirements.txt -t libs; exit"

2.    함수 코드와 올바른 라이브러리가 포함된 Lambda 배포 패키지를 생성합니다.


관련 정보

Python(Boto 3) Lambda 함수에서 "알 수 없는 서비스", "파라미터 검증 실패" 또는 "객체에 속성 없음" 오류가 발생하는 이유는 무엇인가요?

레이어 빌딩

모든 프로그래밍 언어 사용 및 공통 구성 요소 공유

Lambda(AWS CLI 명령 참조)

AWS 공식
AWS 공식업데이트됨 3년 전