使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

如何解决 CloudFormation 堆栈集错误“no stack instance found(未找到堆栈实例)”或“Organizational unit not found in StackSet(在 StackSet 中未找到组织单位)”?

1 分钟阅读
0

我想解决我在尝试更新和部署堆栈集参数或模板时遇到的堆栈集错误。

简短描述

当您添加新账户或组织单位 (OU) 时,这些错误发生在自主管理或服务托管的堆栈集中。

自主管理权限

错误: Stack Instances not found, region: us-east-1, accounts: [123456789012](未找到堆栈实例,区域:us-east-1,账户:[123456789012])

当您使用 Edit StackSet details(编辑堆栈集详细信息)选项更新堆栈集时,会出现上述错误。由于以下原因,更新操作期间会出现错误消息:

  • 您向没有堆栈实例的堆栈集添加了新账户
  • 您向堆栈集添加了新 OU,但新 OU 不是该堆栈集的目标

由于堆栈集找不到新添加的部署目标的堆栈实例来部署更改,因此部署失败。

服务托管权限

错误: Organizational unit ou-9gyj not found in stack set(在堆栈集中未找到组织单位 ou-9gyj)

您可以尝试将堆栈集部署到堆栈集之外的新 OU。这会导致堆栈集将新的堆栈实例部署到堆栈集中未作为目标的账户。

如果通过 Edit StackSet details(编辑堆栈集详细信息)执行这些更新操作,则堆栈集验证将失败。
**注意:**当您选择未作为目标的 OU 时,通常会出现该错误。即使自动部署处于活动状态,也只有在目标 OU 之间添加、删除或移动帐户时才会触发自动部署。

解决方法

使用 Add stacks to StackSet(将堆栈添加到堆栈集)选项为使用自主管理或服务管理权限的堆栈集添加新账户或 OU。

您可以将此选项与 AWS CloudFormation 控制台或 AWS 命令行界面 (AWS CLI) 命令结合使用。
**注意:**如果在运行 AWS CLI 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

使用 CloudFormation 控制台

  1. 打开 AWS CloudFormation 控制台
  2. 向堆栈集添加堆栈实例。

AWS CloudFormation 开始创建您的堆栈实例。在选择 Submit(提交)时打开的堆栈集详细信息页面中查看堆栈集中的堆栈实例的进度和状态。完成后,您的新堆栈实例将列在 Stack instances(堆栈实例)选项卡中。

使用 AWS CLI

在 AWS CLI 中运行以下命令:

aws cloudformation create-stack-instances \ —stack-set-name YOUR_STACK_SET_NAME \ —accounts YOUR_ACCOUNT_ID_1 YOUR_ACCOUNT_ID_2 \ —regions REGION_1 REGION_2

对于服务托管账户,输入以下 AWS CLI 命令:

aws cloudformation create-stack-instances --stack-set-name STACK_SET_NAME --accounts ACCOUNT_IDS --regions REGIONS --deployment-targets OrganizationalUnitIds=ORGANIZATIONAL_UNIT_IDS

**注意:**将 YOUR_STACK_SET_NAME 替换为您的堆栈集名称。将 YOUR_ACCOUNT_ID_1 和 YOUR_ACCOUNT_ID_2 替换为要在其中添加堆栈实例的 AWS 账户 ID。将 REGION_1 和 REGION_2 替换为要在其中部署堆栈实例的 AWS 区域。将 ORGANIZATIONAL_UNIT_IDS 替换为要在其中添加堆栈实例的 AWS 组织的 OU ID。

完成后,新实例将添加为堆栈集的部署目标。现在,您可以使用 Edit StackSet details(编辑堆栈集详细信息)选项来更新堆栈集。

相关信息

堆栈集的权限模型

创建堆栈实例

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