AWS Lambda Docker로 Layer 대신 사용하기

realBro·2023년 11월 21일
0

lambda layer 등록은 최대 용량이 250 MB이므로 pytorch, sklearn같이 고용량의 라이브러리는 사용하기 어렵다.
사용하려면 Docker를 사용해야함.

  • AWS 가이드
  • Dockerfile
    FROM public.ecr.aws/lambda/python:3.9
    
    # Copy requirements.txt
    COPY requirements.txt ${LAMBDA_TASK_ROOT}
    
    # Copy function code
    COPY *.py ${LAMBDA_TASK_ROOT}
    
    # Install the specified packages
    RUN pip install -r requirements.txt
    
    # Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile)
    CMD [ "lambda_function.lambda_handler" ]
  • build & lambda deploy
    #aws ecr login
    aws ecr get-login-password --region {region} | docker login --username AWS --password-stdin {aws_account_id}.dkr.ecr.{region}.amazonaws.com
    # aws ecr repo 생성
    aws ecr create-repository --repository-name {repo-name} --image-scanning-configuration scanOnPush=true --image-tag-mutability MUTABLE
    # build
    docker build --platform linux/amd64 -t {aws_account_id}.dkr.ecr.{region}.amazonaws.com/{repo-name}:{tag} .
    # push
    docker push {aws_account_id}.dkr.ecr.{region}.amazonaws.com/{repo-name}:{tag}
    # lambda create
    aws lambda create-function --function-name {lambda_name} --package-type Image --code ImageUri={aws_account_id}.dkr.ecr.{region}.amazonaws.com/{repo-name}:{tag}
    # lambda update
    aws lambda update-function-code --function-name {lambda_name} --image-uri {aws_account_id}.dkr.ecr.{region}.amazonaws.com/{repo-name}:{tag}

0개의 댓글