

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

# 为 Run Command 配置 Amazon CloudWatch Logs
<a name="sysman-rc-setting-up-cwlogs"></a>

使用 Run Command（AWS Systems Manager 中的一项工具）发送命令时，可以指定要发送命令输出的位置。预设情况下，Systems Manager 仅返回命令输出的前 2.4 万个字符。如果您要查看命令输出的完整详细信息，可以指定 Amazon Simple Storage Service (Amazon S3) 存储桶。或者可以指定 Amazon CloudWatch Logs。如果指定 CloudWatch Logs，则 Run Command 会向 CloudWatch Logs 定期发送所有命令输出和错误日志。您可以近乎实时地监控输出日志，搜索特定短语、值或模式，以及基于搜索创建告警。

如果将托管节点配置为使用 AWS Identity and Access Management（IAM）托管策略 `AmazonSSMManagedInstanceCore` 和 `CloudWatchAgentServerPolicy`，则您的节点不需要进行额外配置即可将输出发送到 CloudWatch Logs。如果从控制台发送命令，请选择此选项；如果使用 AWS Command Line Interface (AWS CLI)、AWS Tools for Windows PowerShell 或 API 操作，则请添加 `cloud-watch-output-config` 部分和 `CloudWatchOutputEnabled` 参数。我们将在本主题的稍后内容中详细介绍 `cloud-watch-output-config` 部分和 `CloudWatchOutputEnabled` 参数。

有关将策略添加到 EC2 实例的实例配置文件的信息，请参阅[配置 Systems Manager 所需的实例权限](setup-instance-permissions.md)。有关将策略添加到打算用作托管式节点的本地服务器和虚拟机的服务角色的信息，请参阅[在混合和多云环境中创建 Systems Manager 所需的 IAM 服务角色](hybrid-multicloud-service-role.md)。

如果在多个节点上使用一个自定义策略，请在每个节点上更新该策略，以允许 Systems Manager 向 CloudWatch Logs 发送输出和日志。将以下策略对象添加到您的自定义策略。有关更新 IAM policy 的更多信息，请参阅《IAM 用户指南》中的[编辑 IAM policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)。

```
{
    "Effect": "Allow",
    "Action": "logs:DescribeLogGroups",
    "Resource": "*"
},
{
   "Effect":"Allow",
   "Action":[
      "logs:CreateLogGroup",
      "logs:CreateLogStream",
      "logs:DescribeLogStreams",
      "logs:PutLogEvents"
   ],
   "Resource":"arn:aws:logs:*:*:log-group:/aws/ssm/*"
},
```

## 在发送命令时指定 CloudWatch Logs
<a name="sysman-rc-setting-up-cwlogs-send"></a>

要在您从AWS 管理控制台发送命令时将 CloudWatch Logs 指定为输出，请在 **Output options (输出选项)** 部分选择 **CloudWatch Output (CloudWatch 输出)**。您可以选择在您要发送命令输出的位置指定 CloudWatch Logs 组的名称。如果您未指定组名称，则 Systems Manager 会自动为您创建一个日志组。该日志组使用以下命名格式：`/aws/ssm/SystemsManagerDocumentName`

如果使用 AWS CLI 运行命令，请在命令中指定 `cloud-watch-output-config` 部分。此部分使您能够指定 `CloudWatchOutputEnabled` 参数，并可选择指定 `CloudWatchLogGroupName` 参数。见下列。

------
#### [ Linux & macOS ]

```
aws ssm send-command \
    --instance-ids "instance ID" \
    --document-name "AWS-RunShellScript" \
    --parameters "commands=echo helloWorld" \
    --cloud-watch-output-config "CloudWatchOutputEnabled=true,CloudWatchLogGroupName=log group name"
```

------
#### [ Windows ]

```
aws ssm send-command ^
    --document-name "AWS-RunPowerShellScript" ^
    --parameters commands=["echo helloWorld"] ^
    --targets "Key=instanceids,Values=an instance ID” ^
    --cloud-watch-output-config '{"CloudWatchLogGroupName":"log group name","CloudWatchOutputEnabled":true}'
```

------

## 在 CloudWatch Logs 中查看命令输出
<a name="sysman-rc-setting-up-cwlogs-view"></a>

一旦命令开始运行，Systems Manager 便会近乎实时地向 CloudWatch Logs 发送输出。CloudWatch Logs 中的输出使用以下格式：

`CommandID/InstanceID/PluginID/stdout` 

`CommandID/InstanceID/PluginID/stderr`

执行的输出每 30 秒或当缓冲区超过 200KB 时（以先发生者为准）上载一次。

**注意**  
日志流仅在输出数据可用时创建。例如，如果执行不存在错误数据，则不会创建 stderr 流。

此处是命令输出在 CloudWatch Logs 中显示时的示例。

```
Group - /aws/ssm/AWS-RunShellScript
Streams – 
1234-567-8910/i-abcd-efg-hijk/AWS-RunPowerShellScript/stdout
24/1234-567-8910/i-abcd-efg-hijk/AWS-RunPowerShellScript/stderr
```