プラットフォームフックを使用して AWS Elastic Beanstalk 環境をカスタマイズし、カスタムスクリプトやその他の実行ファイルを作成したいと考えています。環境内で実行されている Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにこれらをデプロイしたいと考えています。
簡単な説明
プラットフォームフックを使用して Elastic Beanstalk 環境の機能を拡張し、カスタムスクリプトや実行ファイルを実行できます。Elastic Beanstalk は、さまざまなインスタンスプロビジョニングフェーズでこのようなフックを実行することもできます。
注: プラットフォームフックは Amazon Linux AMI プラットフォームバージョン (Amazon Linux 2 より前) ではサポートされていません。
プラットフォームフックには次の 2 種類があります。
- アプリケーションデプロイプラットフォームフックは、デプロイ用の新しいソースバンドルを提供する際、アプリケーションのデプロイ中に実行されます。また、すべての環境インスタンスの終了と再作成を必要とする設定変更を行った場合にも実行されます。
- 設定デプロイプラットフォームフックは、環境インスタンスを再作成せずに更新する設定変更を行う際、設定デプロイ中に実行されます。
解決方法
.platform ディレクトリをセットアップする
1. アプリケーションバンドルのルートに、アプリケーションデプロイプラットフォームフックと設定デプロイプラットフォームフック用にそれぞれ「.platform/hooks」 または「.platform/confighooks」という名前の隠しディレクトリを作成します。
2. 実行時のインスタンスのプロビジョニング段階に応じて、フックファイルを次のサブディレクトリのいずれかに配置する必要があります。
- 「prebuild」
- 「predeploy」
- 「postdeploy」
ユースケースに必要なサブディレクトリを特定するには、「Elastic Beanstalk Linux プラットフォームの拡張」を参照してください。
3. アプリケーションソースバンドルは、必ず次のバンドルのようになります。
~/workspace/my-application/
|-- .platform
|--hooks
|--prebuild
|-- custom-prebuild-script.sh
|--predeploy
|-- custom-predeploy-script.sh
|--postdeploy
|-- custom-postdeploy-script.sh
|-- .ebextensions
|-- index.php
`-- styles.css
フックファイルを指定する
フックファイルを作成するときは、次の点に注意してください。
- フックファイルは、バイナリファイルやスクリプトファイルであり、「#!」行で始まり、「#!/bin/bash」のようなインタープリターパスを含んでいます。「custom-postdeploy-script.sh などのスクリプトファイル内の内容の例については、次のファイルを参照してください。
#!/bin/bash
sudo su
cd /var/app/current
echo "Hello from AWS hook" >> 'test.txt'
- ローカルマシンで「chmod +x」を使用して、フックファイルに実行権限を設定します。または、「.ebextensions」を使用して権限を与えることもできます。以下のサンプルファイルをご覧ください。
container_commands:
01_chmod1:
command: "chmod +x .platform/hooks/postdeploy/custom-postdeploy-script.sh"
詳細については、「.ebextensions を使用して Elastic Beanstalk 環境をカスタマイズする方法を教えてください」を参照してください。
プラットフォームフックをアプリケーションに適用します
1. 前述のプラットフォームフックと設定ファイルを含むアプリケーションソースバンドルを作成します。
注: ファイルブラウザでは、.platform や .ebextensions など、ピリオドで始まるフォルダを非表示にできます。これらのフォルダを表示したままにするには、アプリケーションソースバンドルを作成するときに、アプリケーションバンドルのルートにこれらのフォルダを含めます。
2. 更新した Elastic Beanstalk アプリケーションをデプロイします。