从堆栈集中删除堆栈实例 - AWS CloudFormation

从堆栈集中删除堆栈实例

您可以在 AWS Management Console中删除堆栈集中的堆栈实例,也可以在 AWS CLI 中使用 AWS CloudFormation 命令进行删除。在此过程中,我们将删除所有堆栈。

对于具有服务托管权限的堆栈集,如果您从顶级组织单位 (OU) 中删除堆栈实例,则该 OU 将作为堆栈集的目标移除。

使用 AWS Management Console删除堆栈实例

  1. 打开 AWS CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation

  2. 从导航窗格中,选择 StackSets (堆栈集)。在 StackSets(堆栈集)页面上,选择您在 创建堆栈集 中创建的堆栈集。

  3. 选定堆栈集后,从 Actions(操作)菜单中选择 Delete stacks from StackSet(从堆栈集中删除堆栈)。

    从“Actions (操作)”菜单中选择“Delete stacks from StackSet (从堆栈集中删除堆栈)”。
  4. Set deployment options (设置部署选项) 页面上,选择要从中删除堆栈实例的账户。

    1. [自行管理权限] 对于 Accounts (账户),选择 Deploy stacks in accounts (在账户中部署堆栈)。在文本框中粘贴您的目标账号,并使用逗号分隔多个号码。

      [服务托管权限] 对于 Accounts (账户),选择 Deploy stacks in organizational units (在组织单位中部署堆栈)。粘贴作为堆栈集目标的 OU 的 ID。

      注意

      StackSets 还会从指定目标 OU 的所有子 OU 中删除堆栈实例。

      选择要从中删除堆栈实例的组织单位。
    2. 对于 Deployment regions (部署区域),选择要从中删除堆栈实例的区域。在这种情况下,请设置 美国东部(弗吉尼亚北部)地区 和 美国西部(俄勒冈)区域。

    3. 对于 Deployment options (部署选项)

      • 对于 Maximum concurrent accounts (最大并发账户数),请保留 Number (数量)1 的默认值。

      • 对于 Failure tolerance (容错),请保留 Number (数量)0 的默认值。

      Retain stacks (保留堆栈) 区域中,保留已禁用的默认设置。

      当您从堆栈集中删除堆栈时,可利用 Retain stacks 选项选择从堆栈集中删除堆栈实例,但保存堆栈及其关联的资源。当您通过选择 Retain stacks 选项从堆栈集保存堆栈时,堆栈的资源将保持当前状态,但堆栈不再是堆栈集的一部分。要重新关联堆栈或将现有堆栈添加到堆栈集,请参阅将堆栈导入 AWS CloudFormation StackSets

      选择 Next(下一步)。

  5. 审核页面上,检查您的选择,然后选择提交

  6. 完成堆栈删除操作后,您可在堆栈集详细信息页面的 Stack instances (堆栈实例) 选项卡上验证此堆栈实例是否已从堆栈集中删除。

    使用堆栈集详细信息页面的堆栈实例选项卡查看有关堆栈实例的信息。

使用 AWS CLI删除堆栈实例

担任委托管理员时,您必须在每次运行 StackSets 命令时将 --call-as 参数设置为 DELEGATED_ADMIN

--call-as DELEGATED_ADMIN
  1. 运行 delete-stack-instances 命令。对于 --stack-set-name,指定堆栈集名称 my-awsconfig-stackset

    通过在 FailureToleranceCount 参数中将 0 设置为 MaxConcurrentCount 以及将 1 设置为 --operation-preferences 来设置容错能力和最大并发账户数,如以下示例中所示。要改为应用百分比,请使用 FailureTolerancePercentageMaxConcurrentPercentage。在本演练中,我们使用的是计数而不是百分比。

    注意

    MaxConcurrentCount 的值依赖于 FailureToleranceCount 的值。MaxConcurrentCount 最多比 FailureToleranceCount 多 1。

    因为 --retain-stacksdelete-stack-instances 的必需参数,所以,如果您不想保留(保存)堆栈,请添加 --no-retain-stacks。在本演练中,我们添加 --no-retain-stacks 参数,因为我们将不会保留任何堆栈。

    [自行管理权限] 将 Account_ID 替换为您按创建堆栈集所述创建堆栈时使用的账户。

    aws cloudformation delete-stack-instances --stack-set-name my-awsconfig-stackset --accounts '["0123456789012"]' --regions '["eu-west-1"]' --operation-preferences FailureToleranceCount=0,MaxConcurrentCount=1 --no-retain-stacks

    [服务托管权限] 对于 --deployment-targets,指定您在其中创建堆栈实例的组织(根)ID 或 OU ID。

    注意

    StackSets 还会从指定目标 OU 的所有子 OU 中删除堆栈实例。

    aws cloudformation delete-stack-instances --stack-set-name my-awsconfig-stackset --deployment-targets OrganizationalUnitIds='["ou-rcuk-1x5jlwo", "ou-rcuk-slr5lh0a"]' --regions '["eu-west-1"]' --no-retain-stacks
  2. 在完成堆栈删除操作后,您也可以选择运行 describe-stack-set-operation 命令以显示删除堆栈操作的状态和结果,验证是否已从堆栈集中删除堆栈实例。对于 --operation-id,使用由您的 delete-stack-instances 命令返回的操作 ID。

    aws cloudformation describe-stack-set-operation --stack-set-name stackSetName --operation-id ddf16f54-ad62-4d9b-b0ab-3ed8e9example