如何解决设置为从CloudTrail触发的CloudWatch规则不会触发Lambda函数,除非我创建一个Trail来将CloudTrail日志存储在S3存储桶中
当在AWS Certificate Manager中引发RequestCertificate
事件时,我试图触发Lambda函数。
为此,我使用以下语法创建了CloudWatch规则:
{
"source": [
"aws.acm"
],"detail-type": [
"AWS API Call via CloudTrail"
],"detail": {
"eventSource": [
"acm.amazonaws.com"
],"eventName": [
"RequestCertificate"
]
}
}
此规则具有Lambda函数作为目标。我已确保Lambda函数具有正确执行所需的所有权限。
但是,当我在ACM上请求证书时,即使RequestCertificate
事件出现在CloudTrail事件历史记录中也不会触发Lambda。
要解决此问题,我必须创建一个Trail,将CloudTrail日志存储在S3存储桶中。完成此操作后,Lambda现在可以正确触发了。
问题是,文档(https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/Create-CloudWatch-Events-CloudTrail-Rule.html)中未指定。
所以我想知道这是否是预期的行为,或者我的CloudWatch Rule首先是否有问题。
谢谢。
解决方法
与AWS支持团队联系后,他们确认,如果详细信息类型为AWS API Call via CloudTrail
,并且您未启用CloudTrail跟踪,则不会收到任何事件。因此,创建S3存储桶是必经之路。
以下是他们的完整答复,以防它可以帮助其他人:
是的,如果详细信息类型为“通过CloudTrail进行AWS调用”,则cloudtrail 应该启用才能获取事件。
对于事件模式,如果您指定“通过CloudTrail进行AWS API调用”,则 您未启用CloudTrail追踪,您将不会收到事件 一样。
仅在不发出服务/ API的情况下才需要CloudTrail 直接执行CloudWatch事件。仅在这种情况下,我们需要 监视CloudTrail API调用以触发CloudWatch事件 规则。 API操作记录在CloudTrail中,并将 可用于CloudWatch事件进行匹配。只要有任何API调用 登录到CloudTrail并指定服务名称和API调用 在CloudWatch事件规则中与API登录的规则匹配 CloudTrail,将触发CloudWatch事件规则。例如。 S3对象 水平放置API操作不会向 CloudWatch,因此在这种情况下,我们需要捕获相应的 来自CloudTrail事件的API调用。但是某些服务发出 CloudWatch事件直接针对其执行的任何特定操作。在 在这种情况下,我们不需要使用CloudTrail进行触发 CloudWatch活动。例如。 EC2停止实例操作直接发出 事件到CloudWatch。在这种情况下,我们无需将CloudTrail用于 为CloudWatch Event规则捕获这些事件。
对于ACM,您需要将cloudtrail事件启用为ACM 直接不会将特定事件省略给cloudwatch。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。