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