DVAデプロイ
開発者がElastic Beanstalkを使用してPython Webアプリケーションをデプロイしています。このアプリケーションのデプロイには以下のカスタマイズが必要です。
・nginxの設定を変更してリクエストボディサイズの上限を引き上げる
・1時間ごとに一時ファイルを削除するcronジョブを登録する
・画像処理に必要なOSパッケージ「libjpeg」をインストールする
EC2インスタンスへの手動アクセスなしに、アプリケーションバンドルだけでこれらを自動化できる最も適切な方法はどれですか?
A.ebextensions/ に .config ファイルを作成し、packages でOSパッケージ・files でnginx設定ファイル・commands でcronジョブをそれぞれ定義する
✓ 正解
`.ebextensions/`にYAML形式の`.config`ファイルを配置するElastic Beanstalkの標準カスタマイズ機能。`packages`でlibjpegをインストールし、`files`でnginx設定ファイルを上書きし、`commands`でcronジョブを登録できるため、3要件すべてをバンドル内の設定だけで自動化できる。
BカスタムAMIに必要なパッケージと設定をすべて組み込み、Elastic Beanstalkのカスタムプラットフォームとして登録して利用する
カスタムプラットフォームはデフォルトプラットフォームに存在しない言語ランタイムを持ち込む場合に使う高度な機能。OSパッケージ追加やnginx設定変更程度のカスタマイズには不釣り合いであり、プラットフォームのビルドと継続的な維持に大きなコストがかかる。
Cアプリケーションルートに setup.py を配置し、Elastic Beanstalkがデプロイ時に自動実行するスクリプトでnginx設定とcronジョブを適用する
setup.pyはPythonパッケージのビルドと配布を定義するファイルであり、Elastic Beanstalkがデプロイ時にフックとして自動実行する機構は存在しない。nginxの設定変更やcronジョブの登録には対応できない。
DProcfile にnginxの設定変更コマンドとcronジョブ登録コマンドを記述し、Elastic Beanstalkのデプロイプロセスで自動的に実行させる
ProcfileはElastic BeanstalkやHerokuでアプリケーションプロセスの起動コマンドを定義するファイル。OSレベルのnginx設定変更やcronジョブ登録はプロセス管理の範囲外であり、Procfileでは実現できない。
解説
Elastic Beanstalkの`.ebextensions/`は、アプリケーションバンドル内にYAML形式の`.config`ファイルを配置することでEC2インスタンスをカスタマイズできる公式の仕組みです。主なセクションは以下のとおりです。
・`packages`: yum/aptなどのOSパッケージのインストール
・`files`: 任意のファイルをEC2上の指定パスに配置(nginx設定の上書きに利用)
・`commands`: 任意のシェルコマンドを実行(cronジョブの登録など)
・`container_commands`: アプリケーションファイル展開後に実行するコマンド
これらを組み合わせることで、EC2への手動アクセスなしに本問の3要件をすべてバンドル内の設定だけで自動化できます。
選択肢Bのカスタムプラットフォームは、デフォルトプラットフォームに存在しない言語ランタイムを持ち込む場合に使う高度な機能であり、OSパッケージ追加やnginx設定変更のような軽微なカスタマイズには過剰です。
選択肢Cのsetup.pyは、Pythonパッケージのビルドと配布を定義するファイルであり、Elastic Beanstalkがデプロイ時にフックとして自動実行する機構は存在しません。
選択肢DのProcfileは、アプリケーションプロセスの起動コマンドを定義するためのファイルであり、OSレベルのnginx設定変更やcronジョブ登録には使用できません。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →