AWS CDK를 사용하여 Docker 빌드 Lambda 함수 배포

7833 단어 lambdacdkawsdocker
이 프로젝트는 Docker 및 AWS CDK를 사용하여 AWS Lambda 함수를 배포하는 최소 작업 예제입니다.

Docker를 사용하여 Lambda 함수를 배포하면 많은 이점이 있습니다.
  • 필요한 모든 라이브러리를 단일 Docker 이미지로 패키징합니다
  • .
  • AWS Lambda의 512MB 크기 제한을 무시합니다. AWS ECR에 저장된 도커 이미지의 최대 크기는 10GB입니다.
    다른 게시물에서 Tensorflow 모델을 배포하는 방법을 보여드리겠습니다!
  • 쉽습니다!

  • GitHub Repository

    CDK 초기화 및 배포



    CDK 설정 및 환경 부트스트래핑은 다루지 않겠습니다. 해당 정보를 찾을 수 있습니다here..

    CDK를 설정했으면 프로젝트를 설정해야 합니다.
  • mkdir cdk_docker_lambda && cd cdk_docker_lambda
  • cdk init --language python
  • source .venv/bin/activate
  • pip install -r requirements.txt && pip install -r requirements-dev.txt
    이제 빈 스택을 AWS에 배포합니다.
  • cdk deploy

  • 스택 설계



    스택은 람다 함수만 배포합니다. 람다 함수는 Docker 를 사용하여 빌드되므로 Docker가 설치되어 있고 Docker 데몬이 실행 중인지 확인하십시오.

    # cdk_docker_lambda/cdk_docker_lambda_stack.py
    
    from aws_cdk import Stack
    from aws_cdk import aws_lambda as _lambda
    from constructs import Construct
    
    
    class CdkDockerLambdaStack(Stack):
        def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
            super().__init__(scope, construct_id, **kwargs)
    
            self.build_lambda_func()
    
        def build_lambda_func(self):
            self.prediction_lambda = _lambda.DockerImageFunction(
                scope=self,
                id="ExampleDockerLambda",
                # Function name on AWS
                function_name="ExampleDockerLambda",
                # Use aws_cdk.aws_lambda.DockerImageCode.from_image_asset to build
                # a docker image on deployment
                code=_lambda.DockerImageCode.from_image_asset(
                    # Directory relative to where you execute cdk deploy
                    # contains a Dockerfile with build instructions
                    directory="cdk_docker_lambda/ExampleDockerLambda"
                ),
            )
    
    


    람다 함수


    cdk_docker_lambda라는 새 디렉토리를 ExampleDockerLambda에 만듭니다. 여기에 함수의 종속성을 포함하는 Dockerfile , requirements.txt 및 람다 함수 자체example_docker_lambda.py를 넣을 것입니다.

    cdk_docker_lambda/ExampleDockerLambda/Dockerfile




    FROM amazon/aws-lambda-python:latest
    
    LABEL maintainer="Wesley Cheek"
    # Installs python, removes cache file to make things smaller
    RUN yum update -y && \
        yum install -y python3 python3-dev python3-pip gcc && \
        rm -Rf /var/cache/yum
    # Be sure to copy over the function itself!
    COPY example_docker_lambda.py ./
    # Copies requirements.txt file into the container
    COPY requirements.txt ./
    # Installs dependencies found in your requirements.txt file
    RUN pip install -r requirements.txt
    
    # Points to the handler function of your lambda function
    CMD ["example_docker_lambda.handler"]
    


    cdk_docker_lambda/ExampleDockerLambda/requirements.txt




    requests
    


    cdk_docker_lambda/ExampleDockerLambda/example_docker_lambda.py




    # Very simple
    
    import requests
    
    def handler(event, context):
        return "Hello Lambda!"
    
    


    지금 cdk deploy . AWS CDKDocker를 사용하여 새 Lambda 함수를 빌드한 다음 CDK 설정 중에 ECR를 실행하여 원래 생성된 cdk bootstrap 리포지토리로 푸시합니다. 얼마나 편리한 지.

    이미지가 빌드되고 푸시된 후 CDK는 필요한 인프라를 배포합니다. AWS CloudFormation 콘솔로 이동하여 배포를 볼 수 있습니다. 몇 분 밖에 걸리지 않습니다.

    완료되면 Lambda 콘솔에서 아름다운Docker 배포된 Lambda 함수를 찾을 수 있습니다.



    Lambda 함수 테스트



    함수는 항상 문자열을 반환하기 때문에 모든 종류의 이벤트를 사용할 수 있습니다.


    AWS CDKDocker를 사용하여 원하는 크기의 Lambda를 쉽게 배포하십시오! 비용이 청구되지 않도록 완료되면 cdk destroy를 확인하십시오.

    좋은 웹페이지 즐겨찾기