EventBridge 规则中用于发送到 Cloudwatch Logs 的事件的输入转换器不起作用

问题描述 投票:0回答:1

我有一个非常基本的设置,可以将我账户中的一些 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,但错误详细信息没有帮助

amazon-sqs amazon-cloudwatch aws-event-bridge
1个回答
0
投票

对于 CW Logs 作为目标,输入转换器需要遵循特定的格式。请参阅页面上的表部分“Amazon CloudWatch 日志组”https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-transform-target-input.html

© www.soinside.com 2019 - 2024. All rights reserved.