我试图让AWS Lambda函数在新图像被推送到AWS容器注册表时运行。我创建并测试了功能正常的功能。然后,我创建了一个简单的CloudWatch事件规则,其模式为:
{
"source": [
"aws.ecr"
]
}
我认为这将引发ECR的任何事件。
该规则具有lambda函数的目标。问题是当新图像被推送到注册表(或删除等)时,不会调用该函数。 CloudWatch日志中没有显示该功能。事件规则中是否缺少某些内容或诊断可能出错的方法?
答案 0 :(得分:6)
CloudTrail会记录PutImage事件,并可将其写入CloudWatch Logs。只要在CloudWatch Logs中写入PutImage
事件,就可以触发警报,这可以通过SNS进一步触发Lambda函数。
您可以创建一个Logs Metric Filter,就像这样。
{ ($.eventSource = ecr.amazonaws.com) && ($.eventName = PutImage) && ($.requestParameters.repositoryName = “<RepoName>”) && ($.errorCode NOT EXISTS) }
或
您需要配置ECR CloudTrail API调用事件。
{
"source": [
"aws.ecr"
],
"detail-type": [
"AWS API Call via CloudTrail"
],
"detail": {
"eventSource": [
"ecr.amazonaws.com"
]
}
}