为什么我的 Elastic Beanstalk 环境处于无效状态?

1 分钟阅读
0

我想解决在 AWS Elastic Beanstalk 环境下出现的“环境目前处于无效状态,无法执行此操作。必须做好准备”错误。

简短描述

收到此错误消息时,请确保环境中没有正在进行的操作。如果有正在进行的操作,则必须根据需要等待更新完成,或者取消正在进行的更新。当环境再次准备就绪时,可以重新开始更新。如果环境中没有正在进行的操作,但仍然收到此错误消息,则您的环境可能处于不可恢复状态。此状态会阻止在环境中执行后续操作。如果需要进一步的帮助,将环境恢复到可用状态,请联系 AWS Support。但是,在联系 AWS Support 之前,您可以先进行一些检查。

解决方法

Elastic Beanstalk 在后端创建一个 AWS CloudFormation 堆栈来管理与环境关联的资源。可以在 CloudFormation 控制台中查看这个名为 awseb-(env-ID)-stack 的堆栈。

当 Elastic Beanstalk 环境进入不可恢复状态时,CloudFormation 堆栈会显示 *_FAILED 状态。在 AWS Support 团队将环境更改为可用之前,堆栈必须显示 *_COMPLETE 状态。

要更正 CloudFormation 堆栈的 *_FAILED 状态,请根据堆栈状态执行以下步骤:

“UPDATE_ROLLBACK_FAILED”状态

1.    导航到 CloudFormation 控制台。然后,从相应的堆栈事件中找出在回滚期间更新失败的资源。

2.    从 CloudFormation 控制台中选择继续更新回滚选项,将堆栈变为 UPDATE_ROLLBACK_COMPLETE 状态。

3.    在继续更新回滚对话框中,展开高级问题排查。在要跳过的资源 - 可选部分,选择更新失败的资源。

4.    选择继续更新回滚。现在,堆栈状态显示为 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 交换。
AWS 官方
AWS 官方已更新 1 年前