如何排查在停止处于“stop_failed”状态的 AWS OpsWorks Stacks 实例时出现的“内部错误”消息?

上次更新日期:2021 年 8 月 3 日

尝试停止处于“stop_failed”状态的 AWS OpsWorks Stacks 实例时,我收到了“内部错误”消息。如何排查此错误?

简短描述

出于以下两点原因,当您尝试停止处于 stop_failed 状态的实例时,OpsWorks Stacks 可能会返回内部错误消息:

要解决此错误,请先验证堆栈的 IAM 服务角色配置正确。如果问题与权限无关,请运行 AWS 命令行界面 (AWS CLI) stop-instance 命令来停止实例。该命令必须包含 --force 参数和需要停止实例的 OpsWorks 实例 ID。

解决方法

注意:如果您在运行 AWS CLI 命令时遇到错误,请确保您运行的是最新版本的 AWS CLI

验证堆栈的 IAM 服务角色配置正确

按照允许 AWS OpsWorks Stacks 代表您行动中的说明进行操作。

如果问题与权限无关,请运行 AWS CLI stop-instance 命令来停止实例。

通过运行 AWS CLI stop-instance 命令来停止实例

注意:您还可以使用 AWS CloudShell 运行以下命令。

1.    运行以下 describe-instances 命令,返回堆栈中处于 stopped_failed 状态的实例的实例 ID:

重要提示:your-stack-id 替换为您的堆栈 ID。将 your-OpsWorks-Stack-Endpoint-region 替换为堆栈所在的 AWS OpsWorks Stacks 终端节点区域

$ aws opsworks describe-instances --stack-id your-stack-id --region your-OpsWorks-Stack-Endpoint-region --query 'Instances[?Status==`stop_failed`].{Id:InstanceId}'

2.    确定要停止的实例的实例 ID。您需要这些实例 ID 才能运行 stop-instance 命令。

3.    (停止单个实例) 运行以下 stop-instance 命令:

重要提示:your-opsworks-instance-id 替换为正在停止的实例 ID,并将 your-OpsWorks-Stack-Endpoint-region 替换为堆栈所在的 OpsWorks Stacks 终端节点区域。

$ aws opsworks stop-instance --instance-id your-opsworks-instance-id --force --region your-OpsWorks-Stack-Endpoint-region

–或者–

(停止多个实例) 使用自定义语法逻辑运行 stop-instance 命令,该命令会遍历您要停止的实例。

停止多个实例的示例 stop-instance 命令

重要提示:your-stack-id 替换为您的堆栈 ID。将 your-OpsWorks-Stack-Endpoint-region 替换为堆栈所在的 OpsWorks Stacks 终端节点区域。

$ for Id in $(aws opsworks describe-instances --stack-id your-stack-id --region your-OpsWorks-Stack-Endpoint-region --query 'Instances[?Status==`stop_failed`].{Id:InstanceId}' --output text) ; do aws opsworks stop-instance --instance-id $Id --force --region your-OpsWorks-Stack-Endpoint-region  ; done

这篇文章对您有帮助吗?


您是否需要账单或技术支持?