AWS::Lambda::Function リソースの更新 - AWS CloudFormation

AWS::Lambda::Function リソースの更新

生成されたテンプレートに AWS::Lambda::Function リソースが含まれる場合、Code/S3BucketCode/S3Key プロパティが MUTUALLY_EXCLUSIVE_PROPERTIES として認識されたことを伝える警告が表示されます。さらに、Code/S3ObjectVersion プロパティは UNSUPPORTED_PROPERTIES の警告を受け取ります。生成されたテンプレートには Code/ImageUriCode/ZipFile のプロパティがありません。これは、これらが相互排他的な書き込み専用のプロパティであるためです。どの AWS::Lambda::Function リソースも、これらの排他的なプロパティのセットを 1 つしか持つことができません。

  • Code/S3BucketCode/S3Key のプロパティ、およびオプションで Code/S3ObjectVersion のプロパティです。

  • Code/ImageUri プロパティ

  • Code/ZipFile プロパティ

IaC ジェネレーターは、リソースの作成または更新に排他的な書き込み専用プロパティのどのセットが使用されたのかを特定することはできません。そのため、IaC ジェネレーターには、生成されたテンプレートの最初のプロパティのセットのみが含まれます。生成されたテンプレートに AWS::Lambda::Function リソースを含めるには、生成されたテンプレートをダウンロードして、Lambda コードの正しい情報を使ってこれを更新する必要があります。

Lambda コードを Amazon S3 バケットに保存し、S3ObjectVersion プロパティを使用しない場合、生成されたテンプレートを修正せずにそのままインポートすることができます。IaC ジェネレーターは、インポートオペレーション中に、テンプレートのパラメータとして Amazon S3 バケットとキーを要求します。

Lambda コードを Amazon ECR リポジトリとして保存する場合は、以下の手順に従ってテンプレートを更新します。
  1. 生成されたテンプレートをダウンロードします。

  2. 生成されたテンプレートから、Code/S3Bucket および Code/S3Key プロパティのプロパティと対応するパラメータを削除します。

  3. 生成されたテンプレートで削除したプロパティを Code/ImageUri プロパティに置き換え、Amazon ECR リポジトリの URL を指定します。

  4. 生成されたテンプレートを IaC ジェネレーターのコンソールで開き、[編集したテンプレートをインポート] をクリックします。

Lambda コードを zip ファイルとして保存する場合は、以下の手順に従ってテンプレートを更新します。
  1. 生成されたテンプレートをダウンロードします。

  2. 生成されたテンプレートから、Code/S3Bucket および Code/S3Key プロパティのプロパティと対応するパラメータを削除します。

  3. 生成されたテンプレートの削除されたプロパティを Code/ZipFile プロパティに置き換えます。

  4. 生成されたテンプレートを IaC ジェネレーターのコンソールで開き、[編集したテンプレートをインポート] をクリックします。

Lambda コードのコピーがない場合は、以下の手順に従ってテンプレートを更新します。
  1. AWS Lambda GetFunction API アクションを使用します (aws lambda get-function AWS CLI コマンドを使用するなど)。

  2. レスポンスの RepositoryType パラメータは、コードが Amazon S3 バケットにある場合は S3 、コードが Amazon ECR リポジトリにある場合は ECR です。

  3. レスポンスの Location パラメータには、デプロイパッケージを 10 分間ダウンロードするときに使用できる、署名付き URL が含まれています。コードをダウンロードします。

  4. このコードを Amazon S3 バケットにファイルをアップロードします。

  5. 生成されたテンプレートを使ってインポートオペレーションを実行し、パラメータ値としてバケット名とキーを指定します。