無限ノック › DVA 練習問題一覧 › 問題
DVAデプロイ

開発チームがAWS Elastic Beanstalkを使用してPHPウェブアプリケーションを運用しています。デプロイのたびに各EC2インスタンスへカスタムRPMパッケージをインストールし、アプリケーション固有の設定ファイルを/etc/myapp/config.iniに配置する必要があります。アプリケーションコードの変更を最小限に抑え、デプロイのたびに自動的に設定が適用される最も適切な方法はどれですか?

A
EC2インスタンスにSSH接続して手動でパッケージをインストールし設定ファイルを配置した後、AMIを作成してElastic Beanstalkのカスタムプラットフォームとして登録する
AMIカスタマイズとカスタムプラットフォームの構築はパッケージインストール程度の要件に対して過剰。AMI再作成・管理コストが高く、.ebextensionsで容易に実現できる要件に不適切。
B
ソースバンドルの.ebextensionsディレクトリに.configファイルを作成し、packagesセクションでRPMパッケージを、filesセクションで設定ファイルの内容とパスを指定してバンドルに含める
✓ 正解
Elastic Beanstalkネイティブのカスタマイズ機能。ソースバンドルに含まれるためデプロイのたびに自動実行され、packagesでパッケージ、filesで設定ファイルを宣言的に管理できる。コードと一緒にバージョン管理できる点も優れている。
C
AWS Systems Manager State Managerのアソシエーションを作成し、RPMパッケージのインストールと設定ファイル配置を定期実行するドキュメントをElastic Beanstalkインスタンスに適用する
Systems Manager State Managerは汎用の設定管理ツールであり、Elastic BeanstalkのデプロイライフサイクルにネイティブUI統合されていない。設定とアプリケーションコードのバージョンが分離し、管理の複雑さが増す。
D
Elastic Beanstalkの環境設定でEC2インスタンスのユーザーデータにインストールスクリプトを記述し、オートスケーリングで新しいインスタンスが起動するたびに実行されるよう設定する
ユーザーデータはEC2インスタンス初回起動時のみ実行されるため、既存インスタンスへの再デプロイ時には適用されない。オートスケーリングで起動した新インスタンスには有効だが、デプロイのたびの確実な適用が保証できない。

解説

.ebextensionsはElastic Beanstalkの標準的なカスタマイズメカニズムです。アプリケーションのソースバンドル内に `.ebextensions` ディレクトリを作成し、YAML形式の `.config` ファイルを配置することで、デプロイのたびに自動実行されます。`packages` セクションでrpm/yum等のパッケージを宣言的に指定でき、`files` セクションではEC2インスタンスの任意のパスにファイルを配置できます。ソースバンドルと一体で管理されるためバージョン管理との親和性も高く、コードと設定を一緒にデプロイできます。 選択肢AのAMIカスタマイズはパッケージインストール程度の要件に対して過剰な実装です。AMI再作成とカスタムプラットフォームの管理コストが発生し、.ebextensionsで容易に実現できます。 選択肢CのSystems Manager State Managerは汎用の設定管理ツールであり、Elastic BeanstalkのデプロイフローにネイティブUI統合されていないため、コードと設定のバージョン管理が分離してしまいます。 選択肢DのユーザーデータはEC2インスタンスの初回起動時のみ実行されます。オートスケーリングで新インスタンス起動時には適用されますが、既存インスタンスへの再デプロイでは実行されず確実性に欠けます。

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

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

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