無限ノック › DVA 練習問題一覧 › 問題
DVAデプロイ

開発チームがAWS CloudFormationでインフラをコード管理しています。CloudFormationがネイティブサポートしていない外部DNSプロバイダー(Route 53以外)へのDNSレコード追加を、スタックのデプロイ・削除のライフサイクルと連動して自動管理したいと考えています。最も適切なアプローチはどれですか?

A
CloudFormationテンプレートにAWS::CloudFormation::WaitConditionリソースを定義し、外部APIを呼び出してシグナルを送信するUserDataスクリプトを持つEC2インスタンスと組み合わせて使用する
WaitConditionはEC2インスタンスなど既存リソースからのシグナルを受け取りスタック作成を一時停止する機能であり、外部APIの呼び出しやDNSレコードのCRUD操作を管理するためのものではない。要件を満たせない。
B
AWS::CloudFormation::CustomResourceタイプでServiceTokenにLambda関数ARNを指定し、Lambda関数から外部DNSプロバイダーAPIを呼び出してcfn_responseモジュールでSUCCESS/FAILUREをスタックに通知する
✓ 正解
Custom ResourceはServiceTokenで指定したLambda関数をCreate/Update/Deleteのタイミングで呼び出す機能。Lambda関数からDNSプロバイダーAPIを呼び出し、cfn_responseでSUCCESS/FAILUREを通知することで、スタックライフサイクルと外部リソース操作を確実に連動させられる。
C
スタック作成後にEventBridgeルールでLambda関数をトリガーしてDNSレコードを追加し、スタック削除イベントを検知した別のEventBridgeルールでDNSレコードを削除するイベント駆動構成にする
EventBridgeのイベント駆動構成はスタック作成後の非同期処理には使えるが、スタック削除時のDNSレコード自動削除をライフサイクルと確実に連動させることが難しく、CloudFormationスタックの状態とDNSレコードの整合性が保証できない。
D
AWS Step FunctionsのステートマシンをCloudFormationで定義し、スタック作成・削除のライフサイクルにDNS操作ステップを追加して外部APIを管理するワークフローを構築する
Step FunctionsはCloudFormationスタックのCreate/DeleteライフサイクルイベントへのネイティブUIフックを持たない。スタックライフサイクルへの統合にはCustom Resourceが必要であり、Step Functionsはその代替にならない。

解説

CloudFormation Custom Resource(AWS::CloudFormation::CustomResource または Custom::プレフィックスの独自タイプ)は、CloudFormationがネイティブサポートしていない任意の処理をスタックのCreate/Update/DeleteライフサイクルにネイティブUI統合する機能です。ServiceTokenにLambda関数ARNを指定すると、スタック操作のたびにLambda関数が呼び出されます。Lambda関数は外部DNSプロバイダーのAPIを呼び出した後、cfn_responseモジュール(またはPresigned URLへのHTTPリクエスト)でCloudFormationにSUCCESS/FAILUREを通知します。スタック削除時にはRequestType: Deleteとして呼び出されるため、DNSレコードの自動削除も確実に実現できます。 選択肢AのWaitConditionはEC2インスタンスなど既存リソースからのシグナルを待機してスタック作成を一時停止する機能であり、外部APIの呼び出しやリソースのCRUD操作を管理する機能ではありません。 選択肢CのEventBridgeによるイベント駆動構成では、スタック削除イベントを確実に検知してDNSレコードを削除する保証が困難で、スタックの状態とDNSレコードの整合性が保証できません。 選択肢DのStep FunctionsはCloudFormationスタックのCreate/DeleteライフサイクルイベントへのネイティブUIフック機能を持たないため、Custom Resourceの代替にはなりません。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← DVA の問題一覧に戻る