Lambda에서 컨테이너 이미지를 사용하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 10월 26일

종속성이 있는 AWS Lambda 컨테이너 이미지를 만들고 싶습니다. 어떻게 해야 하나요?

해결 방법

Lambda 컨테이너 이미지를 생성하는 IAM 사용자 또는 역할에 대한 권한이 구성되어 있는지 확인합니다. 그런 다음, 다음 단계에 따라 Docker를 사용하여 컨테이너 이미지를 배포합니다.

1.    Get Docker 웹 페이지로 이동합니다. 요구 사항을 충족하는 Docker 데스크톱 애플리케이션을 선택합니다. 제공된 지침에 따라 Docker 데스크톱을 설치합니다.
참고: Docker는 타사 웹 사이트입니다.

2.    로컬 시스템에서 세 개의 파일(Dockerfile, 라이브러리가 포함된 requirements.txt, 가져오기 명령문이 포함된 app.py)이 포함된 폴더를 한 개 생성합니다. 참고: Amazon Elastic Container Registry(Amazon ECR) 퍼블릭 레지스트리용 Python 버전 중 최신 버전을 사용하세요.

이 예제 Dockerfile은 Python 3.8을 사용합니다.

FROM public.ecr.aws/lambda/python:3.8

# Copy function code
COPY app.py ${LAMBDA_TASK_ROOT}

# Install the function's dependencies using file requirements.txt
# from your project folder.

COPY requirements.txt .
RUN pip3 install -r requirements.txt —target "${LAMBDA_TASK_ROOT}"

# Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile)
CMD [ "app.handler" ]

이 예제 app.py 파일에는 예제 가져오기 명령문이 포함되어 있습니다.

import sys
def handler(event, context):
    return 'Hello from AWS Lambda using Python' + sys.version + '!'

3.    docker build 명령과 이미지 이름을 사용하여 도커 이미지를 구축합니다.

다음은 “hello-world” 예제가 포함된 docker build 명령입니다.

docker build -t hello-world .

4.    docker run 명령을 이용하여 도커 이미지를 시작합니다.

다음은 “hello-world” 예제가 포함된 docker run 명령입니다.

docker run -p 9000:8080 hello-world

5.    Lambda Runtime Interface Emulator(RIE)를 사용하여 애플리케이션을 테스트합니다. 새 터미널 창에서 curl 명령을 사용하여 다음 엔드포인트에 이벤트를 게시합니다.

curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'

이 명령은 컨테이너 이미지에서 실행되는 함수를 호출한 다음 응답을 반환합니다.

6.    Amazon ECR 레지스트리에 Docker CLI를 인증합니다. 명령에서 계정 ID와 AWS 리전을 변경하여 요구 사항을 충족하는지 확인합니다.

다음은 Amazon ECR 레지스트리에 대한 Docker CLI를 인증하는 예제입니다.

aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.us-east-1.amazonaws.com

7.    create-repository 명령을 사용하여 Amazon ECR에 리포지토리를 생성합니다.

다음은 create-repository의 예제입니다.

aws ecr create-repository --repository-name hello-world --image-scanning-configuration scanOnPush=true --image-tag-mutability MUTABLE

8.    docker tag 명령을 사용하여 이미지에 리포지토리 이름과 일치하도록 태그를 지정합니다. 그런 다음 docker push 명령을 사용하여 Amazon ECR에 이미지를 배포합니다.

명령에서 계정 ID와 AWS 리전을 변경하여 요구 사항을 충족하는지 확인합니다.

다음은 docker tag 명령의 예제입니다.

docker tag hello-world:latest 123456789012.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest

다음은 docker push 명령의 예제입니다.

docker push 123456789012.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest

9.    Amazon ECR 컨테이너 레지스트리의 컨테이너 이미지를 사용하여 Lambda 함수를 생성하고 실행합니다. 자세한 내용은 함수 생성을 참조하세요.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?