無限ノック › DVA 練習問題一覧 › 問題
DVAトラブルシューティングと最適化

開発者がAWS CodeDeployを使用してEC2インスタンスにアプリケーションをデプロイしましたが、`AfterInstall`ライフサイクルイベントでデプロイが失敗し、ステータスが`Failed`と表示されています。根本原因を迅速に特定するための最も適切な手順はどれですか?

A
CodeDeployコンソールで失敗インスタンスのAfterInstallイベントログを確認し、EC2上のCodeDeployエージェントログを調査してフックスクリプトの詳細エラーを特定する
✓ 正解
CodeDeployコンソールでは各インスタンスのライフサイクルイベントごとの実行ログ・終了コード・エラーメッセージを直接確認できます。EC2の/var/log/aws/codedeploy-agent/にはエージェントがフックスクリプトを実行した詳細が記録されており、AfterInstallフックの失敗原因を具体的に特定できます。
B
AWS CloudTrailでCodeDeployのAPI呼び出し履歴を確認し、AfterInstallイベントに関連する失敗した操作とそのエラーコードを分析して原因を把握する
CloudTrailはCreateDeployment等のAPI呼び出しを記録しますが、AfterInstallフックとして実行されるシェルスクリプトの内容・終了コード・エラーメッセージは記録されないため、フックレベルの失敗原因の特定には不十分です。
C
AWS X-RayをEC2インスタンスのデプロイスクリプトに組み込み、AfterInstallフックの処理時間と依存サービスへの接続状況を可視化して調査する
X-RayはHTTPリクエストのトレーシングを行うアプリケーション観測ツールです。CodeDeployのデプロイフックはシェルスクリプトとして実行されるため、X-Rayトレースで捕捉することはできません。
D
デプロイ設定を`CodeDeployDefault.OneAtATime`に変更して段階的に再デプロイを実施し、問題が再現するインスタンスを絞り込む
OneAtATime設定での再デプロイは原因の再現調査になりますが、コンソールとエージェントログには失敗時のエラー情報がすでに記録されており、再デプロイを実施するよりも既存ログを確認する方が迅速で安全です。

解説

AWS CodeDeployのデプロイ失敗を調査する際、最も直接的な情報源はCodeDeployコンソールとCodeDeployエージェントログです。コンソールではデプロイメントIDから各インスタンスのライフサイクルイベントごとのステータス・実行ログ(stdout/stderr)・終了コードを確認できます。EC2インスタンス上の`/var/log/aws/codedeploy-agent/codedeploy-agent.log`には、エージェントがフックスクリプトを実行した詳細(実行コマンド・エラーメッセージ・終了コード)が記録されており、AfterInstallフックで実行されたスクリプトの失敗原因を直接特定できます。 選択肢BのAWS CloudTrailはCodeDeployのAPI呼び出し(CreateDeployment等)を記録しますが、AfterInstallフック内のシェルスクリプトの実行結果(終了コードやエラーメッセージ)は記録されません。 選択肢CのAWS X-RayはHTTPリクエストのトレーシングを行うツールです。CodeDeployのデプロイフックはシェルスクリプトとして実行されるため、X-Rayトレースで捕捉することはできません。 選択肢DのOneAtATime設定変更での再デプロイは原因再現の調査になり得ますが、コンソールとエージェントログにすでにエラー情報が記録されており、再デプロイを実施するより既存ログを確認する方が迅速かつ安全です。

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

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

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