Elastic Beanstalk でデプロイされる Python アプリケーションの設定として、「アプリケーションのソースコードが展開された後、Webサーバーが起動する前に」データベースマイグレーションスクリプトを実行する必要があります。.ebextensions を使用する場合、どの設定キーを使うべきですか?
container_commands は .ebextensions の設定キーで、アプリケーションソースの展開後・Webサーバー起動前に実行されます。DBマイグレーションなど「コードが展開された後に実行したい処理」に最適で、leader_only: true を指定すると複数インスタンス環境でも1台のみで実行されマイグレーションの重複実行を防げます。 選択肢A(commands): commands はアプリケーションソースが展開される前に実行されるため、マイグレーションに必要なコードがまだ存在しない状態での実行となり、「展開後・起動前」という要件を満たせません。 選択肢B(container_commands): ソース展開後・Webサーバー起動前に実行されるため、DBマイグレーションを正しいタイミングで安全に実行できます。leader_only: true で複数インスタンス環境での重複実行も防止できます。 選択肢C(option_settings): option_settings はElastic Beanstalkの設定オプション(環境変数・リスナーポートなど)を定義するセクションであり、任意のスクリプトやコマンドを実行する機能はありません。 選択肢D(files + Procfile): files セクションはファイルをインスタンスに配置する機能です。Procfile はアプリケーションプロセスの起動コマンドを定義するもので、デプロイ前の任意スクリプトを指定タイミングで実行する制御には使用できません。