我想在 AWS Elastic Beanstalk 环境中排查错误“环境对于此操作处于无效状态,必须准备就绪”。
简短描述
当您收到此错误时,请确保环境中没有正在进行的操作。如果有正在进行的操作,则您必须等待更新完成或根据您的要求取消正在进行的更新。当环境再次准备就绪时,您可以重新开始更新。如果环境中没有正在进行的操作而您仍然收到该错误,则说明您的环境可能处于不可恢复状态。此状态会阻止您在环境中执行进一步的操作。如果您在将环境恢复到可用状态方面需要进一步帮助,请联系 AWS Support。但是,在联系 AWS Support 之前,您可以检查一些内容。
解决方法
Elastic Beanstalk 在后端创建 AWS CloudFormation 堆栈来管理与环境相关的资源。您可以使用名称 awseb-(env-ID)-stack 在 CloudFormation 控制台中检查此堆栈。
当 Elastic Beanstalk 环境进入不可恢复状态时,CloudFormation 堆栈会显示 *_FAILED 状态。在 AWS Support 团队可以将环境更改为可用之前,该堆栈必须显示 *_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 Support 团队,将环境更改为可用状态。
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 环境,然后终止当前的环境。这是因为堆栈的状态不够稳定,无法执行回滚。最佳做法是不对当前环境进行进一步的更新。
在终止当前环境之前,请尝试以下操作:
- 如果您希望新环境具有类似的配置,请利用已保存的配置。
- 执行蓝绿部署,当新环境正常运行时,在两个环境的 URL 之间执行 CNAME 交换。