プラットフォームフックを使用してカスタムスクリプトやその他の実行ファイルを作成し、AWS Elastic Beanstalk 環境をカスタマイズしたいと考えています。これらのファイルを、環境内で稼働する Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにデプロイしたいです。
解決策
注: プラットフォームフックは、Amazon Linux 2 より前の Amazon マシンイメージ (AMI) プラットフォームバージョンではサポートされていません。Elastic Beanstalk は、Amazon AL2023 と Amazon Linux 2 用のすべてのプラットフォームフックスクリプトに実行アクセス許可を自動的に付与します。
.platform ディレクトリのセットアップ
次の手順を実行します。
- アプリケーションバンドルのルートに、アプリケーションデプロイプラットフォームフックの場合は .platform/hooks、構成デプロイプラットフォームフックの場合は .platform/confighooks という名前の隠しディレクトリを作成します。
- プラットフォームフックファイルを実行するインスタンスのプロビジョニング段階に基づいて、フックファイルをサブディレクトリ prebuild、predeploy、postdeploy のいずれかに配置する必要があります。
各サブディレクトリの詳細については、「アプリケーションデプロイプラットフォームフック」を参照してください。
- アプリケーションソースバンドルは、次のバンドルのようにする必要があります。
~/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'
詳細については、「.ebextensions を使用して Elastic Beanstalk 環境をカスタマイズする方法を教えてください」を参照してください。
プラットフォームフックをアプリケーションに適用する
次の手順を実行します。
- 上記のプラットフォームフックと設定ファイルを含むアプリケーションソースバンドルを作成します。
注: ファイルブラウザでは、.platform や .ebextensions などの、ピリオドで始まるフォルダが非表示になる場合があります。そのようなフォルダを表示させるには、アプリケーションソースバンドルの作成時に、アプリケーションバンドルのルートにフォルダを含めます。
- 更新した Elastic Beanstalk アプリケーションをデプロイします。