ある企業がAWS CodeDeployを使ってEC2インスタンスにアプリケーションをデプロイしている。デプロイ時に既存プロセスを停止してからファイルを展開し、展開後に新プロセスを起動するという順序を保証したい。appspec.ymlのフックを使ってこの要件を実現するために正しいフックの組み合わせはどれか。
- A. ApplicationStop フックで既存プロセスを停止し、AfterInstall フックでファイル権限の設定を行い、ApplicationStart フックで新プロセスを起動する
- B. ValidateService フックで既存プロセスを停止し、AfterInstall フックでファイルを展開し、ApplicationStart フックで新プロセスを起動する
- C. BeforeInstall フックで既存プロセスを停止し、AfterInstall フックで新プロセスを起動する
- D. BeforeBlockTraffic フックで既存プロセスを停止し、AfterAllowTraffic フックで新プロセスを起動する
解答と解説を見る
正解: A
CodeDeployのEC2/オンプレミスデプロイのライフサイクルフックは実行順に、ApplicationStop → BeforeInstall → AfterInstall → ApplicationStart → ValidateService となる。ApplicationStopは現在動作中のアプリケーションプロセスを停止するフックであり、デプロイの最初に実行される。AfterInstallはファイルが展開された直後に実行され、設定ファイルのコピーやファイル権限設定に使われる。ApplicationStartは新バージョンのプロセスを起動するためのフックである。CのBeforeInstallはファイル展開前に実行されるが、プロセス停止のタイミングとしてはApplicationStopの方が適切で明示的である。BのValidateServiceはデプロイ完了後の最終検証フックであり、プロセス停止には使わない。DのBeforeBlockTraffic/AfterAllowTrafficはBlue/Greenデプロイ専用のフックであり、インプレースデプロイには存在しない。