AWS Systems Manager
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

在多个 AWS 区域和账户中运行 Automation 工作流程

您可以从 Automation 管理账户跨多个 AWS 区域和 AWS 账户或 AWS 组织部门 (OU) 运行 AWS Systems Manager Automation。在多个区域和账户或 OU 中运行 Automation 可减少管理 AWS 资源所需的时间,同时提高计算环境的安全性。

例如,您可以集中实施修补和安全更新,纠正 VPC 配置或 Amazon S3 存储桶策略的合规性偏差,并对资源(例如 Amazon EC2 实例)进行批量管理。下图显示了一个用户从 Automation 管理账户在多个区域和账户中运行 AWS-RestartEC2Instances 文档的示例。Automation 通过在指定的区域和账户中使用指定的标签来定位实例。

注意

跨多个区域和账户运行 Automation 时,可以使用标签或 AWS 资源组名称将资源设置为目标。Automation 不会在没有指定标签或未包含在指定资源组中的资源上运行。


                    显示 Systems Manager Automation 在多个区域和多个账户中运行的示意图。

重要

您的账户将产生与在多个区域和账户中运行 Automation 关联的费用。多区域和账户步骤执行被认为是特殊步骤。特殊步骤没有步骤限制,但您的账户将产生与 Systems Manager 处理的每个步骤关联的费用。有关更多信息,请参阅 AWS Systems Manager 定价页。

如何使用

跨多个区域和账户或 OU 运行 Automation 的工作方式如下:

  1. 验证要在其上运行 Automation 的(所有区域和账户或 OU 中的)所有资源是否使用相同的标签。如果不是,您可以将它们添加到一个 AWS 资源组并将该组设置为目标。有关更多信息,请参阅什么是 AWS Resource Groups?

  2. 登录要配置为 Automation 主账户的 AWS Identity and Access Management (IAM) 账户。

  3. 使用本主题中的过程创建一个名为 AWS-SystemsManager-AutomationExecutionRole 的 IAM 执行角色。此角色为用户提供运行 Automation 工作流程的权限。

  4. 使用本主题中的过程再创建一个名为 AWS-SystemsManager-AutomationAdministrationRole 的 IAM 角色。此角色为用户提供在多个 AWS 账户和 OU 中运行 Automation 工作流程的权限。

  5. 选择 Automation 文档、区域和要运行 Automation 工作流程的账户或 OU。

  6. 运行 Automation。

  7. 在 AWS Systems Manager 控制台或 AWS CLI 中使用 GetAutomationExecutionDescribeAutomationStepExecutionsDescribeAutomationExecutions API 操作监控工作流程的进度。

设置进行多区域和多账户 Automation 执行的管理账户权限

按照以下过程操作,使用 AWS CloudFormation 创建进行 Systems Manager Automation 多区域和多账户执行所需的 IAM 角色。此过程介绍如何创建 AWS-SystemsManager-AutomationExecutionRole 角色。您必须在要设置为多区域和多账户 Automation 运行目标的每一个账户中创建该角色。

此过程还介绍如何创建 AWS-SystemsManager-AutomationAdministrationRole 角色。您只需要在 Automation 管理账户中创建此角色。

使用 AWS CloudFormation 创建进行多区域和多账户 Automation 执行所需的 IAM 角色

  1. 下载 AWS-SystemsManager-AutomationExecutionRole.zip 文件夹。此文件夹包含 AWS-SystemsManager-AutomationExecutionRole.json AWS CloudFormation 模板文件。

  2. Open the AWS CloudFormation console at https://console.amazonaws.cn/cloudformation.

  3. 选择 Create Stack

  4. 选择一个模板部分中,选择将模板上传到 Amazon S3

  5. 选择浏览,然后选择 AWS-SystemsManager-AutomationExecutionRole.json AWS CloudFormation 模板文件。

  6. 选择 Next

  7. 指定详细信息页面的堆栈名称字段中,输入一个名称。

  8. Parameters (参数) 部分的 MasterAccountID 字段中,输入要用于运行多区域和多账户 Automation 的账户的 ID。

  9. 选择 Next

  10. 选项页面上,为要使用的所有选项输入值。选择 Next

  11. 审核页面上,向下滚动并选择我确认,AWS CloudFormation 可能创建 IAM 资源选项。

  12. 选择 Create

    大约三分钟左右,AWS CloudFormation 会显示 CREATE_IN_PROGRESS 状态。状态变为 CREATE_COMPLETE

  13. 在要设置为多区域和多账户 Automation 运行目标的每一个账户中重复这一过程。

  14. 下载 AWS-SystemManager-AutomationAdministrationRole.zip 文件夹,并为 AWS-SystemManager-AutomationAdministrationRole 角色重复此过程。您只需要在 Automation 管理账户中创建 AWS-SystemManager-AutomationAdministrationRole 角色。

在多个区域和账户中运行 Automation

使用本节中的过程,从 Automation 管理账户在多个区域和账户中运行 Automation。开始之前,请注意以下信息:

  • 要在其中运行 Automation 的 AWS 账户 ID 或 OU。

  • 要在其中运行 Automation 的 AWS Systems Manager 区域。

  • 要在其中运行 Automation 的标签键和标签值或资源组的名称。

在多个区域和账户中运行 Automation 工作流程(控制台)

  1. https://console.www.amazonaws.cn/systems-manager/ 上打开 AWS Systems Manager 控制台。

  2. 在导航窗格中,选择 Automation (自动化),然后选择 Execute automation (执行自动化)

  3. Automation document (自动化文档) 列表中,选择文档名称旁边的选项。要查看更多 Automation 文档,请使用搜索栏或搜索栏右侧的数字。

    注意

    可以通过选择文档名称来查看有关文档的信息。

  4. Document details (文档详细信息) 部分中,验证 Document version (文档版本) 已设置为要执行的版本。系统包括以下版本选项:

    • Default version at runtime (运行时的默认版本):如果定期更新 Automation 文档并指定新的默认版本,请选择此选项。

    • Latest version at runtime (运行时的最新版本):如果定期更新 Automation 文档,并且需要执行最新更新版本,请选择此选项。

    • 1 (Default) (1 (默认)):选择此选项可执行文档的第一个版本,这是默认版本。

  5. 选择 Next (下一步)

  6. Execute automation document (执行自动化文档) 页面上,选择 Multi-account and Region (多账户和区域)

  7. Target accounts and Regions (目标账户和区域) 部分中,使用 Accounts and organizational (OUs) (账户和组织 (OU)) 字段指定要在其中运行 Automation 的各个 AWS 账户或 AWS 组织部门 (OU)。使用逗号分隔多个账户或 OU。

  8. 使用 AWS Regions (AWS 区域) 列表选择要在其中运行 Automation 的一个或多个区域。

  9. 使用 Multi-Region and account rate control (多区域和账户费率控制) 选项将 Automation 执行限制为在有限区域中的有限账户运行。这些选项不限制可运行 Automation 的 AWS 资源的数量。

    1. Location (account-Region pair) concurrency (位置(账户-区域对)并发) 部分,选择一个选项以限制可同时在多个账户和区域中运行的 Automation 工作流程的数量。例如,如果选择在位于四 (4) 个 AWS 区域中的五 (5) 个 AWS 账户中运行 Automation,则 Systems Manager 在总共 20 个账户-区域对中运行 Automation。您可以使用此选项指定一个绝对数量(例如 2),以使 Automation 仅同时在两个账户-区域对中运行。或者,您也可以指定可同时运行的账户-区域对的百分比。例如,对于 20 个账户-区域对,如果您指定 20%,则 Automation 在最多五 (5) 个账户-区域对中同时运行。

      • 选择 targets (目标) 输入可同时运行 Automation 工作流程的账户-区域对的绝对数量。

      • 选择 percent (百分比) 输入可同时运行 Automation 工作流程的账户-区域对总数的百分比。

    2. Error threshold (错误阈值) 部分中,选择一个选项:

      • 选择 errors (错误) 输入 Automation 停止将工作流程发送到其他资源之前允许的错误的绝对数量。

      • 选择 percent (百分比) 输入 Automation 停止将工作流程发送到其他资源之前允许的错误的百分比。

  10. 目标部分中,选择希望如何设置要在其中运行 Automation 的 AWS 资源。这些选项是必需的。

    1. 使用 Parameter (参数) 列表选择一个参数。Parameter (参数) 列表中的项目由此过程开始时选择的 Automation 文档中的参数确定。通过选择参数,可以定义在其上运行 Automation 工作流程的资源的类型。

    2. 使用 Targets (目标) 列表选择设置目标资源的方式。如果选择使用 AWS Resource Groups将资源设置为目标,请从 Resource Group (资源组) 列表中选择组的名称。

      如果选择使用标签将资源设置为目标,请在提供的字段中输入标签键和(可选)标签值。选择 Add (添加)

  11. Input parameters (输入参数) 部分中,指定所需的输入。(可选)您可以从 AutomationAssumeRole 列表中选择一个 IAM 服务角色。

    注意

    您可能不需要选择 Input parameters (输入参数) 部分中的某些选项。原因是您使用标签或资源组将多个区域和账户中的资源设置为目标。例如,如果选择了 AWS-RestartEC2Instance 文档,则无需在 Input parameters (输入参数) 部分中指定或选择实例 ID。Automation 执行过程通过使用您指定的标签来定位要重新启动的实例。

  12. 使用 Rate control (速率控制) 部分中的选项限制可在每个账户-区域对中执行 Automation 的 AWS 资源的数量。

    Concurrency (并发) 部分中,选择一个选项:

    • 选择 targets (目标) 输入可同时执行 Automation 工作流程的目标的绝对数量。

    • 选择 percentage (百分比) 输入可同时执行 Automation 工作流程的目标集的百分比。

  13. Error threshold (错误阈值) 部分中,选择一个选项:

    • 选择 errors (错误) 输入 Automation 停止将工作流程发送到其他资源之前允许的错误的绝对数量。

    • 选择 percentage (百分比) 输入 Automation 停止将工作流程发送到其他资源之前允许的错误的百分比。

  14. 选择 Execute (执行)

在多个区域和账户中运行 Automation 工作流程 (AWS CLI)

  1. Install and configure the AWS CLI, if you have not already.

    For information, see Install or Upgrade and then Configure the AWS CLI.

  2. 运行以下命令以在多个区域和账户中运行 Automation 工作流程。

    aws ssm start-automation-execution --document-name name_of_Automation_document --parameters AutomationAssumeRole=arn:aws:iam::Automation_management_account_ID:role/AWS-SystemsManager-AutomationAdministrationRole --target-parameter-name parameter_name (required) --targets Key=tag_key,Values=tag_value --target-locations Accounts=account_ID_1,account_ID_2,account_ID_3,Regions=Region_1,Region_2,ExecutionRoleName=AWS-SystemsManager-AutomationExecutionRole

    下面是几个示例:

    示例 1:此示例重新启动 1a2b3c4d5e6f7g8h 和 a1b2c3d4e5f6h7 账户中位于 us-east-2 和 us-west-1 区域内的 Amazon EC2 实例。必须使用 Env-PROD 标记实例。

    aws ssm start-automation-execution --document-name AWS-RestartEC2Instance --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/AWS-SystemsManager-AutomationAdministrationRole --target-parameter-name InstanceId --targets Key=tag:Env,Values=PROD --target-locations Accounts=1a2b3c4d5e6f7g8h,a1b2c3d4e5f6h7,Regions=us-east-2,us-west-1,ExecutionRoleName=AWS-SystemsManager-AutomationExecutionRole

    示例 2:此示例重启 1a2b3c4d5e6f7g8ha1b2c3d4e5f6h7 账户中的 Amazon EC2 实例,其位于 eu-central-1 区域。实例必须是 prod-instances AWS 资源组的成员。

    aws ssm start-automation-execution --document-name AWS-RestartEC2Instance --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/AWS-SystemsManager-AutomationAdministrationRole --target-parameter-name InstanceId --targets Key=ResourceGroup,Values=prod-instances --target-locations Accounts=1a2b3c4d5e6f7g8h,a1b2c3d4e5f6h7,Regions=eu-central-1,ExecutionRoleName=AWS-SystemsManager-AutomationExecutionRole

    示例 3:此示例重启 ou-1a2b3c-4d5e6c AWS 组织部门中的 Amazon EC2 实例。实例位于 us-west-1us-west-2 区域。实例必须是 WebServices AWS 资源组的成员。

    aws ssm start-automation-execution --document-name AWS-RestartEC2Instance --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/AWS-SystemsManager-AutomationAdministrationRole --target-parameter-name InstanceId --targets Key=ResourceGroup,Values=WebServices --target-locations Accounts=ou-1a2b3c-4d5e6c,Regions=us-west-1,us-west-2
  3. 运行以下命令以查看工作流程执行情况。

    aws ssm describe-automation-executions --filters Key=ExecutionId,Values=ID
  4. 运行以下命令以查看有关执行进度的详细信息。

    aws ssm get-automation-execution --automation-execution-id ID

    注意

    您也可以在控制台中监控工作流程的状态。在执行列表中,选择您刚才运行的执行,然后选择步骤选项卡。该选项卡将显示工作流操作的状态。

相关内容

通过 AWS Systems Manager Automation 进行集中式多账户和多区域修补