Lambda 関数をデプロイするための CDK
3320 ワード
Lambda 関数をデプロイするための多くのオプションがあります.
コードを圧縮して S3 にアップロードします EFS を介して大きな依存関係を共有する CloudFormation によるインライン関数
このノートでは、AWS CDK を使用して Lambda 関数をデプロイし、テストのために複数の Lambda 関数を API Gateway と統合する 3 つの方法を共有したいと思います.
依存関係をインストールする
aws_lambda.関数
この場合、docker イメージはローカル マシンからビルドされることに注意してください.これがプロジェクト構造です
API ゲートウェイを作成する
API リソースを作成する
ラムダ統合を作成する
メソッドをリソースに追加する
このノートでは、AWS CDK を使用して Lambda 関数をデプロイし、テストのために複数の Lambda 関数を API Gateway と統合する 3 つの方法を共有したいと思います.
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イメージによるラムダ関数のデプロイ
この場合、docker イメージはローカル マシンからビルドされることに注意してください.これがプロジェクト構造です
- 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
)
Reference
この問題について(Lambda 関数をデプロイするための CDK), 我々は、より多くの情報をここで見つけました https://dev.to/entest/cdk-to-deploy-a-lambda-function-4pe8テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol