ある企業はCloudFormationを使用してアプリケーション環境全体をコードで管理しています。スタック作成・削除のライフサイクルに連動して、AWSがネイティブサポートしていないサードパーティのSaaS(Software as a Service:クラウド経由で提供されるソフトウェアサービス)監視ツールへのアプリケーション登録・登録解除を自動化したいと考えています。この処理をCloudFormationのライフサイクルに組み込む最も適切な方法はどれですか?
AWS::CloudFormation::CustomResource(カスタムリソース)を定義し、Lambda関数をServiceToken(処理の委譲先として指定するARN)として設定してSaaSツールのAPIを呼び出す。 CloudFormation Custom Resource(AWS::CloudFormation::CustomResource)は、AWSがネイティブサポートしないリソース操作やサードパーティAPIの呼び出しをCloudFormationのライフサイクルに組み込む機能です。Lambda関数をServiceTokenとして指定することで、スタックの作成・更新・削除イベント時にLambdaが呼び出され、SaaSツールへの登録・更新・登録解除処理を実行できます。レスポンスをCloudFormationに返すことでスタック処理が継続します。 選択肢Aは、StackSetsはマルチアカウント・マルチリージョンへ同一スタックをデプロイするための機能であり、サードパーティAPIの呼び出しには使用できません。 選択肢Bは、WaitConditionはスタック外部のプロセス完了を待機する機能であり、CloudFormationの外でAPIを呼び出す別途の仕組みが必要になります。CloudFormationのライフサイクルに完全に組み込む構成としては不完全です。 選択肢Dは、CloudFormation Hooksはリソースプロビジョニング前後にコンプライアンス検証を行うための機能(主に設定値の検証)であり、サードパーティサービスへの登録という副作用を持つ処理の実装には設計上適していません。