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

1 分钟阅读
0

我想在 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 交换。

AWS 官方
AWS 官方已更新 3 个月前