代码之家  ›  专栏  ›  技术社区  ›  theduck

ECR事件后触发AWS lambda函数

  •  9
  • theduck  · 技术社区  · 7 年前

    我试图让一个AWS Lambda函数在新图像被推送到AWS容器注册表时运行。我已经创建并测试了这个功能,效果很好。然后,我用以下模式创建了一个简单的CloudWatch事件规则:

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

    我相信这会在ECR的任何事件中触发。

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

    1 回复  |  直到 7 年前
        1
  •  10
  •   joeymiller    7 年前

    CloudTrail记录PutImage事件,并可以将其写入CloudWatch日志。只要发生以下情况,就会触发警报: PutImage 事件写在CloudWatch日志中,可以通过SNS进一步触发Lambda函数。

    您可以创建一个日志度量过滤器,类似这样。

    { ($.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"
        ]
      }
    }