如何删除 OpsWorks 堆栈中由于缺少 IAM 服务角色而无法删除的实例?

上次更新时间:2019 年 4 月 22 日

由于缺少 AWS Identity and Access Management (IAM) 服务角色,我无法删除 AWS OpsWorks 堆栈中的实例。或者,当我停止我的实例时收到以下错误:“OpsWorks 无法获取必要的凭据来代表您停止实例。请等待一分钟后重试。如果此错误仍然存在,请检查服务角色的权限。”

如何删除我的 OpsWorks 堆栈实例?

简短描述

如果删除了用于创建堆栈的 IAM 服务角色,您将无法删除 OpsWorks 堆栈中的实例。如果服务角色缺失,OpsWorks DeleteInstance API 调用将无法删除实例。为了使 DeleteInstance 工作,请手动创建一个新服务角色。然后,为新角色指定与缺少的服务角色完全相同的名称。

解决方法

确定您缺失的 IAM 服务角色

  1. 打开 OpsWorks 堆栈控制台
  2. 选择堆栈,然后选择堆栈设置
  3. 高级选项部分,选择您缺失的 IAM 服务角色。

使用与您缺失的服务角色完全相同的名称创建新角色

  1. 打开 IAM 控制台
  2. 选择角色,然后选择创建角色
  3. 对于 AWS 服务,选择 OpsWorks,然后选择下一步:权限
  4. 跳过附加权限策略和 IAM 标签的页面,然后选择下一步:检查
    注意:默认情况下,在角色创建流程的此阶段中添加 AWSOpsWorksRole 策略。您无需修改此策略。
  5. 对于角色名称,输入与您缺失的角色完全相同的名称。
  6. 选择创建角色

附加 AmazonEC2FullAccess 策略

  1. 打开 IAM 控制台,然后选择角色
  2. 角色名称列中,选择您之前创建的新服务角色。
  3. 选择附加策略
  4. 在搜索框中,输入 AmazonEC2FullAccess
  5. 选择 AmazonEC2FullAccess,然后选择附加策略

删除 OpsWorks 实例

  1. 打开 OpsWorks 堆栈控制台,然后选择您的堆栈。
  2. 在导航窗格中,选择实例
  3. 在您要停止的实例的操作列中,选择停止
  4. 当该实例的操作列中的实例状态变成已停止后,选择删除

重要提示:如果您在创建新服务角色并附加策略后立即删除 OpsWorks 实例,您可能会收到权限错误。要解决此错误,请等待大约 5 分钟,然后再次尝试删除 OpsWorks 实例。

删除服务角色

  1. 打开 IAM 控制台,然后选择角色
  2. 角色名称列中,选择您之前创建的新角色。
  3. 选择删除角色

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助吗?