更新堆栈集
您可以在 AWS Management Console中更新堆栈集,也可以在 AWS CLI 中使用 AWS CloudFormation 命令进行更新。在本演练中,我们将传输通道配置的默认快照传输频率从 24hours 更改为 12hours。
要覆盖特定堆栈实例 的参数值,请参阅 覆盖堆栈实例上的参数。
使用 AWS CloudFormation 控制台更新堆栈集
打开 AWS CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation
。 -
从导航窗格中,选择 StackSets (堆栈集)。
-
在 StackSets(堆栈集)页面上,选择您在 创建堆栈集 中创建的堆栈集。在本演练中,我们创建了名为
my-awsconfig-stackset
的堆栈集。 -
选定堆栈集之后,从 Actions (操作) 菜单中选择 Edit StackSet details (编辑堆栈集详细信息)。
-
在 Choose a template (选择一个模板) 页面上,选择是要更新当前模板、指定另一个模板的 S3 URL,还是将新模板上传到 AWS CloudFormation。在本演练中,我们将使用当前模板。选择 Use current template (使用当前模板),然后选择 Next (下一步)。
-
在 Specify StackSet details (指定堆栈集详细信息) 页上,修改参数值并指定部署目标。
-
[自行管理权限] 对于 Deployment targets (部署目标),选择 Deploy stacks in accounts (在账户中部署堆栈)。在文本框中粘贴您的目标账号,并使用逗号分隔多个号码。
[服务托管权限] 对于 Deployment targets (部署目标),请选择您组织中的、要向其部署的账户。
-
选择区域。
-
将 Frequency (频率) 参数的值从 24hours (24 小时) 更改为 12hours (12 小时)。
有关指定 AWS Config 所用值的此参数及其他参数的更多信息,请参阅《AWS Config 开发人员指南》中的使用控制台设置 AWS Config。
请不要更改其他参数。在本演练中,我们不配置 Amazon SNS 更新。
完成后选择下一步。
-
-
在 Configure StackSet options (配置堆栈集选项) 页面上,无需执行任何更改,但您可以根据需要在此处更新、删除或添加新标签。有关如何在 AWS 中使用标签的更多信息,请参阅《AWS Billing and Cost Management 用户指南》中的使用成本分配标签。您还可以管理执行配置以指定 StackSets 是否并发执行非冲突操作并将冲突操作排队。冲突操作结束后,StackSets 将按请求顺序启动排队的操作。
注意
如果已有正在运行或已排队的操作,StackSets 会将所有传入操作排队,即使这些操作没有冲突。
当堆栈集正在运行或排队操作时,您无法修改堆栈集的执行配置。
将 Permissions(权限)保持不变,然后选择 Next(下一步)。
-
在 Set deployment options(设置部署选项)页面上,为 Maximum concurrent accounts(最大并发账户数)保留默认值 1 和 By number(按数量)。保留 Failure tolerance 的默认值 0,并保留 By number 默认选项。选择下一步。
注意
您无法在此处更改账户和区域;即,您无法将堆栈集更改部署到某些账户和区域的堆栈中,另一些则可以。
-
在 Review 页面上,查看您的选择和堆栈集的属性。要进行更改,请在要更改属性的区域的右上角选择 Edit。在更新堆栈集之前,您必须先选中功能区域中的复选框,以确认您使用堆栈集更新的某些资源可能需要新的 IAM 资源和权限。有关可能需要的权限的更多信息,请参阅 确认 AWS CloudFormation 模板中的 IAM 资源。当您准备好创建堆栈集时,选择 Submit(提交)。
AWS CloudFormation 开始对您的堆栈应用更新,然后显示堆栈集详细信息的操作选项卡
-
您可在操作选项卡上查看更新操作的进度和状态。您应该会在 Parameter(参数)选项卡上看到已更新的 Frequency(频率)参数。
使用 AWS CLI 更新您的堆栈集
担任委托管理员时,您必须在每次运行 StackSets 命令时将 --call-as
参数设置为 DELEGATED_ADMIN
。
--call-as
DELEGATED_ADMIN
运行 update-stack-set
AWS CLI 命令以更改堆栈集。在本演练中,我们将更新 MaximumExecutionFrequency
参数的值。有关用于创建或更新 AWS Config 规则的参数名称和值的更多信息,请参阅 AWS CLI 参考中的 put-config-rule。要更改模板参数值,请添加 --parameters
参数。有关您可以为 --parameters
指定的值的更多信息,请参阅《AWS CloudFormation API 参考》中的 Parameter
以及《AWS CLI 命令参考》中的 update-stack
。
在此处显示的示例命令中,我们使用 --parameters
更新堆栈集;具体而言,我们将传输通道配置的默认快照传输频率从 TwentyFour_Hours 更改为 Twelve_Hours。因为我们仍在使用当前模板,所以添加 --use-previous-template
参数。
-
运行以下命令。对于
stack set name
,指定堆栈集名称my-awsconfig-stackset
。通过在
FailureToleranceCount
参数中将0
设置为MaxConcurrentCount
以及将1
设置为--operation-preferences
来设置容错能力和最大并发账户数,如以下示例中所示。要改为应用百分比,请使用FailureTolerancePercentage
或MaxConcurrentPercentage
。在本演练中,我们使用的是计数而不是百分比。注意
MaxConcurrentCount
的值依赖于FailureToleranceCount
的值。MaxConcurrentCount
最多比FailureToleranceCount
多 1。[自行管理权限] 提供您希望更新到目标的账户 ID。
aws cloudformation update-stack-set --stack-set-name
my-awsconfig-stackset
--use-previous-template --parameters ParameterKey=MaximumExecutionFrequency
,ParameterValue=TwentyFour_Hours
\\,Twelve_Hours
--operation-preferencesFailureToleranceCount=0
,MaxConcurrentCount=1
--accounts '["account_ID_1
","account_ID_2
"]'[服务托管权限] 提供您希望更新到目标的组织(根)ID、OU ID 或 AWS Organizations 账户 ID。
aws cloudformation update-stack-set --stack-set-name
my-awsconfig-stackset
--use-previous-template --parameters ParameterKey=MaximumExecutionFrequency
,ParameterValue=TwentyFour_Hours
\\,Twelve_Hours
--operation-preferencesFailureToleranceCount=0
,MaxConcurrentCount=1
--deployment-targets OrganizationalUnitIds='["ou-rcuk-1x5j1lwo
", "ou-rcuk-slr5lh0a
"]' --regions '["eu-west-1
"]' -
通过运行
describe-stack-set-operation
命令显示更新操作的状态和结果,来验证是否已成功更新堆栈集。对于--operation-id
,使用由您的update-stack-set
命令返回的操作 ID。aws cloudformation describe-stack-set-operation --operation-id
operation_ID