AWS CloudFormationとS3を活用したLambda関数のデプロイ

2024/07/02に公開

AWS CloudFormationを使用して、Amazon S3バケットに保存されているコードを基にLambda関数をデプロイします。

手順

  1. S3バケットにコードをアップロード

    • Lambda関数のコード(例えば、lambda_function.zip)をS3バケットにアップロードします。
    • バケット名とオブジェクトキー(例:my-bucket/lambda_function.zip)をメモします。
  2. 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関数のファイルへのパスを指定します。
  1. 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関数をアップデートできます。

  1. スタックの更新(コード更新時)
    • コードを更新した場合は、CloudFormationスタックを更新します。
    • AWS CLIを使用したスタックの更新の例:
aws cloudformation update-stack --stack-name MyLambdaStack --template-body file://path/to/your/template.yaml

まとめ

この方法により、Lambda関数のコードをS3バケットから直接取得し、CloudFormationテンプレートを使用して効率的にデプロイすることができます。このアプローチは、開発作業を最小限に抑え、簡単にデプロイメントを自動化できる点で非常に有効です。

Discussion