Q48 — AWS DOP-C02 第3章
第 48/100 問 | ← 第3章
ある企業は、Apache Webサーバーを搭載したJava-Apache TomcatアプリケーションのデプロイをAWS CodeDeployで自動化しています。開発チームは、開発環境向けにデプロイグループを作成し、アプリケーション内で機能テストを実行しました。完了後、チームはステージングおよび本番環境向けに追加のデプロイグループを作成する予定です。 現在、ログレベルはApache設定で構成されていますが、チームはデプロイ時にこの設定を動的に変更したいと考えており、デプロイグループごとに異なるログレベル設定を、それぞれのグループ用に異なるアプリケーションバージョンを用意することなく設定したいと考えています。 これらの要件を最小限の管理コストで満たし、各デプロイグループに異なるスクリプトバージョンを要求しない方法はどれですか?
- A. デプロイグループでAmazon EC2インスタンスにタグ付けします。その後、アプリケーションリビジョンに、インスタンスがどのデプロイグループに属するかを判断するためにメタデータサービスおよびEC2 APIを呼び出すスクリプトを配置します。この情報を使用してログレベル設定を構成します。appspec.ymlファイル内で、このスクリプトをAfterInstallライフサイクルフックの一部として参照します。
- B. CodeDeploy環境変数DEPLOYMENT_GROUP_NAMEを使用して、インスタンスがどのデプロイグループに属するかを識別するスクリプトを作成します。この情報を使用してログレベル設定を構成します。appspec.ymlファイル内で、このスクリプトをBeforeInstallライフサイクルフックの一部として参照します。 ✓
- C. 各環境向けにCodeDeployカスタム環境変数を作成します。その後、アプリケーションリビジョンに、この環境変数をチェックしてインスタンスがどのデプロイグループに属するかを判断するスクリプトを配置します。この情報を使用してログレベル設定を構成します。appspec.ymlファイル内で、このスクリプトをValidateServiceライフサイクルフックの一部として参照します。
- D. CodeDeploy環境変数DEPLOYMENT_GROUP_IDを使用して、インスタンスがどのデプロイグループに属するかを識別するスクリプトを作成し、ログレベル設定を構成します。appspec.ymlファイル内で、このスクリプトをインストールライフサイクルフックの一部として参照します。
正解: B. CodeDeploy環境変数DEPLOYMENT_GROUP_NAMEを使用して、インスタンスがどのデプロイグループに属するかを識別するスクリプトを作成します。この情報を使用してログレベル設定を構成します。appspec.ymlファイル内で、このスクリプトをBeforeInstallライフサイクルフックの一部として参照します。
解説
AWS CodeDeployは、DEPLOYMENT_GROUP_NAMEなどの組み込み環境変数を提供しており、スクリプトから直接取得できます。AWS公式ドキュメントによると、CodeDeployはデプロイ中にこのような変数を自動的に注入します。選択肢BのスクリプトはBeforeInstallフェーズで実行され、環境変数を利用してログレベルを動的に設定し、異なるスクリプトバージョンやカスタム環境変数の必要性を回避します。選択肢AはEC2インスタンスメタデータおよびAPI呼び出しに依存し、複雑さと権限管理を増加させます。選択肢Cはカスタム環境変数を導入し、保守コストを増加させます。選択肢DのDEPLOYMENT_GROUP_IDは公式の標準環境変数ではありません。正解のBは、最小限の管理コストで、ネイティブにサポートされる環境変数を活用する要件を満たします。