AWS Elastic Beanstalk 環境で発生した「Environment is in an invalid state for this operation.Must be ready」(このオペレーションでは、環境は無効な状態です。準備ができている必要があります) というエラーをトラブルシューティングしたいと考えています。
簡単な説明
このエラーが表示されたら、その環境で進行中のオペレーションがないことを確認してください。オペレーションが進行中の場合は、要件に応じて、更新が完了するまで待つか、進行中の更新をキャンセルする必要があります。環境の準備が再び整ったら、更新を最初からやり直すことができます。環境内で進行中のオペレーションがないにもかかわらず、引き続きエラーが表示される場合は、環境の状態が [Unrecoverable] (回復不能) である可能性があります。この状態では、環境内でオペレーションをさらに実行することはできません。環境を [Available] (使用可能) の状態に戻すためにさらにサポートが必要な場合は、AWS サポートまでお問い合わせください。ただし、AWS サポートにお問い合わせいただく前に、お客様側で確認できる事項があります。
解決方法
Elastic Beanstalk は、環境に関連付けられているリソースを管理するために、バックエンドで AWS CloudFormation スタックを作成します。このスタックは、awseb-(env-ID)-stack という名前で CloudFormation コンソールで確認できます。
Elastic Beanstalk 環境の状態が [Unrecoverable] (回復不能) になると、CloudFormation スタックは [*_FAILED] ステータスを示します。AWS サポートチームが環境を [Available] (使用可能) に変更する前に、スタックは [*_COMPLETE] ステータスを示している必要があります。
CloudFormation スタックの [*_FAILED] ステータスを修正するには、スタックのステータスに従って次のステップを実行します。
[UPDATE_ROLLBACK_FAILED] ステータス
1. CloudFormation コンソールに移動します。その後、各スタックイベントから、ロールバック中に更新に失敗したリソースを特定します。
2. CloudFormation コンソールから [Continue Update Rollback] (更新のロールバックを続行) オプションを選択して、スタックを [UPDATE_ROLLBACK_COMPLETE] ステータスにします。
3. [Continue update rollback] (更新ロールバックを続ける) ダイアログボックスで、[Advanced troubleshooting] (高度なトラブルシューティング) を展開します。[Resources to skip - optional] (スキップするリソース - オプション) セクションで、更新に失敗したリソースを選択します。
4. [Continue update rollback] (更新ロールバックを続ける) を選択します。これで、スタックは [UPDATE_ROLLBACK_COMPLETE] ステータスを示すようになります。
5. AWS サポートチームに問い合わせて、環境を [Available] (使用可能) 状態に変更します。
6. 環境のステータスが [Available] (使用可能) になると、環境でさらなる更新を実行できます。
[DELETE_FAILED] ステータス
1. CloudFormation コンソールに移動します。その後、各スタックイベントから、削除に失敗したリソースを特定します。
2. 削除に失敗したリソースを手動で削除します。例えば、削除に失敗したリソースがセキュリティグループである場合は、Amazon Elastic Compute Cloud (Amazon EC2) コンソールから削除します。
3. CloudFormation コンソールから CloudFormation スタックを削除します。これで、スタックは [DELETE_COMPLETE] ステータスを示すようになります。
4. Elastic Beanstalk サポートチームに問い合わせて、環境を [Available] (使用可能) 状態に変更します。
5. 環境の状態が [Available] (使用可能) になると、環境を再構築または終了できます。
[CREATE_FAILED] ステータス
スタックがこのステータスである場合は、新しい Elastic Beanstalk 環境を作成してから、現在の環境を終了するのがベストプラクティスです。これは、スタックの状態がロールバックを実行できるほど安定していないためです。現在の環境でさらなる更新を実行しないことがベストプラクティスです。
現在の環境を終了する前に、次を試してください。
- 新しい環境でも同様の設定が必要な場合は、保存した設定を活用します。
- ブルー/グリーンデプロイを実行し、新しい環境が正常に動作している場合には、2 つの環境の URL 間で CNAME スワップを実行します。