我想对由于 AWS CloudFormation 堆栈处于非运行状态而导致的 AWS Elastic Beanstalk 中的环境操作失败进行故障排除。
简短描述
Elastic Beanstalk 创建一个 CloudFormation 堆栈来管理与 Elastic Beanstalk 环境关联的资源。您可以在 CloudFormation 控制台中查看这个名为 awseb-envID-stack 的堆栈。
当 Elastic Beanstalk 环境进入非运行状态时,CloudFormation 堆栈状态将显示为 FAILED,且您会收到以下错误消息:
“与环境 ENVIRONMENT-ID 关联的堆栈 STACK-ID 处于 STACK-STATUS 状态”。
解决方法
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
要使您的 Elastic Beanstalk 环境进入运行状态,请执行下表中与您的 CloudFormation 堆栈状态相关的操作:
| | |
---|
CloudFormation 堆栈状态 | CloudFormation 操作 | Elastic Beanstalk 操作 |
CREATE_FAILED | None | 运行重建环境或终止环境操作 |
UDPATE_ROLLBACK_FAILED | 使堆栈进入 UPDATE_ROLLBACK_COMPLETE 状态 | 重试该操作 |
DELETE_FAILED | 使堆栈进入 DELETE_COMPLETE 状态 | 重试该操作 |
UPDATE_ROLLBACK_COMPLETE | None | 重试该操作 |
UPDATE_COMPLETE | None | 如果堆栈先前的状态为 CREATE_FAILED,请运行重建或终止操作。否则,请重试该操作。 |
DELETE_COMPLETE | None | 重试该操作。 |
ROLLBACK_COMPLETE | None | 运行重建环境或终止环境操作。 |
如果 CloudFormation 堆栈的状态为 FAILED,请选择以下解决方法之一。
CREATE_FAILED 状态
当堆栈状态为 CREATE_FAILED 时,环境将无法恢复。即使堆栈状态更改为 UPDATE_COMPLETE,环境仍会出现问题。如果堆栈状态为 CREATE_FAILED,则必须创建一个新的 Elastic Beanstalk 环境。
选择以下选项之一来重新创建环境:
如果仍无法创建新环境,请完成以下步骤:
- 如果存在阻止创建新环境的问题,请解决堆栈失败的根本原因。
- 创建新环境。为此,请终止当前环境,然后再次执行 CreateEnvironment 操作。或者,通过控制台重建环境或运行 rebuild-environment 命令。
UPDATE_ROLLBACK_FAILED 状态
要使 Elastic Beanstalk 环境进入运行状态,请完成以下步骤:
- 打开 CloudFormation 控制台。
- 从相应的堆栈事件中找出在回滚期间更新失败的资源,然后解决失败问题。
- 使堆栈进入 UPDATE_ROLLBACK_COMPLETE 状态。为此,请在 CloudFormation 控制台中选择 Continue update rollback(继续更新回滚)选项。
- 在 Continue update rollback(继续更新回滚)对话框中,展开 Advanced troubleshooting(高级故障排除)。在 Resources to skip - optional(要跳过的资源 - 可选)部分,选择更新失败的资源。
- 选择 Continue update rollback(继续更新回滚)。现在,堆栈状态显示为 UPDATE_ROLLBACK_COMPLETE。
- 重试返回错误的操作。
DELETE_FAILED 状态
要使 Elastic Beanstalk 环境进入运行状态,请完成以下步骤:
- 打开 CloudFormation 控制台。
- 找出在相应的堆栈事件期间删除失败的资源。
- 手动删除资源。例如,如果资源是安全组,请从 Amazon Elastic Compute Cloud (Amazon EC2) 控制台中删除该安全组。
- 从 CloudFormation 控制台中删除 CloudFormation 堆栈。已删除的堆栈状态显示为 DELETE_COMPLETE。
- 重试终止环境或重建环境操作。
有关详细信息,请参阅如何在 AWSEBSecurityGroup 删除失败时,终止或重建 Elastic Beanstalk 环境?