Lambda 함수를 배포하기 위한 CDK

3256 단어
Lambda 기능을 배포하는 옵션이 있습니다.
  • 코드를 압축하고 S3에 업로드
  • EFS를 통해 큰 종속성을 공유합니다.
  • CloudFormation을 사용한 인라인 함수

  • 이 노트에서는 AWS CDK를 사용하여 Lambda 함수를 배포하고 테스트를 위해 여러 Lambda 함수를 API 게이트웨이와 통합하는 세 가지 방법을 공유하고자 합니다.

    1. 파일별로 람다 함수 배포



    종속성 설치

    python -m pip install --target path-to-lambda numpy 
    


    aws_lambda.함수

    handler_file = aws_lambda.Function(
                self,
                id="lambda-handler-wo-dependencies",
                code=aws_lambda.Code.from_asset(path.join(dirname, "lambda")),
                handler="handler.handler_file",
                runtime=aws_lambda.Runtime.PYTHON_3_8,
                memory_size=512,
                timeout=Duration.seconds(90)
            )
    


    2. ecr 이미지로 람다 함수 배포



    이 경우 도커 이미지는 로컬 시스템에서 빌드됩니다. 다음은 프로젝트 구조입니다

    - aws_devops
        - lambda
            - Dockerfile
            - .dockerignore
            - handler.py
            - requirements.txt
         -aws_devops_stack.py
    



    handler_ecr = aws_lambda.Function(
                self,
                id="lambda-ecr-build-local",
                code=aws_lambda.EcrImageCode.from_asset_image(
                    directory=path.join(dirname, "lambda")
                ),
                handler=aws_lambda.Handler.FROM_IMAGE,
                runtime=aws_lambda.Runtime.FROM_IMAGE,
                memory_size=512,
                timeout=Duration.seconds(90)
            )
    


    3. 기존 ecr 이미지로 람다 함수 배포




    handler = aws_lambda.Function(
                self,
                id="EcrImageId",
                code=aws_lambda.EcrImageCode.from_ecr_image(
                    repository=aws_ecr.Repository.from_repository_name(
                        self,
                        id="EcrImageId",
                        repository_name="EcrRepositoryName"
                    )
                ),
                architecture=aws_lambda.Architecture.ARM_64,
                handler=aws_lambda.Handler.FROM_IMAGE,
                runtime=aws_lambda.Runtime.FROM_IMAGE,
                memory_size=512,
                timeout=Duration.seconds(90),
            )
    


    4. 여러 람다와 API 게이트웨이 통합



    API 게이트웨이 생성

    api_gw = aws_apigateway.RestApi(
                self,
                id="ApiGatewayLambdaDeployOptions",
                rest_api_name="api-lambda-deploy-options"
            )
    


    API 리소스 생성

    api_file_resource = api_gw.root.add_resource(
                path_part="file"
            )
    


    람다 통합 생성

     api_file_intetgration = aws_apigateway.LambdaIntegration(
                handler=handler_file
            )
    


    리소스에 메소드 추가

     api_file_resource.add_method(
                http_method="GET",
                integration=api_file_intetgration
            )
    

    좋은 웹페이지 즐겨찾기