

• AWS Systems Manager CloudWatch 控制面板在 2026 年 4 月 30 日之后将不再可用。客户可以像现在一样继续使用 Amazon CloudWatch 控制台来查看、创建和管理其 Amazon CloudWatch 控制面板。有关更多信息，请参阅 [Amazon CloudWatch 控制面板文档](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)。

# 映射自动化目标
<a name="running-automations-map-targets"></a>

通过 `Targets` 参数，可以快速定义自动化的目标资源。例如，如果需要运行一个重新启动托管实例的自动化，不必在控制台中手动选择数十个实例 ID 或在命令中键入它们，您可以通过使用 `Targets` 参数指定 Amazon Elastic Compute Cloud (Amazon EC2) 标签将实例设为目标。

运行使用目标的自动化时，AWS Systems Manager 会为每个目标创建一个子自动化。例如，如果您通过指定标签将 Amazon Elastic Block Store (Amazon EBS) 卷指定为目标，并且这些标签解析为 100 个 Amazon EBS 卷，则 Systems Manager 创建 100 个子自动化。当所有子自动化都到达最终状态时，父自动化完成。

**注意**  
在运行时指定的任何 `input parameters`（在控制台的**输入参数**部分或在命令行中使用 `parameters` 选项）都由所有子自动化自动处理。

您可以使用标签、Resource Groups 和参数值为自动化设置目标资源。此外，您还可以使用 `TargetMaps` 选项在命令行或文件中将多个参数值设为目标。下一节更详细地介绍每个设置目标选项。

## 设置目标标签
<a name="target-tags"></a>

您可以指定单个标签作为自动化目标。多个 AWS 资源支持标签，包括 Amazon Elastic Compute Cloud (Amazon EC2) 和 Amazon Relational Database Service (Amazon RDS) 实例、Amazon Elastic Block Store (Amazon EBS) 卷和快照、Resource Groups 以及 Amazon Simple Storage Service (Amazon S3) 存储桶（仅举几例）。您可以通过设置目标标签在 AWS 资源上快速运行自动化。标签是一种键值对，例如 Operating\$1System:Linux 或 Department:Finance。如果为资源指定一个特定名称，则还可以使用“Name”作为键，将资源名称用作值。

在将标签指定为自动化目标时，还可以指定目标参数。目标参数使用 `TargetParameterName` 选项。通过选择目标参数，可以定义在其上运行自动化的资源的类型。使用标签指定的目标参数必须是运行手册中定义的有效参数。例如，如果要使用标签将数十个 EC2 实例设为目标，请选择 `InstanceId` 目标参数。通过选择此参数，可以将*实例* 定义为自动化的资源类型。在创建自定义运行手册时，您必须将**目标类型**指定为 `/AWS::EC2::Instance`，以确保仅使用实例。否则，所有具有相同标签的资源都将被设置为目标。使用标签定位实例时，可能会包括已终止的实例。

下面的屏幕截图使用 `AWS-DetachEBSVolume` 运行手册。逻辑目标参数为 `VolumeId`。

![\[使用标签作为 Systems Manager Automation 的目标\]](http://docs.aws.amazon.com/zh_cn/systems-manager/latest/userguide/images/automation-rate-control-tags-1-new.png)


`AWS-DetachEBSVolume` 运行手册还包含一个名为**目标类型**的特殊属性，设置为 `/AWS::EC2::Volume`。这意味着，如果标签键对 `Finance:TestEnv` 返回不同类型的资源（例如，EC2 实例、Amazon EBS 卷、Amazon EBS 快照），则仅使用 Amazon EBS 卷。

**重要**  
目标参数名称区分大小写。如果使用 AWS Command Line Interface (AWS CLI) 或 AWS Tools for Windows PowerShell 运行自动化，则必须完全按照运行手册中的定义输入目标参数名称。否则，系统将返回 `InvalidAutomationExecutionParametersException` 错误。您可以使用 [DescribeDocument](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DescribeDocument.html) API 操作来查看有关特定运行手册中可用目标参数的信息。下面是一个示例 AWS CLI 命令，其中提供有关 `AWS-DeleteSnapshot` 文档的信息。  

```
aws ssm describe-document \
    --name AWS-DeleteSnapshot
```

下面是一些使用标签设置资源目标的示例 AWS CLI 命令。

**示例 1：使用键值对将标签指定为目标以重启 Amazon EC2 实例**

此示例重新启动带有键为 *Department*、值为 *HumanResources* 的标签的所有 Amazon EC2 实例。目标参数使用运行手册中的 *InstanceId* 参数。该示例使用了一个附加参数，通过使用自动化服务角色（也称为*担任角色*）来运行自动化。

```
aws ssm start-automation-execution \
    --document-name AWS-RestartEC2Instance \
    --targets Key=tag:Department,Values=HumanResources \
    --target-parameter-name InstanceId \
    --parameters "AutomationAssumeRole=arn:aws:iam::111122223333:role/AutomationServiceRole"
```

**示例 2：使用键值对将标签指定为目标以删除 Amazon EBS 快照**

下面的示例使用 `AWS-DeleteSnapshot` 运行手册删除键为 *Name*、值为 *January2018Backups* 的所有快照。目标参数使用 *VolumeId* 参数。

```
aws ssm start-automation-execution \
    --document-name AWS-DeleteSnapshot \
    --targets Key=tag:Name,Values=January2018Backups \
    --target-parameter-name VolumeId
```

## 设置目标 AWS Resource Groups
<a name="target-resource-groups"></a>

您可以指定单个 AWS 资源组作为自动化目标。Systems Manager 为目标资源组中的每个对象创建一个子自动化。

例如，假设您的一个 Resource Groups 名为 PatchedAMIs。此资源组包括一个列表，其中有 25 个定期进行修补的 Windows Amazon Machine Images (AMIs)。如果您运行使用 `AWS-CreateManagedWindowsInstance` 运行手册并以此资源组为目标的自动化，则 Systems Manager 会为 25 个 AMIs 中的每一个创建一个子自动化。也就是说，通过将 PatchedAMIs 资源组设置为目标，自动化会从修补的 AMIs 列表中创建 25 个实例。当所有子自动化都完成处理或到达最终状态时，父自动化完成。

下面的 AWS CLI 命令适用于此 PatchAMIs 资源组示例。该命令中，`--target-parameter-name` 选项采用 *AmiId* 参数。该命令不包含定义从每个 AMI 创建的实例类型的附加参数。`AWS-CreateManagedWindowsInstance` 运行手册默认为 t2.medium 实例类型，因此该命令将创建 25 个适用于 Windows Server 的 t2.medium Amazon EC2 实例。

```
aws ssm start-automation-execution \
    --document-name AWS-CreateManagedWindowsInstance \
    --targets Key=ResourceGroup,Values=PatchedAMIs  \
    --target-parameter-name AmiId
```

下面的控制台示例使用名为 t2-micro-instances 的资源组。

![\[将具有 Systems Manager 自动化功能的 AWS 资源组设为目标\]](http://docs.aws.amazon.com/zh_cn/systems-manager/latest/userguide/images/automation-rate-control-resource-groups-new.png)


## 设置目标参数值
<a name="target-parameter-values"></a>

您也可以将参数值设置为目标：输入 `ParameterValues` 作为键，然后输入要在其上运行自动化的特定资源值。如果指定多个值，Systems Manager 将在指定的每个值上运行子自动化。

例如，假设运行手册包含 **InstanceID** 参数。如果在运行此自动化时将 **InstanceID** 参数值设置为目标，则 Systems Manager 会为指定的每个实例 ID 值运行一个子自动化。当自动化完成每个指定实例的运行或执行失败时，父自动化完成。您最多可以将 50 个参数值设置为目标。

以下示例使用 `AWS-CreateImage` 运行手册。指定的目标参数名称为 *InstanceId*。键使用 *ParameterValues*。值为两个 Amazon EC2 实例 ID。此命令为每个实例创建一个自动化，这将从每个实例生成一个 AMI。

```
aws ssm start-automation-execution 
    --document-name AWS-CreateImage \
    --target-parameter-name InstanceId \
    --targets Key=ParameterValues,Values=i-02573cafcfEXAMPLE,i-0471e04240EXAMPLE
```

**注意**  
`AutomationAssumeRole` 不是有效的参数。运行以参数值为目标的自动化时，不要选择此项。

### 设置目标参数值映射
<a name="target-maps"></a>

`TargetMaps` 选项扩展了您设置 `ParameterValues` 目标的能力。您可以在命令行中使用 `TargetMaps` 输入一个参数值数组。在命令行中，最多可以指定 50 个参数值。如果要运行指定 50 个以上参数值的命令，请在 JSON 文件中输入这些值。然后，可以在命令行中调用该文件。

**注意**  
控制台中不支持 `TargetMaps` 选项。

在命令中使用 `TargetMaps` 选项以下面的格式指定多个参数值。将每个*示例资源占位符*替换为您自己的信息。

```
aws ssm start-automation-execution \
    --document-name runbook name \
    --target-maps “parameter=value, parameter 2=value, parameter 3=value”  “parameter 4=value, parameter 5=value, parameter 6=value”
```

如果要为 `TargetMaps` 选项输入 50 个以上的参数值，请使用以下 JSON 格式在文件中指定这些值。在提供多个参数值时，使用 JSON 文件还有助于提高可读性。

```
[

    {“parameter”: "value", “parameter 2”: "value", “parameter 3”: "value"},

    {“parameter 4”: "value", “parameter 5”: "value", "parameter 6": "value"}

]
```

使用 .json 文件扩展名保存该文件。可以使用下面的命令调用此文件。将每个*示例资源占位符*替换为您自己的信息。

```
aws ssm start-automation-execution \
    --document-name runbook name \
    –-parameters input parameters \
    --target-maps path to file/file name.json
```

您还可以从 Amazon Simple Storage Service (Amazon S3) 存储桶下载此文件，前提是您有权从存储桶读取数据。使用下面的命令格式。将每个*示例资源占位符*替换为您自己的信息。

```
aws ssm start-automation-execution \
    --document-name runbook name \
    --target-maps http://amzn-s3-demo-bucket.s3.amazonaws.com/file_name.json
```

下面是一个帮助您了解 `TargetMaps` 选项的示例方案。在此方案中，用户想要从不同的 AMIs 创建不同类型的 Amazon EC2 实例。为了执行此任务，用户创建一个名为 AMI\$1Testing 的运行手册。此运行手册定义两个输入参数：`instanceType` 和 `imageId`。

```
{
  "description": "AMI Testing",
  "schemaVersion": "0.3",
  "assumeRole": "{{assumeRole}}",
  "parameters": {
    "assumeRole": {
      "type": "String",
      "description": "Role under which to run the automation",
      "default": ""
    },
    "instanceType": {
      "type": "String",
      "description": "Type of EC2 Instance to launch for this test"
    },
    "imageId": {
      "type": "String",
      "description": "Source AMI id from which to run instance"
    }
  },
  "mainSteps": [
    {
      "name": "runInstances",
      "action": "aws:runInstances",
      "maxAttempts": 1,
      "onFailure": "Abort",
      "inputs": {
        "ImageId": "{{imageId}}",
        "InstanceType": "{{instanceType}}",
        "MinInstanceCount": 1,
        "MaxInstanceCount": 1
      }
    }
  ],
  "outputs": [
    "runInstances.InstanceIds"
  ]
}
```

然后，用户在名为 `AMI_instance_types.json` 的文件中指定以下目标参数值。

```
[
  {
    "instanceType" : ["t2.micro"],     
    "imageId" : ["ami-b70554c8"]     
  },
  {
    "instanceType" : ["t2.small"],     
    "imageId" : ["ami-b70554c8"]     
  },
  {
    "instanceType" : ["t2.medium"],     
    "imageId" : ["ami-cfe4b2b0"]     
  },
  {
    "instanceType" : ["t2.medium"],     
    "imageId" : ["ami-cfe4b2b0"]     
  },
  {
    "instanceType" : ["t2.medium"],     
    "imageId" : ["ami-cfe4b2b0"]     
  }
]
```

用户可以通过运行以下命令来运行此自动化并创建在 `AMI_instance_types.json` 中定义的五个 EC2 实例：

```
aws ssm start-automation-execution \
    --document-name AMI_Testing \
    --target-parameter-name imageId \
    --target-maps file:///home/TestUser/workspace/runinstances/AMI_instance_types.json
```

## 将所有 Amazon EC2 实例设置为目标
<a name="target-all-instances"></a>

您可以通过选择**目标**列表中的**所有实例**，在当前 AWS 账户 和 AWS 区域 中的所有 Amazon EC2 实例上运行自动化。例如，如果要重新启动 AWS 账户 和当前 AWS 区域 的所有 Amazon EC2 实例，您可以选择 `AWS-RestartEC2Instance` 运行手册，然后选择**目标**列表中的**所有实例**。

![\[将运行手册的所有 Amazon EC2 实例设置为目标\]](http://docs.aws.amazon.com/zh_cn/systems-manager/latest/userguide/images/automation-rate-control-target-all-instances.png)


在您选择**所有实例**后，Systems Manager 将填充带有星号 (\$1) 的**实例**字段，并使字段不可更改（该字段呈灰色）。Systems Manager 还会使 **InstanceId** 字段中的**输入参数**字段不可更改。如果您选择将所有实例设置为目标，则使这些字段不可更改是预期行为。