AWS CustomResourceコンストラクトは、CloudFormationデプロイメント中のAWS SDK呼び出しを簡素化し、Parameter Storeからの値の取得やLambda関数の呼び出しといったタスクによく使用されます。これは、シングルトンLambda関数を使用してCloudFormationライフサイクルイベント(CREATE、UPDATE、DELETE)中にSDK呼び出しを実行し、応答をS3に保存します。しかし、呼び出されたLambda関数が失敗した場合、CloudFormationデプロイメントが予期せず成功することがあります。これは、シングルトンLambdaの成功または失敗が、呼び出されたLambdaではなく、API呼び出しの状態のみを反映するためです。これに対処するために、カスタムプロバイダがデフォルトのシングルトンLambdaを置き換えます。このカスタムプロバイダは、Provider Frameworkまたは直接的なLambdaアプローチのいずれかを使用して、カスタムリソースLambdaの結果に基づいてデプロイメントの成功または失敗をより細かく制御します。Provider Frameworkは、応答を自動的にS3バケットに送信することで応答処理を簡素化します。直接的なLambda処理では、事前に署名されたS3 URLへの手動PUTリクエストが必要です。AWSはProvider Frameworkを推奨しています。カスタムリソースは、デフォルトではプロパティが変更された場合にのみUPDATE時に実行されます。タイムスタンプを使用して強制的に実行させることができます。プロバイダLambda関数は、すべてのライフサイクルイベントで実行されるため、Lambda関数自体に条件付きロジックが必要です。適切な関数動作には、ライフサイクルイベント(CREATE、UPDATE、DELETE)を慎重に考慮することが不可欠です。
dev.to
Dealing with CDK Custom Resources and failures.
Create attached notes ...
