AWSウェブサイトを使用したアプリケーションの新しい環境のElastic Beanstalkデプロイメントが警告する
Create environment operation is complete, but with command timeouts. Try increasing the timeout period
そして最終的には、URLに接続しようとする緑が環境を示すだけですが、
Service Temporarily Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
以前のバージョンのアプリケーションは問題なく動作しますが、ebextensionsではs3から大きなファイルをコピーして解凍する必要があるため、かなり時間がかかります。以前のバージョンのアプリケーションは3 GBのファイルをコピーするだけで済みますが、新しいバージョンは6 GBのファイルをコピーする必要があります。他のエラーは表示されないため、タイムアウトの原因でTomcatの起動が妨げられていると思います。
しかし、どうすればタイムアウトを増やすことができますか?
これは、オプション設定を使用して行うことができます。オプション設定は、ebextensionsを使用して指定できます。
アプリソースの.ebextensions
というディレクトリにファイルを作成します。ファイルが.ebextensions/01-increase-timeout.config
だとしましょう。
ファイルの内容は次のようになります。
option_settings:
- namespace: aws:elasticbeanstalk:command
option_name: Timeout
value: 1000
このファイルはYAML形式であることに注意してください。その後、このバージョンのソースコードで環境を更新できます。
このオプション設定のドキュメントから:
タイムアウト:インスタンスがコマンドの実行を完了するまで待機する秒数。
たとえば、構成されたタイムアウト期間に達してもソースコードのデプロイタスクがまだ実行されている場合、AWS Elastic Beanstalkは次のエラーを表示します:「一部のインスタンスはコマンドに応答しませんでした。応答はから受信されませんでした。」 AWS Elastic Beanstalkサービスがソースコードがインスタンスに正常にデプロイされるまで待機する時間を増やすことができます。
Ebextensions here についての詳細を読むことができます。オプション設定に関するドキュメントが利用可能です ここ 。
使用:--timeout
例:eb create -db --timeout 20
これにより、20分のタイムアウト制限が得られます。
公式ドキュメント によると、--timeout
オプションをeb create
呼び出し。
--timeout minutes
Set number of minutes before the command times out.
私は自分の環境への展開時にそれを行ったばかりで、この方法でもうまく機能します。
eb deploy production-env --timeout 30
..そして、それは私に30分を与えます。