を使用してDockerビルドラムダ関数を展開する


このプロジェクトは、DockerとAWS CDKを使用してAWSラムダ関数を展開する最小動作例です.
Dockerを使用したラムダ関数の展開
  • すべての必要なライブラリを単一のDockerイメージにパッケージ化する
  • 512 MBのAWSラムダのサイズ制約をバイパスします.AWS ECRに保存されたDocker画像は10 GBの最大サイズを持つ.
    どのように配置するかを示しますTensorflow 別のポストのモデル!
  • それは簡単です!
  • GitHub Repository

    CDK initと配備


    私は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 . ここでは、Aを置くつもりですDockerfile , requirements.txt これは関数の依存関係、およびラムダ関数自体を保持します.example_docker_lambda.py

    <高橋潤子>**この項目の翻訳は古いバージョンが元になっています**


    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"]
    

    として使用します。txt


    requests
    

    <高橋潤子>**この項目の翻訳は古いバージョンが元になっています**パイ


    # Very simple
    
    import requests
    
    def handler(event, context):
        return "Hello Lambda!"
    
    
    現在cdk deploy . AWS CDK 新しいラムダ関数をDocker それから、あなたのためにそれを押してくださいECR リポジトリは、もともと実行して作成されたcdk bootstrap CDK設定中.どのように便利.
    イメージが構築されプッシュされた後、CDKは必要なインフラストラクチャを展開します.に移動することができますAWS CloudFormation 展開を表示するコンソール.それはほんの数分かかる必要があります.
    完了したら、あなたの美しいを見つけるDocker ラムダコンソールに配備されたラムダ関数

    ラムダ関数のテスト


    関数は常に文字列を返すので、あらゆる種類のイベントを使用できます.

    あなたが使用したい任意のサイズのラムダを簡単に展開する楽しみを持っているAWS CDK and Docker ! 確実にするcdk destroy ときは、任意の料金を避けるために行われます.