在ECR事件后触发AWS lambda函数

时间:2017-11-21 15:32:47

标签: amazon-web-services aws-lambda amazon-cloudwatch

我试图让AWS Lambda函数在新图像被推送到AWS容器注册表时运行。我创建并测试了功能正常的功能。然后,我创建了一个简单的CloudWatch事件规则,其模式为:

{
  "source": [
    "aws.ecr"
  ]
}

我认为这将引发ECR的任何事件。

该规则具有lambda函数的目标。问题是当新图像被推送到注册表(或删除等)时,不会调用该函数。 CloudWatch日志中没有显示该功能。事件规则中是否缺少某些内容或诊断可能出错的方法?

1 个答案:

答案 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"
    ]
  }
}