내용으로 건너뛰기

Amazon ECR 이미지와 Docker를 사용하여 Lambda 계층을 만들려면 어떻게 해야 합니까?

2분 분량
0

Amazon Elastic Container Registry(Amazon ECR) 이미지와 Docker를 사용하여 내 환경 런타임과 호환되는 AWS Lambda 계층을 만들고 싶습니다.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오. 다음 해결 방법은 Python 및 Linux를 사용합니다. 다른 코딩 언어 및 운영 체제(OS)에 해당하는 단계는 다를 수 있습니다.

사전 요구 사항: 컴퓨터에 Docker를 설치합니다. 설치 단계는 Docker Docs 웹 사이트의 Get DockerInstall Docker Engine(Linux만 해당)을 참조하십시오.

디렉터리 구조 만들기 및 종속성 지정

디렉터리 구조를 만들고 pip 요구 사항 파일(requirements.txt)에 종속성 지정 종속성을 지정하는 방법에 대한 자세한 내용은 pip 웹 사이트의 Requirements files를 참조하십시오.

다음 디렉터리 구조 예시는 Python 3.x와 호환되는 Lambda 계층에 해당합니다.

my-layer/
├── requirements.txt
└── python/

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

라이브러리 종속성을 해당 하위 폴더에 설치

디렉터리 구조에 지정된 각 런타임마다 다음 명령을 한 번씩 실행합니다.

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

참고: 3.x를 설치하려는 호환 가능한 Python 라이브러리로 바꾸십시오.

계층의 .zip 파일 아카이브 만들기

python 폴더를 압축하고 계층 패키지를 만들려면 다음 명령을 실행합니다.

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

참고: mypythonlibs를 계층 패키지의 이름으로 바꾸십시오.

계층 만들기 또는 업데이트

publish-layer-version이라는 다음 AWS CLI 명령을 실행합니다.

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

참고: mypythonlibs를 해당 계층 패키지 이름으로 바꾸고, My python libs를 계층 패키지에 대한 설명으로 바꾸고, python3.x를 설치된 Python 라이브러리로 바꾸십시오.

출력에 표시되는 계층의 Amazon 리소스 이름(ARN)을 기록해 둡니다.

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

다음 update-function-configuration 명령을 실행합니다.

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

참고: arn:aws:lambda:us-east-2:123456789012:layer:mypythonlibs:1을 계층 ARN으로 바꾸고 my-function을 해당 함수 이름으로 바꾸십시오. 위 명령은 Lambda 환경의 /opt 폴더에 계층을 배치합니다. Lambda 함수 코드에서 /opt 폴더에 액세스할 수 있습니다.

관련 정보

Python(Boto3) Lambda 함수에서 발생하는 "unknown service", "parameter validation failed" 또는 오류를 해결하려면 어떻게 해야 합니까?"object has no attribute"

AWS Lambda의 새로운 기능 – 모든 프로그래밍 언어 사용 및 공통 구성 요소 공유

Amazon ECR 퍼블릭 갤러리

AWS 공식업데이트됨 3달 전