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

为 Run Command 配置 Amazon CloudWatch Logs

使用 Run Command 发送命令时,您可以指定要发送命令输出的位置。默认情况下,Systems Manager 仅返回命令输出的前 1200 个字符。如果您要查看命令输出的完整详情,可以指定 Amazon Simple Storage Service (Amazon S3) 存储桶。也可以指定 Amazon CloudWatch Logs。如果您指定 CloudWatch Logs,则 Run Command 会定期向 CloudWatch Logs 发送所有命令输出和错误日志。您可以近乎实时地监控输出日志,搜索特定短语、值或模式,及基于搜索创建警报。

如果您配置了实例或本地混合计算机来使用 AmazonEC2RoleforSSM AWS Identity and Access Management (IAM) 托管策略,则您的实例无需额外配置即可向 CloudWatch Logs 发送输出。如果从控制台发送命令,则您只需选择此选项;或者,如果使用 AWS CLI、Tools for Windows PowerShell 或 API 操作,则需添加 cloud-watch-output-config 部分和 CloudWatchOutputEnabled 参数。我们将在本主题的稍后内容中详细介绍 cloud-watch-output-config 部分和 CloudWatchOutputEnabled 参数。

如果您在多个实例上使用自定义策略,则必须在每个实例上更新此类策略,以允许 Systems Manager 向 CloudWatch Logs 发送输出和日志。将以下策略对象添加到您的自定义策略。有关更新 IAM 策略的更多信息,请参阅编辑 IAM 策略

{ "Effect":"Allow", "Action":[ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:PutLogEvents" ], "Resource":"*" },

在您发送命令时指定 CloudWatch Logs

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

如果您使用 AWS CLI 运行命令,则必须在您的命令中指定 cloud-watch-output-config 部分。此部分可让您指定 CloudWatchOutputEnabled 参数以及 CloudWatchLogGroupName 参数(可选)。示例如下:

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 中查看命令输出

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

CommandID/InstanceID/PluginID/stdout

CommandID/InstanceID/PluginID/stderr

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

注意

日志流仅在输出数据可用时创建。例如,如果执行不存在错误数据,则 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