使用示例模板开始使用 StackSet。 - AWS CloudFormation

使用示例模板开始使用 StackSet。

本教程将介绍如何通过 AWS Management Console开始使用 StackSet。它会指导您如何使用示例模板创建 StackSet。您将学会如何跨多个区域部署堆栈、监控 StackSet 操作以及查看结果。

在本教程中,您将在美国西部(俄勒冈州)(us-west-2) 区域和美国东部(弗吉尼亚州北部)区域 (us-east-1) 中的 AWS 账户中创建一个启用 AWS Config 的 StackSet。借助 StackSet,您可以在一次操作中跨多个账户和区域创建、更新或删除堆栈,因此它是大规模管理基础设施的理想解决方案。虽然为了方便起见,本教程使用单一账户,但它有效地演示了 StackSet 的多区域功能。

位于以下 S3 存储桶中的示例模板可供使用:https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/EnableAWSConfig.yml

注意

StackSet 使用免费,但您需要为创建 StackSet 使用的 AWS 资源付费,例如本教程中的 AWS Config。有关更多信息,请参阅AWS Config定价

先决条件

开始本教程之前,请确保您已完成以下先决条件:

  • 您必须已设置自行管理权限所需的 IAM 角色。要创建 StackSet 并在单个账户中部署堆栈,您的账户中需要有以下角色:

    • AWSCloudFormationStackSetAdministrationRole

    • AWSCloudFormationStackSetExecutionRole

    有关这些角色设置的详细说明,请参阅授予自行管理的权限

使用控制台中的示例模板创建 StackSet

创建启用 AWS Config 的 StackSet
  1. 打开 CloudFormation 控制台

  2. 在屏幕顶部的导航栏中,选择要从中管理 StackSet 的 AWS 区域。

    您可以选择支持 StackSet 的任何区域。您选择的区域不会影响您可以使用 StackSet 部署的区域范围。

  3. 从导航窗格中,选择 StackSets

  4. StackSets 页面顶部,选择创建 StackSet

  5. 权限下,选择自助服务权限,然后选择您在完成先决条件期间创建的 IAM 角色。

    • 在 IAM 管理员角色中,选择 AWSCloudFormationStackSetAdministrationRole

    • 在 IAM 执行角色名称中,选择 AWSCloudFormationStackSetExecutionRole

  6. Prerequisite - Prepare template (先决条件 – 准备模板) 下,选择 Use a sample template (使用示例模板)

  7. 选择示例模板下,选择启用 AWS Config 模板。然后选择下一步

    此模板会在账户中创建启用 AWS Config 所必需的资源,包括配置记录器和交付渠道。

  8. 指定 StackSet 详细信息页面的 StackSet 名称中,输入 my-awsconfig-stackset

  9. StackSet 描述中,输入 A StackSet that enables Config across multiple Regions

  10. 参数下,按以下方式配置 AWS Config 设置:

    1. 对于支持所有资源类型,请保留默认值 true,从而记录所有受支持的资源类型。

    2. 对于包含全局资源类型,保留默认值 false,从而排除 IAM 角色等全局资源。

    3. 请将如非全部支持时的资源类型列表设置为 <All>

    4. 对于包含 Config 服务相关角色资源的区域,请将 <DeployToAnyRegion> 替换为 us-west-2

      这表示仅在将堆栈部署到美国西部(俄勒冈州)区域时,才会创建名为 AWSServiceRoleForConfig 的服务相关角色。您将在此过程的后期阶段选择部署区域。

    5. 对于配置记录器记录频率,请选择每日记录。

  11. 选择下一步以继续。

  12. 配置 StackSet 选项页面上,选择添加新标签,然后指定键/值对来添加标签。

    1. 对于,输入 Stage

    2. 对于,输入 Test

    您应用到 StackSet 的标签也将应用到堆栈创建的所有资源。

  13. 执行配置中,请选择活动,启用 CloudFormation 的优化操作处理:

    • 为了缩短部署时间,无冲突的操作会同时运行。

    • 存在冲突的操作会自动排入队列,按照请求的顺序进行处理。

    如果有操作正在运行或排队,CloudFormation 会将所有传入操作排入队列,即使这些操作没有冲突。在此期间,您不能更改执行设置。

  14. 选择下一步

  15. 设置部署选项页面的向 StackSet 添加堆栈中,选择部署新堆栈

  16. 对于 Accounts (账户),选择 Deploy stacks in accounts (在账户中部署堆栈)

  17. 在文本框中输入 AWS 账户 ID。

  18. 指定区域中,按此顺序选择以下区域:

    1. 美国西部(俄勒冈州)区域 (us-west-2)

    2. 美国东部(弗吉尼亚州北部)区域 (us-east-1)

    如需要,选择美国西部(俄勒冈州)区域旁边的向上箭头,将其移至列表中的第一个条目。区域顺序决定了其部署顺序。

  19. 部署选项中,配置以下设置:

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

      如果是多账户部署,此设置表示,CloudFormation 一次仅在一个账户中部署您的堆栈。

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

      这意味着,只要您指定区域之一中只要有一个堆栈部署失败,CloudFormation 就会停止当前区域中的部署并取消剩余区域中的部署。

    3. 区域并发中,请选择顺序(默认设置)。

      此设置可确保 CloudFormation 完成一个区域的部署后,然后再移至下一个区域。

    4. 并发模式中,保留默认值严格容错

      对于多账户部署,这会在操作失败时降低账户并发级别,保持在容错能力 +1 的范围内。

  20. 选择下一步

  21. 审核页面上,审核您的选择。要进行更改,请在相关部分选择编辑

  22. 准备好创建 StackSet 后,选择提交

监控 StackSet 创建

选择提交后,CloudFormation 会开始创建您的 StackSet 并将堆栈部署到您账户中的指定区域。StackSet 详细信息页面会自动打开,您可以在其中监控操作进度。

监控 StackSet 创建
  1. 在 StackSet 详细信息页面上会默认显示操作选项卡,显示当前正在进行的操作。

  2. 操作状态最开始应为 RUNNING。CloudFormation 根据您配置的部署选项在指定的区域中创建堆栈。

  3. 要查看有关操作的更多详细信息,请在列表中选择操作 ID。

  4. 在操作详细信息页面,可以查看每个区域中创建的堆栈实例的状态。

  5. 操作状态变为 SUCCEEDED 后表示 StackSet 及其所有堆栈实例已成功创建。

查看 StackSet 结果

StackSet 创建完成后,您可以查看已部署的堆栈实例,验证您的账户是否已在各个指定区域中启用 AWS Config。

查看 StackSet 结果
  1. 在 StackSet 详细信息页面上,选择堆栈实例选项卡。

  2. 您应该会看到您的账户在各个指定区域中创建的堆栈实例列表。每个堆栈实例的状态都应为 SUCCEEDED,此状态表示已成功部署。

  3. 要验证您的账户是否已启用 AWS Config,可以查看每个部署区域的 AWS Config 控制台。

更新 StackSet

创建 StackSet 后,您可能会需要对其进行更新以修改参数值或添加更多区域。本节介绍如何更新 AWS Config 记录频率参数。

更新 StackSet
  1. StackSet 页面上,选择 my-awsconfig-stackset

  2. 选定 StackSet 之后,从操作菜单中选择编辑 StackSet 详细信息

  3. 选择模板页面的先决条件 – 准备模板中,选择使用当前模板

  4. 选择下一步

  5. 指定 StackSet 详细信息页面的参数下,找到配置记录器的记录频率,将其从每日更改为连续

  6. 选择下一步

  7. 配置 StackSet 选项页面上,保持所有设置不变,然后选择下一步

  8. 设置部署选项页面上,指定您的账户 ID 以及您在创建 StackSet 时使用的区域。

  9. 部署选项中,保持与之前相同的设置。

  10. 选择下一步

  11. 审核页面上,检查您的更改内容,然后选择提交

  12. CloudFormation 会开始更新 StackSet。您可以在 StackSet 详细信息页面的操作选项卡上监控进度。

将堆栈添加到 StackSet

您可以通过部署到其他区域来向 StackSet 添加更多堆栈。本节介绍如何向新区域添加堆栈。

将堆栈添加到 StackSet
  1. StackSet 页面上,选择 my-awsconfig-stackset

  2. 选择 StackSet 后,从操作菜单中选择将堆栈添加到 StackSet

  3. 设置部署选项页面的向 StackSet 添加堆栈中,选择部署新堆栈

  4. 账户中,选择在账户中部署堆栈,然后输入您的账户 ID。

  5. 指定区域中,选择一个新的区域,例如欧洲地区(爱尔兰) (eu-west-1)。

  6. 部署选项中,保持与之前相同的设置。

  7. 选择下一步

  8. 指定覆盖页面上,将属性值保留为指定值,然后选择下一步

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

  10. CloudFormation 会开始在指定区域中创建新堆栈。您可以在 StackSet 详细信息页面的操作选项卡上监控进度。

清理

为避免因不需要的 AWS Config 资源产生费用,您应该从 StackSet 中删除堆栈、删除 StackSet 本身以及删除在本教程学习期间创建的 IAM 角色,以便进行清理。所有资源都部署在您的账户中,因此清理非常简单。

从 StackSet 中删除堆栈
  1. StackSet 页面上,选择 my-awsconfig-stackset

  2. 选定 StackSet 后,从操作菜单中选择从 StackSet 中删除堆栈

  3. 设置部署选项页面的账户中,选择在账户中部署堆栈,然后输入您的账户 ID。

  4. 指定区域中,选择部署了堆栈的所有区域。

  5. 部署选项中,保留默认设置。

  6. 确保打开保留堆栈,以便删除堆栈及其资源。

  7. 选择下一步

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

  9. CloudFormation 会开始从 StackSet 中删除堆栈。您可以在 StackSet 详细信息页面的操作选项卡上监控进度。

删除 StackSet
  1. 删除所有堆栈后,在 StackSet 页面上,选择 my-awsconfig-stackset

  2. 选定 StackSet 后,从操作菜单中选择删除 StackSet

  3. 当系统提示进行确认时,选择删除

删除 IAM 服务角色

由于您只部署到自己的账户,因此您只需要从该单一账户中删除 IAM 角色即可,清理工作比多账户部署简单得多。

  1. 打开 IAM 管理控制台

  2. 从导航窗格中,选择 Roles

  3. 在搜索框中,输入 AWSCloudFormationStackSet 查找您在本教程学习期间创建的角色。

  4. 勾选 AWSCloudFormationStackSetAdministrationRole 旁边的复选框。

  5. 在该页面的顶部,选择删除

  6. 在确认对话框中,输入 delete,然后选择删除

  7. 重复同样的过程删除 AWSCloudFormationStackSetExecutionRole

删除 StackSet 后,由于 AWS::S3::Bucket 资源的 DeletionPolicy 属性,每个 AWS 区域都将保留一个 Amazon S3 存储桶。这样可以保留您的 AWS Config 历史数据。如果您不再需要这些数据,可以安全地手动删除该存储桶。您必须先清空存储桶,然后才能删除存储桶。清空存储桶将删除存储桶中的所有对象。

清空和删除 Amazon S3 存储桶
  1. 打开 Amazon S3 控制台

  2. 在控制台左侧的导航窗格中,选择 Buckets(存储桶)

  3. 存储桶列表中,您将看到在部署的每个区域中为此 StackSet 创建的存储桶。选择为此 StackSet 创建的存储桶名称旁边的选项,然后选择清空

  4. 清空存储桶页面上,通过在文本字段中键入 permanently delete 来确认要清空存储桶,然后选择清空

  5. 清空存储桶:状态页面上监控存储桶清空过程的进度。

  6. 要返回到存储桶列表,请选择退出

  7. 选择存储桶名称旁的选项,然后选择删除

  8. 在系统提示进行确认时,键入存储桶的名称,然后选择删除存储桶

  9. 存储桶清单上监控存储桶删除过程的进度。Amazon S3 完成存储桶删除后,会将存储桶从列表中移除。

  10. 重复此过程,删除不同区域中为此 StackSet 创建的存储桶。

后续步骤

恭喜您!您已经成功使用示例模板创建了 StackSet,将堆栈部署到账户内的多个区域,更新了 StackSet,添加了更多堆栈,还清理了资源。通过学习单一账户部署,可以简化您的清理过程,同时还能让您学到 StackSet 的核心多区域功能。

要了解有关 StackSet 的更多信息,请参阅以下主题: