SOAデプロイ、プロビジョニング、および自動化
ある運用チームは、CloudFormation テンプレートで EC2 Auto Scaling グループを作成し、各インスタンスの UserData 内で cfn-init を実行してアプリケーションをインストールしています。現状ではインスタンスが起動した直後にスタックが CREATE_COMPLETE になり、アプリのインストールが完了していなくてもデプロイ成功と判定されてしまいます。アプリのセットアップが正常に完了した場合のみスタックを成功とし、失敗時には自動でロールバックさせたいと考えています。最小の運用負荷でこれを実現する方法はどれですか。
AAuto Scaling グループに CreationPolicy を設定し、UserData の末尾で cfn-signal を実行して成功シグナルを送信する
✓ 正解
CreationPolicy がインスタンスから期待数の cfn-signal を受信した場合のみ作成完了とみなすため、アプリ設定が成功したときだけスタックが成功し、Timeout 内に揃わなければ自動ロールバックされます。
Bインスタンスリソースに DependsOn を設定し、アプリ用リソースの作成完了後にインスタンスを起動させる
DependsOn はリソース間の作成順序を定義するだけで、インスタンス内部の cfn-init 完了を待機する仕組みを持たないため、アプリ未完了でも CREATE_COMPLETE になる問題は解消できません。
Cスタックに UpdatePolicy を設定し、ローリング更新時の最小正常インスタンス数をしきい値として指定する
UpdatePolicy は既存スタック更新時のローリング更新やバッチサイズを制御する属性であり、新規作成時の完了判定には関与しないため、インストール完了を待たせる目的には使えません。
Dテンプレートに WaitCondition を単独で定義し、設定した Timeout が経過した時点で自動的にスタックを成功と判定する
WaitCondition は成功シグナルの受信を前提とした仕組みで、Timeout が経過してもシグナルが不足していれば失敗扱いになります。記述のように経過=成功とはならず要件を満たしません。
解説
CreationPolicy は、リソースの作成完了とみなすために指定数の成功シグナルを必要とする属性です。
Auto Scaling グループに CreationPolicy を設定し、各インスタンスの UserData 末尾で cfn-init 成功後に cfn-signal を実行すると、期待数のシグナルが届いた場合のみ CREATE_COMPLETE となります。Timeout 内にシグナルが揃わなければスタックは失敗し、自動でロールバックされます。
選択肢Bの DependsOn はリソースの作成順序を制御するだけで、インスタンス内のアプリ設定完了を待ちません。
選択肢Cの UpdatePolicy はスタック更新時のローリング動作を制御する属性で、新規作成時の完了判定には作用しません。
選択肢Dの WaitCondition はシグナル受信を前提とし、Timeout 経過は成功ではなく失敗として扱われるため、記述の動作になりません。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでSOAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →