カスタムプラットフォームフック - AWS Elastic Beanstalk

カスタムプラットフォームフック

Elastic Beanstalk は、カスタムプラットフォームで標準化されたディレクトリ構造をフックに使用します。これらはライフサイクルイベント中、および管理オペレーション (環境のインスタンスが起動された、ユーザーがデプロイを開始した、またはユーザーがアプリケーションサーバーの再起動機能を使用した) に応じて実行されるスクリプトです。

フックをトリガーするスクリプトを /opt/elasticbeanstalk/hooks/ フォルダのサブフォルダの 1 つに配置します。

警告

マネージド型プラットフォームでのカスタムプラットフォームフックの使用はサポートされていません。 カスタムプラットフォームフックは、カスタムプラットフォーム用に設計されています。Elastic Beanstalk マネージド型プラットフォームでは、プラットフォームによって、動作が異なったり、問題が発生したりすることがあります。Amazon Linux AMI プラットフォーム (上記 Amazon Linux 2) は、場合によっては便利なため、注意した上で使用してください。

カスタムプラットフォームフックは、Amazon Linux AMI プラットフォームに存在するレガシー機能です。Amazon Linux 2 プラットフォームでは、/opt/elasticbeanstalk/hooks/ フォルダのカスタムプラットフォームフックはサポートが完全に終了しました。Elastic Beanstalk はこれらを読み取りも実行もしません。Amazon Linux 2 プラットフォームは、特に Elastic Beanstalk マネージド型プラットフォームを拡張するために設計された新しい種類のプラットフォームフックをサポートします。カスタムスクリプトとプログラムをアプリケーションソースバンドルのフックに直接追加できます。Elastic Beanstalk はインスタンスプロビジョニングのさまざまな段階でこれらを実行します。詳細については、Elastic Beanstalk Linux プラットフォームの拡張 の「プラットフォームフック」セクションを参照してください。

フックは次のフォルダに整理されます。

  • appdeploy — アプリケーションのデプロイ中に実行されるスクリプト。Elastic Beanstalk は、新しいインスタンスが起動されたときと、クライアントが新しいバージョンのデプロイを開始したときに、アプリケーションのデプロイを実行します。

  • configdeploy — クライアントがオンインスタンスのソフトウェア設定に影響する設定の更新 (たとえば、環境プロパティの設定や、Amazon S3 へのログローテーションの有効化など) を行ったときに実行されるスクリプト。

  • restartappserver — クライアントがアプリサーバーの再起動オペレーションを行ったときに実行されるスクリプト。

  • preinit — インスタンスのブートストラップ中に実行されるスクリプト。

  • postinit — インスタンスのブートストラップの後で実行されるスクリプト。

appdeployconfigdeploy、および restartappserver フォルダには preenact、および post サブフォルダがあります。オペレーションの各段階で、pre フォルダのすべてのスクリプトがアルファベット順に実行され、次に enact フォルダ、post フォルダの順に実行されます。

インスタンスを起動すると、Elastic Beanstalk は preinitappdeploypostinit の順序で実行します。実行中のインスタンスへのそれ以降のデプロイで、Elastic Beanstalk は appdeploy フックを実行します。ユーザーがインスタンスソフトウェアの設定を更新すると、configdeploy フックが実行されます。restartappserver フックは、ユーザーがアプリケーションサーバーの再起動を開始するときのみ実行されます。

スクリプトでエラーが発生した場合、ゼロ以外のステータスで終了し、stderr に書き込んでオペレーションを失敗させることができます。stderr に書き込むメッセージは、オペレーションが失敗した場合に出力されるイベントに表示されます。Elastic Beanstalk は、この情報をログファイル /var/log/eb-activity.log に取り込むこともできます。オペレーションを失敗させない場合は 0 を返します。stderr または stdout に書き込むメッセージはデプロイログに表示されますが、オペレーションが失敗しない限り、イベントストリームには表示されません。