我有一个非常基本的设置,可以将我账户中的一些 AWS 事件写入 CloudWatch 日志组。
有模式的规则
{
"detail-type": ["Batch Job State Change"],
"source": ["aws.batch"]
}
目标 类型 CloudWatch 日志组 并使用现有的日志组
如果我选择“匹配事件”作为目标输入,它会完美工作,所有预期事件都在日志中可见。
如果我切换到“输入变压器”
输入路径:
{"eventId":"$.id","jobId":"$.detail.jobId","jobName":"$.detail.jobName","jobQueue":"$.detail.jobQueue","jobStatus":"$.detail.status","jobTime":"$.time"}
带有模板:
{
"id": "<eventId>",
"time": "<jobTime>",
"detail": {
"jobName": "<jobName>",
"jobId": "<jobId>",
"jobQueue": "<jobQueue>",
"status": "<jobStatus>"
}
}
事件不会出现在日志中。我可以在规则监控中看到现在有失败的调用。
因此我将 SQS 配置为规则的 DLQ。
它现在显示了预期的转换事件,正文看起来像预期的那样,就像输入转换器更改的消息一样。
SQS 消息的属性如下:
ERROR_CODE String SDK_CLIENT_ERROR
ERROR_MESSAGE String Unknown exception.
RULE_ARN String arn:aws:events:<my region>:<my account>:rule/<my rule name>
TARGET_ARN String arn:aws:logs:<my region>:<my account>:log-group:<my log group>
我有基于资源的策略,因此可以将事件写入 CloudWatch,因为如果使用“匹配事件”,它可以正常工作。我不知道缺少什么。另一项 IAM 政策?
我咨询过: https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-input-transformer-tutorial.html https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-transform-input-rule.html
我成功尝试使用“匹配事件”进行基本设置,并发现发送到 CloudWatch 日志的消息。 我希望在 CloudWatch 日志中找到转换后的事件消息。 出于调试目的,我在 SQS 中配置了 DLS,但错误详细信息没有帮助
对于 CW Logs 作为目标,输入转换器需要遵循特定的格式。请参阅页面上的表部分“Amazon CloudWatch 日志组”https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-transform-target-input.html