✨
AWS CloudFormationとS3を活用したLambda関数のデプロイ
AWS CloudFormationを使用して、Amazon S3バケットに保存されているコードを基にLambda関数をデプロイします。
手順
-
S3バケットにコードをアップロード
- Lambda関数のコード(例えば、
lambda_function.zip
)をS3バケットにアップロードします。 - バケット名とオブジェクトキー(例:
my-bucket/lambda_function.zip
)をメモします。
- Lambda関数のコード(例えば、
-
CloudFormationテンプレートの作成
- CloudFormationテンプレート(YAMLまたはJSON形式)を作成します。
例として、YAML形式のテンプレートを以下に示します。
AWSTemplateFormatVersion: '2010-09-09'
Resources:
MyLambdaFunction:
Type: AWS::Lambda::Function
Properties:
Handler: lambda_function.lambda_handler
Role: arn:aws:iam::123456789012:role/execution_role # 適切なIAMロールのARNに置き換え
Code:
S3Bucket: my-bucket
S3Key: lambda_function.zip
Runtime: python3.12
Timeout: 30
MemorySize: 128
- S3Bucket: Lambda関数のコードが保存されているS3バケットの名前を指定します。
- S3Key: S3バケット内のLambda関数のファイルへのパスを指定します。
-
CloudFormationスタックのデプロイ
- AWS Management Console、AWS CLI、またはAWS SDKを使用して、CloudFormationスタックをデプロイします。
- AWS CLIを使用したデプロイの例
aws cloudformation create-stack --stack-name MyLambdaStack --template-body file://path/to/your/template.yaml
これにより、指定したS3バケットに保存されたコードを使用してLambda関数がデプロイされます。Lambda関数のコードを更新した場合は、新しいコードをS3バケットにアップロードし、CloudFormationスタックを更新することで、Lambda関数をアップデートできます。
-
スタックの更新(コード更新時)
- コードを更新した場合は、CloudFormationスタックを更新します。
- AWS CLIを使用したスタックの更新の例:
aws cloudformation update-stack --stack-name MyLambdaStack --template-body file://path/to/your/template.yaml
まとめ
この方法により、Lambda関数のコードをS3バケットから直接取得し、CloudFormationテンプレートを使用して効率的にデプロイすることができます。このアプローチは、開発作業を最小限に抑え、簡単にデプロイメントを自動化できる点で非常に有効です。
Discussion