無限ノック › DOP 練習問題一覧 › 問題
DOP構成管理と Infrastructure as Code (IaC)

DevOps エンジニアが CloudFormation テンプレートで EC2 インスタンスをデプロイしています。UserData スクリプトでアプリケーションのインストールと初期設定に約 10 分かかります。現在の実装では、アプリケーションの起動が失敗してもスタックが `CREATE_COMPLETE` になってしまう問題があります。アプリケーションの起動が成功した場合のみ CloudFormation スタックを正常完了させ、失敗時に自動ロールバックさせるための最も適切な方法はどれですか?

A
EC2 リソースの `Metadata` セクションに `AWS::CloudFormation::Init` を定義し、UserData 内で `cfn-init` を呼び出してアプリをインストールするが `cfn-signal` は実行しない
Metadata セクションに AWS::CloudFormation::Init を定義し cfn-signal を実行しないことは cfn-init は設定ファイルやパッケージのインストールに使えますが、cfn-signal がなければ CloudFormation はアプリ起動完了を待機しません。
B
EC2 リソースに `CreationPolicy` の `ResourceSignal` プロパティを追加し、UserData スクリプト末尾で `cfn-signal -e $?` を実行してシグナルを CloudFormation に送信する
✓ 正解
EC2 リソースに CreationPolicy の ResourceSignal を設定すると、CloudFormation はリソースを CREATE_COMPLETE にする前に指定数のシグナルを待機します。UserData 末尾で `cfn-signal -e $?`($? は直前コマンドの終了コード)を実行することで、アプリ起動成功時(終了コード 0)のみ正常完了し、失敗時は自動 ROLLBACK されます。タイムアウト(Timeout プロパティ)も設定可能です。
C
`DependsOn` 属性を EC2 リソースに指定し、IAM ロールやセキュリティグループなど依存リソースの作成完了後に EC2 が起動するよう順序を制御する
DependsOn 属性を指定することは DependsOn はリソース間の作成順序を制御しますが、EC2 の API レベルの作成完了とアプリ起動完了は別物であり、ブートストラップ処理の完了待機はできません。
D
CloudWatch Logs にアプリケーションログを出力し、起動失敗パターンを検知するメトリクスフィルターとアラームを作成して Lambda でスタックをロールバックさせる
CloudWatch Logs にアプリケーションログを出力しメトリクスフィルターを作成することは CloudWatch + Lambda によるロールバックは独自実装が複雑で、スタック作成のアトミック性も保証されないため CloudFormation ネイティブの CreationPolicy を使うべきです。

解説

EC2 リソースに CreationPolicy の ResourceSignal を設定すると、CloudFormation はリソースを CREATE_COMPLETE にする前に指定数のシグナルを待機します。UserData 末尾で `cfn-signal -e $?`($? は直前コマンドの終了コード)を実行することで、アプリ起動成功時(終了コード 0)のみ正常完了し、失敗時は自動 ROLLBACK されます。タイムアウト(Timeout プロパティ)も設定可能です。 選択肢AのMetadata セクションに AWS::CloudFormation::Init を定義し cfn-signal を実行しないことは cfn-init は設定ファイルやパッケージのインストールに使えますが、cfn-signal がなければ CloudFormation はアプリ起動完了を待機しません。 選択肢CDependsOn 属性を指定することは DependsOn はリソース間の作成順序を制御しますが、EC2 の API レベルの作成完了とアプリ起動完了は別物であり、ブートストラップ処理の完了待機はできません。 選択肢DCloudWatch Logs にアプリケーションログを出力しメトリクスフィルターを作成することは CloudWatch + Lambda によるロールバックは独自実装が複雑で、スタック作成のアトミック性も保証されないため CloudFormation ネイティブの CreationPolicy を使うべきです。

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

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

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