を使用してDockerビルドラムダ関数を展開する
このプロジェクトは、DockerとAWS CDKを使用してAWSラムダ関数を展開する最小動作例です.
Dockerを使用したラムダ関数の展開 すべての必要なライブラリを単一のDockerイメージにパッケージ化する 512 MBのAWSラムダのサイズ制約をバイパスします.AWS ECRに保存されたDocker画像は10 GBの最大サイズを持つ.
どのように配置するかを示します それは簡単です! GitHub Repository
私はCDKを設定し、環境をブートストラップすることはありません.あなたはその情報を見つけることができますhere.
CDKを設定したら、プロジェクトを設定する必要があります.
スタックはラムダ関数のみを展開します.ラムダ関数は
で新しいディレクトリを作成する
イメージが構築されプッシュされた後、CDKは必要なインフラストラクチャを展開します.に移動することができます
完了したら、あなたの美しいを見つける
関数は常に文字列を返すので、あらゆる種類のイベントを使用できます.
あなたが使用したい任意のサイズのラムダを簡単に展開する楽しみを持っている
Dockerを使用したラムダ関数の展開
どのように配置するかを示します
Tensorflow
別のポストのモデル!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
ときは、任意の料金を避けるために行われます.Reference
この問題について(を使用してDockerビルドラムダ関数を展開する), 我々は、より多くの情報をここで見つけました https://dev.to/wesleycheek/deploy-a-docker-built-lambda-function-with-aws-cdk-fioテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol