通过EventBridge规则调度执行SSM文档时,如何发送Run Command日志?
用EventBridge调度SSM文档时,获取Run Command执行日志的方法
1. 先写好能捕获输出的SSM文档
针对Linux的Hello World脚本,你的SSM文档得明确捕获脚本输出,示例如下:
schemaVersion: '2.2' description: 运行Hello World脚本并抓取输出 mainSteps: - action: aws:runShellScript name: runHelloWorld inputs: runCommand: - echo "Hello World" workingDirectory: /tmp
这里用aws:runShellScript动作,它会自动捕获脚本的标准输出和错误输出,后续可以通过日志配置导出。
2. 给Run Command配置日志输出目标
不管是手动执行还是EventBridge触发,都得指定日志要存哪儿——CloudWatch Logs、S3都行,也可以同时选。如果是EventBridge调度,配置步骤如下:
- 创建EventBridge规则时,选Run Command作为目标,关联你写好的SSM文档
- 在目标的Run Command参数里,找到CloudWatch Logs选项:
- 勾选「启用CloudWatch Logs」,指定日志组名(比如
/aws/ssm/HelloWorldLogs,不存在会自动创建) - 要是想存S3,就勾选「将输出发送到S3」,填好桶名和前缀
- 勾选「启用CloudWatch Logs」,指定日志组名(比如
- 别忘了给EventBridge用的IAM角色加权限:
- 要能操作CloudWatch Logs的话,得有
logs:CreateLogGroup、logs:CreateLogStream、logs:PutLogEvents权限 - 存S3的话,得有
s3:PutObject权限
- 要能操作CloudWatch Logs的话,得有
3. 查看执行日志的几种方式
EventBridge触发Run Command后,你可以通过这几个地方找日志:
- CloudWatch Logs:进CloudWatch控制台,找到你指定的日志组,对应实例ID的日志流里就有脚本输出(比如
Hello World) - SSM控制台:进SSM > Run Command > 命令历史,找到对应的执行记录,点「查看输出」就能直接看标准输出和错误输出
- S3桶:如果配置了S3输出,指定路径下会生成日志文件,里面有完整的执行详情和输出
踩坑提醒
- 目标机器必须装了且在运行SSM Agent,不然根本执行不了文档,更别说发日志
- IAM角色权限一定要配对,不然日志传不上去
- 脚本的错误输出也会被捕获,排查问题的时候有用
内容的提问来源于stack exchange,提问作者Noobmaster
相关产品推荐
相关产品推荐

