运行多个自动化Amazon Web Services 区域账户和 - Amazon Web Services Systems Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

运行多个自动化Amazon Web Services 区域账户和

您可以运行Amazon Web Services Systems Manager跨多个自动化Amazon Web Services 区域和Amazon Web Services 账户或者Amazon组织单位 (OU) 从 Automation 管理帐户。自动化是Amazon Web Services Systems Manager。在多个区域和账户或 OU 中运行 Automation 可减少管理Amazon资源,同时增强计算环境的安全性。

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

注意

跨多个区域和账户运行自动化时,可以使用标签或Amazon资源组。资源组必须存在于每个目标账户和区域中,并且资源组名称在每个目标账户和区域中必须相同。Automation 不会在没有指定标签或未包含在指定资源组中的资源上运行。

重要

您的账户将产生与在多个区域和账户中运行 Automation 关联的费用。考虑多区域和账户步骤特殊步骤。特殊步骤没有步骤限制,但 Systems Manager 处理的每个步骤都会向您的账户收费。有关更多信息,请参阅Amazon Web Services Systems Manager 定价页面。

如何使用

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

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

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

  3. 使用本主题中的过程创建名为AWS-SystemsManager-AutomationExecutionRole。此角色为用户提供运行自动化所用的权限。

  4. 使用本主题中的过程创建第二个 IAM 角色(名为AWS-SystemsManager-AutomationAdministrationRole。此角色为用户提供在多个Amazon Web Services 账户和 OU。

  5. 选择 Runbook、区域和要运行自动化的账户或 OU。

    注意

    Automation 不会通过 OU 递归运行。确保目标 OU 包含所需的账户。

  6. 运行 Automation。在多个区域、帐户或 OU 之间运行自动化时,从主帐户运行的自动化将在每个目标帐户中启动子自动化。主帐户中的自动化将具有aws:executeAutomation每个目标帐户的步骤。

  7. 使用GetAutomationExecutionDescribeAutomationStepExecutions, 和DescribeAutomationExecutions的 API 操作Amazon Web Services Systems Manager控制台或AmazonCLI 来监控自动化进度。您的主帐户中自动化步骤的输出将是AutomationExecutionId子自动化。要查看在目标帐户中创建的子自动化的输出,请确保指定相应的帐户、地区和AutomationExecutionId在您的请求中。

设置进行多区域和多账户自动化的管理账户权限

按照以下过程操作,使用创建进行 Systems Manager Automation 多区域和多账户自动化所需的 IAM 角色。Amazon CloudFormation。此过程介绍如何创建AWS-SystemsManager-AutomationExecutionRole角色。您必须在EAREY账户,以运行多区域和多账户自动化。我们建议使用Amazon CloudFormationStackSets 用于创建AWS-SystemsManager-AutomationExecutionRole角色,以运行多区域和多账户 Automation。

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

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

  1. 下载并解压缩AWS-SystemsManager-AutomationExecutionRole.zip文件。此文件包含AWS-SystemsManager-AutomationExecutionRole.json Amazon CloudFormation模板文件。

    注意

    我们建议不要将模板中指定的角色名称更改为AWS-SystemsManager-AutomationExecutionRole。否则,您的多区域和多账户 Automation 可能会失败。

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

  3. 选择创建堆栈

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

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

  6. 选择 Next

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

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

  9. 选择 Next

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

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

  12. 选择创建

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

  13. 在中重复此步骤EAREY账户,以运行多区域和多账户自动化。

  14. 下载AWS-SystemManager-AutomationAdministrationRole.zip文件并重复此过程AWS-SystemManager-AutomationAdministrationRole角色。您只需创建AWS-SystemManager-AutomationAdministrationRole角色的 Automation 管理帐户中。

    注意

    您用于运行多区域或多账户自动化的 IAM 用户或角色必须具有iam:PassRole的权限AWS-SystemManager-AutomationAdministrationRole角色。我们建议不要将模板中指定的角色名称更改为 AWS-SystemsManager-AutomationAdministrationRole 之外的其他内容。否则,您的多区域和多账户 Automation 可能会失败。

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

以下过程介绍了如何使用 Systems Manager 控制台在 Automation 管理账户的多个区域和账户中运行 Automation。

开始前的准备工作

在完成以下过程之前,请记下以下信息:

  • Amazon Web Services 账户要在其中运行自动化的 ID 或 OU。

  • Systems Manager 支持的区域要在其中运行自动化的位置。

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

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

  1. 打开Amazon Web Services Systems Manager控制台https://console.aws.amazon.com/systems-manager/

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

  3. 自动化文档列表中,选择运行手册。选择一个或多个选项,在文档类别窗格可根据 SSM 文档的用途过滤它们。要查看您拥有的 Runbook,请选择我拥有的选项卡 要查看与您的帐户共享的 Runbook,请选择与我共享选项卡 要查看所有运行手册,请选择所有文档选项卡

    注意

    可以通过选择一个运行手册名称来查看有关该手册的信息。

  4. 文档详细信息部分中,验证文档版本设置为要在步骤中运行的版本。系统包括以下版本选项:

    • 运行时默认版本:如果定期更新 Automation Runbook 并指定新的默认版本,请选择此选项。

    • 运行时的最新版本:如果定期更新 Automation Runbook,并且需要运行最新更新版本,请选择此选项。

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

  5. 选择 Next

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

  7. 目标账户和区域部分中,使用帐户和组织 (OU)字段指定不同的Amazon Web Services 账户或者Amazon要在其中运行 Automation 的组织单位 (OU)。使用逗号分隔多个账户或 OU。

  8. 使用Amazon Web Services 区域列表以选择要在其中运行自动化的一个或多个区域。

  9. 使用多区域和账户汇率控制选项将 Automation 限制为在有限区域中运行的有限账户运行。这些选项不限制Amazon可以运行自动化的资源。

    1. 位置(帐户-区域对)并发部分中,选择一个选项以限制可同时在多个账户和区域中运行的 Automation 的数量。例如,如果您选择在五 (5) 中运行自动化Amazon Web Services 账户, 它们位于四 (4)Amazon Web Services 区域,然后 Systems Manager 在总共 20 个帐户区域对中运行自动化。您可以使用此选项指定一个绝对数量,例如2,以等待 Automation 同时在两个账户-区域对中运行。或者,您也可以指定可同时运行的账户-区域对的百分比。例如,对于 20 个账户-区域对,如果您指定 20%,则 Automation 在最多五 (5) 个账户-区域对中同时运行。

      • 选择targets输入可同时运行自动化的账户-区域对的绝对数量。

      • 选择百分比输入可同时运行自动化的账户-区域对总数的百分比。

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

      • 选择错误输入 Automation 停止将自动化发送到其他资源之前允许的错误的绝对数量。

      • 选择百分比输入 Automation 停止将 Automation 发送到其他资源之前允许的错误的百分比。

  10. 目标部分中,选择所需的目标方式Amazon要在其中运行 Automation 的资源。这些选项是必需的。

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

    2. 使用 Targets (目标) 列表选择设置目标资源的方式。

      1. 如果选择使用参数值将资源设置为目标,请输入您在输入参数部分。

      2. 在选择通过使用AmazonResource Groups,然后从Resource Group列表。

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

      4. 如果要在当前Amazon Web Services 账户和Amazon Web Services 区域,然后选择所有实例

  11. Input parameters (输入参数) 部分中,指定所需的输入。或者,您可以从AutomationAssumeRole列表。

    注意

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

  12. 使用速率控制部分,以限制Amazon资源,这些资源可以在每个帐户-区域对中运行自动化。

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

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

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

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

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

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

  14. 选择 Execute (执行)

在多个区域和账户中运行 Automation(命令行)

以下过程介绍如何使用AmazonCLI(在 Linux 或 Windows 上)或AmazonTools for PowerShell 在 Automation 管理账户的多个区域和账户中运行自动化的工具。

开始前的准备工作

在完成以下过程之前,请记下以下信息:

  • Amazon Web Services 账户要在其中运行自动化的 ID 或 OU。

  • Systems Manager 支持的区域要在其中运行自动化的位置。

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

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

  1. 安装和配置AmazonCLI 或AmazonTools for PowerShell,如果您还没有。

    想要了解有关信息,请参阅安装或升级Amazon命令行工具

  2. 使用以下格式创建一个命令,以便在多个区域和账户中运行自动化。

    Linux & macOS
    aws ssm start-automation-execution \ --document-name name_of_runbook \ --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
    Windows
    aws ssm start-automation-execution ^ --document-name name_of_runbook ^ --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
    PowerShell
    $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target $Targets.Key = "target_key" $Targets.Values = "target_value" Start-SSMAutomationExecution ` -DocumentName "name_of_runbook" ` -Parameter @{ "AutomationAssumeRole"="arn:aws:iam::Automation_management_account_ID:role/AWS-SystemsManager-AutomationAdministrationRole" } ` -TargetParameterName "parameter_name (required)" ` -Target $Targets ` -TargetLocation @{ "Accounts"="account_ID_1","account_ID_2","account_ID_3"; "Regions"="Region_1","Region_2"; "ExecutionRoleName"="AWS-SystemsManager-AutomationExecutionRole" }

    下面是几个示例。

    示例 1:此示例重新启动 EC2 实例123456789012987654321098帐户,这些帐户位于us-east-2us-west-1区域。必须使用标签键对值 Env-PROD 标记这些实例。

    Linux & macOS
    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=123456789012,987654321098,Regions=us-east-2,us-west-1,ExecutionRoleName=AWS-SystemsManager-AutomationExecutionRole
    Windows
    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=123456789012,987654321098,Regions=us-east-2,us-west-1,ExecutionRoleName=AWS-SystemsManager-AutomationExecutionRole
    PowerShell
    $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target $Targets.Key = "tag:Env" $Targets.Values = "PROD" Start-SSMAutomationExecution ` -DocumentName "AWS-RestartEC2Instance" ` -Parameter @{ "AutomationAssumeRole"="arn:aws:iam::123456789012:role/AWS-SystemsManager-AutomationAdministrationRole" } ` -TargetParameterName "InstanceId" ` -Target $Targets ` -TargetLocation @{ "Accounts"="123456789012","987654321098"; "Regions"="us-east-2","us-west-1"; "ExecutionRoleName"="AWS-SystemsManager-AutomationExecutionRole" }

    示例 2:此示例重新启动 EC2 实例123456789012987654321098帐户,这些帐户位于eu-central-1区域。这些实例必须是 prod-instances Amazon 资源组的成员。

    Linux & macOS
    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=123456789012,987654321098,Regions=eu-central-1,ExecutionRoleName=AWS-SystemsManager-AutomationExecutionRole
    Windows
    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=123456789012,987654321098,Regions=eu-central-1,ExecutionRoleName=AWS-SystemsManager-AutomationExecutionRole
    PowerShell
    $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target $Targets.Key = "ResourceGroup" $Targets.Values = "prod-instances" Start-SSMAutomationExecution ` -DocumentName "AWS-RestartEC2Instance" ` -Parameter @{ "AutomationAssumeRole"="arn:aws:iam::123456789012:role/AWS-SystemsManager-AutomationAdministrationRole" } ` -TargetParameterName "InstanceId" ` -Target $Targets ` -TargetLocation @{ "Accounts"="123456789012","987654321098"; "Regions"="eu-central-1"; "ExecutionRoleName"="AWS-SystemsManager-AutomationExecutionRole" }

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

    Linux & macOS
    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,ExecutionRoleName=AWS-SystemsManager-AutomationExecutionRole
    Windows
    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,ExecutionRoleName=AWS-SystemsManager-AutomationExecutionRole
    PowerShell
    $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target $Targets.Key = "ResourceGroup" $Targets.Values = "WebServices" Start-SSMAutomationExecution ` -DocumentName "AWS-RestartEC2Instance" ` -Parameter @{ "AutomationAssumeRole"="arn:aws:iam::123456789012:role/AWS-SystemsManager-AutomationAdministrationRole" } ` -TargetParameterName "InstanceId" ` -Target $Targets ` -TargetLocation @{ "Accounts"="ou-1a2b3c-4d5e6c"; "Regions"="us-west-1"; "ExecutionRoleName"="AWS-SystemsManager-AutomationExecutionRole" }

    系统返回类似于以下内容的信息。

    Linux & macOS
    {
        "AutomationExecutionId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
    }
    Windows
    {
        "AutomationExecutionId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
    }
    PowerShell
    4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE
  3. 运行以下命令以查看有关自动化的详细信息。

    Linux & macOS
    aws ssm describe-automation-executions \ --filters Key=ExecutionId,Values=4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE
    Windows
    aws ssm describe-automation-executions ^ --filters Key=ExecutionId,Values=4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE
    PowerShell
    Get-SSMAutomationExecutionList | ` Where {$_.AutomationExecutionId -eq "a4a3c0e9-7efd-462a-8594-01234EXAMPLE"}
  4. 运行以下命令以查看有关自动化进度的详细信息。

    Linux & macOS
    aws ssm get-automation-execution \ --automation-execution-id 4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE
    Windows
    aws ssm get-automation-execution ^ --automation-execution-id 4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE
    PowerShell
    Get-SSMAutomationExecution ` -AutomationExecutionId a4a3c0e9-7efd-462a-8594-01234EXAMPLE
    注意

    您也可以在控制台中监控自动化的状态。在Automation 执行列表中,选择刚才运行的自动化,然后选择执行步骤选项卡 该选项卡显示了自动化操作的状态。

集中式多账户和多区域修补Amazon Web Services Systems Manager自动化