使用示例模板开始使用 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
-
在屏幕顶部的导航栏中,选择要从中管理 StackSet 的 AWS 区域。
您可以选择支持 StackSet 的任何区域。您选择的区域不会影响您可以使用 StackSet 部署的区域范围。
-
从导航窗格中,选择 StackSets。
-
从 StackSets 页面顶部,选择创建 StackSet。
-
在权限下,选择自助服务权限,然后选择您在完成先决条件期间创建的 IAM 角色。
-
在 IAM 管理员角色中,选择 AWSCloudFormationStackSetAdministrationRole。
-
在 IAM 执行角色名称中,选择 AWSCloudFormationStackSetExecutionRole。
-
-
在 Prerequisite - Prepare template (先决条件 – 准备模板) 下,选择 Use a sample template (使用示例模板)。
-
在选择示例模板下,选择启用 AWS Config 模板。然后选择下一步。
此模板会在账户中创建启用 AWS Config 所必需的资源,包括配置记录器和交付渠道。
-
在指定 StackSet 详细信息页面的 StackSet 名称中,输入
my-awsconfig-stackset
。 -
在 StackSet 描述中,输入
A StackSet that enables Config across multiple Regions
。 -
在参数下,按以下方式配置 AWS Config 设置:
-
对于支持所有资源类型,请保留默认值 true,从而记录所有受支持的资源类型。
-
对于包含全局资源类型,保留默认值 false,从而排除 IAM 角色等全局资源。
-
请将如非全部支持时的资源类型列表设置为 <All>。
-
对于包含 Config 服务相关角色资源的区域,请将 <DeployToAnyRegion> 替换为
us-west-2
。这表示仅在将堆栈部署到美国西部(俄勒冈州)区域时,才会创建名为
AWSServiceRoleForConfig
的服务相关角色。您将在此过程的后期阶段选择部署区域。 -
对于配置记录器记录频率,请选择每日记录。
-
-
选择下一步以继续。
-
在配置 StackSet 选项页面上,选择添加新标签,然后指定键/值对来添加标签。
-
对于键,输入
Stage
。 -
对于值,输入
Test
。
您应用到 StackSet 的标签也将应用到堆栈创建的所有资源。
-
-
在执行配置中,请选择活动,启用 CloudFormation 的优化操作处理:
-
为了缩短部署时间,无冲突的操作会同时运行。
-
存在冲突的操作会自动排入队列,按照请求的顺序进行处理。
如果有操作正在运行或排队,CloudFormation 会将所有传入操作排入队列,即使这些操作没有冲突。在此期间,您不能更改执行设置。
-
-
选择下一步。
-
在设置部署选项页面的向 StackSet 添加堆栈中,选择部署新堆栈。
-
对于 Accounts (账户),选择 Deploy stacks in accounts (在账户中部署堆栈)。
-
在文本框中输入 AWS 账户 ID。
-
在指定区域中,按此顺序选择以下区域:
-
美国西部(俄勒冈州)区域 (
us-west-2
) -
美国东部(弗吉尼亚州北部)区域 (
us-east-1
)
如需要,选择美国西部(俄勒冈州)区域旁边的向上箭头,将其移至列表中的第一个条目。区域顺序决定了其部署顺序。
-
-
在部署选项中,配置以下设置:
-
对于 Maximum concurrent accounts(最大并发账户数),请保留 Number(数量)和 1 的默认值。
如果是多账户部署,此设置表示,CloudFormation 一次仅在一个账户中部署您的堆栈。
-
对于 Failure tolerance (容错),请保留 Number (数量) 和 0 的默认值。
这意味着,只要您指定区域之一中只要有一个堆栈部署失败,CloudFormation 就会停止当前区域中的部署并取消剩余区域中的部署。
-
在区域并发中,请选择顺序(默认设置)。
此设置可确保 CloudFormation 完成一个区域的部署后,然后再移至下一个区域。
-
在并发模式中,保留默认值严格容错。
对于多账户部署,这会在操作失败时降低账户并发级别,保持在容错能力 +1 的范围内。
-
-
选择下一步。
-
在审核页面上,审核您的选择。要进行更改,请在相关部分选择编辑。
-
准备好创建 StackSet 后,选择提交。
监控 StackSet 创建
选择提交后,CloudFormation 会开始创建您的 StackSet 并将堆栈部署到您账户中的指定区域。StackSet 详细信息页面会自动打开,您可以在其中监控操作进度。
监控 StackSet 创建
-
在 StackSet 详细信息页面上会默认显示操作选项卡,显示当前正在进行的操作。
-
操作状态最开始应为
RUNNING
。CloudFormation 根据您配置的部署选项在指定的区域中创建堆栈。 -
要查看有关操作的更多详细信息,请在列表中选择操作 ID。
-
在操作详细信息页面,可以查看每个区域中创建的堆栈实例的状态。
-
操作状态变为
SUCCEEDED
后表示 StackSet 及其所有堆栈实例已成功创建。
查看 StackSet 结果
StackSet 创建完成后,您可以查看已部署的堆栈实例,验证您的账户是否已在各个指定区域中启用 AWS Config。
查看 StackSet 结果
-
在 StackSet 详细信息页面上,选择堆栈实例选项卡。
-
您应该会看到您的账户在各个指定区域中创建的堆栈实例列表。每个堆栈实例的状态都应为
SUCCEEDED
,此状态表示已成功部署。 -
要验证您的账户是否已启用 AWS Config,可以查看每个部署区域的 AWS Config 控制台。
更新 StackSet
创建 StackSet 后,您可能会需要对其进行更新以修改参数值或添加更多区域。本节介绍如何更新 AWS Config 记录频率参数。
更新 StackSet
-
在 StackSet 页面上,选择
my-awsconfig-stackset
。 -
选定 StackSet 之后,从操作菜单中选择编辑 StackSet 详细信息。
-
在选择模板页面的先决条件 – 准备模板中,选择使用当前模板。
-
选择下一步。
-
在指定 StackSet 详细信息页面的参数下,找到配置记录器的记录频率,将其从每日更改为连续。
-
选择下一步。
-
在配置 StackSet 选项页面上,保持所有设置不变,然后选择下一步。
-
在设置部署选项页面上,指定您的账户 ID 以及您在创建 StackSet 时使用的区域。
-
在部署选项中,保持与之前相同的设置。
-
选择下一步。
-
在审核页面上,检查您的更改内容,然后选择提交。
-
CloudFormation 会开始更新 StackSet。您可以在 StackSet 详细信息页面的操作选项卡上监控进度。
将堆栈添加到 StackSet
您可以通过部署到其他区域来向 StackSet 添加更多堆栈。本节介绍如何向新区域添加堆栈。
将堆栈添加到 StackSet
-
在 StackSet 页面上,选择
my-awsconfig-stackset
。 -
选择 StackSet 后,从操作菜单中选择将堆栈添加到 StackSet。
-
在设置部署选项页面的向 StackSet 添加堆栈中,选择部署新堆栈。
-
在账户中,选择在账户中部署堆栈,然后输入您的账户 ID。
-
在指定区域中,选择一个新的区域,例如欧洲地区(爱尔兰) (
eu-west-1
)。 -
在部署选项中,保持与之前相同的设置。
-
选择下一步。
-
在指定覆盖页面上,将属性值保留为指定值,然后选择下一步。
-
在审核页面上,检查您的选择,然后选择提交。
-
CloudFormation 会开始在指定区域中创建新堆栈。您可以在 StackSet 详细信息页面的操作选项卡上监控进度。
清理
为避免因不需要的 AWS Config 资源产生费用,您应该从 StackSet 中删除堆栈、删除 StackSet 本身以及删除在本教程学习期间创建的 IAM 角色,以便进行清理。所有资源都部署在您的账户中,因此清理非常简单。
从 StackSet 中删除堆栈
-
在 StackSet 页面上,选择
my-awsconfig-stackset
。 -
选定 StackSet 后,从操作菜单中选择从 StackSet 中删除堆栈。
-
在设置部署选项页面的账户中,选择在账户中部署堆栈,然后输入您的账户 ID。
-
在指定区域中,选择部署了堆栈的所有区域。
-
在部署选项中,保留默认设置。
-
确保未打开保留堆栈,以便删除堆栈及其资源。
-
选择下一步。
-
在审核页面上,检查您的选择,然后选择提交。
-
CloudFormation 会开始从 StackSet 中删除堆栈。您可以在 StackSet 详细信息页面的操作选项卡上监控进度。
删除 StackSet
-
删除所有堆栈后,在 StackSet 页面上,选择
my-awsconfig-stackset
。 -
选定 StackSet 后,从操作菜单中选择删除 StackSet。
-
当系统提示进行确认时,选择删除。
删除 IAM 服务角色
由于您只部署到自己的账户,因此您只需要从该单一账户中删除 IAM 角色即可,清理工作比多账户部署简单得多。
-
打开 IAM 管理控制台
。 -
从导航窗格中,选择 Roles。
-
在搜索框中,输入
AWSCloudFormationStackSet
查找您在本教程学习期间创建的角色。 -
勾选 AWSCloudFormationStackSetAdministrationRole 旁边的复选框。
-
在该页面的顶部,选择删除。
-
在确认对话框中,输入
delete
,然后选择删除。 -
重复同样的过程删除 AWSCloudFormationStackSetExecutionRole。
删除 StackSet 后,由于 AWS::S3::Bucket
资源的 DeletionPolicy
属性,每个 AWS 区域都将保留一个 Amazon S3 存储桶。这样可以保留您的 AWS Config 历史数据。如果您不再需要这些数据,可以安全地手动删除该存储桶。您必须先清空存储桶,然后才能删除存储桶。清空存储桶将删除存储桶中的所有对象。
清空和删除 Amazon S3 存储桶
-
打开 Amazon S3 控制台
。 -
在控制台左侧的导航窗格中,选择 Buckets(存储桶)。
-
在存储桶列表中,您将看到在部署的每个区域中为此 StackSet 创建的存储桶。选择为此 StackSet 创建的存储桶名称旁边的选项,然后选择清空。
-
在清空存储桶页面上,通过在文本字段中键入
permanently delete
来确认要清空存储桶,然后选择清空。 -
在清空存储桶:状态页面上监控存储桶清空过程的进度。
-
要返回到存储桶列表,请选择退出。
-
选择存储桶名称旁的选项,然后选择删除。
-
在系统提示进行确认时,键入存储桶的名称,然后选择删除存储桶。
-
在存储桶清单上监控存储桶删除过程的进度。Amazon S3 完成存储桶删除后,会将存储桶从列表中移除。
-
重复此过程,删除不同区域中为此 StackSet 创建的存储桶。
后续步骤
恭喜您!您已经成功使用示例模板创建了 StackSet,将堆栈部署到账户内的多个区域,更新了 StackSet,添加了更多堆栈,还清理了资源。通过学习单一账户部署,可以简化您的清理过程,同时还能让您学到 StackSet 的核心多区域功能。
要了解有关 StackSet 的更多信息,请参阅以下主题:
-
覆盖 CloudFormation StackSet 中的堆栈参数值:了解如何覆盖特定账户和区域的参数值。
-
创建具有服务托管权限的 AWS CloudFormation StackSet:探索如何使用 AWS Organizations 为多账户部署创建 StackSet。