Posted at

AWS Elastic Beanstalkが正常に稼働しているのにデプロイに失敗するケースの対処

社内向けに機械学習のサンプルアプリケーション運用しています。そのアプリケーションが何らかの原因で以下のエラーを出してデプロイに失敗するようになってしまいました。この対処をしばらく行っていました。


アプリケーションバージョンをデプロイできません: Environment named ***** is in an invalid state for this operation. Must be Ready.


最初に結論から書くと以下の通りです。


  • 何らかの原因でCloudFormationのステータスが正常ではなくなった

  • 対処法は環境を再作成すること


AWSのサポートに問い合わせた内容

こちらのフォーラムでも同様の対処法が載っています。ただ、きちんとした原因が分からないまま環境を作り直すのも気が引けたので、AWSのサポートに問い合わせました。

頂いたメッセージを一部引用します。


さらに調査を進めたところ、当該 Elastic Beanstalk 環境のリソースを管理している CloudFormation スタック [3] が CREATE_FAILED ステータスとなっておりました。

Elastic Beanstalk ステータスは正常であっても、対応する CloudFormation 側のステータスが正常ではない場合、

Environment named XXX is in an invalid state for this operation. Must be Ready. のようなエラーが表示されデプロイが失敗いたします。このステータスの差異が、お客様のデプロイ失敗の原因ではないかと考えております。

エラーメッセージから原因がわかり辛い状況となっており、誠に申し訳ございません。

より理解しやすいメッセージを表示して欲しいというリクエストは他のお客様からも頂いておりますが、当方より具体的な改修の目処をお伝えすることが難しい点、何卒ご理解いただけますと幸いです。


実際に、CloudFormationスタックを確認するとエラーが発生していました。解消方法については次のように説明を頂きました。


■ 解消方法について

この状態を解消するためには、お手数をお掛けいたしますが、新規 Elastic Beanstalk 環境を再作成して頂く必要がございます。

環境の再作成が失敗する場合は、今回デプロイを試みている最新アプリケーションバージョンではなく稼働実績のある旧バージョンで環境を作成して頂くこともご検討頂ければと存じます。


そもそもこの状態になった原因は分からないのですが、誤ってアプリケーションが正常に動作しないネットワーク設定のままデプロイをしようしてしまったことがあり、その際にCloudFormationのステータスが CREATE_FAILED になってしまったんじゃないかと考えています。

この記事が、同様のエラーが出てしまった方の助けになると嬉しいです。