AWS:无法为 CodeCommit -> Lambda (eu-central-1) 创建触发器

AWS: Can't create a trigger for CodeCommit -> Lambda (eu-central-1)

由于 AWS 已经启用了 CodeCommit、CodeDeploy...现在在其他地区也可用,我决定将其中一些服务从 eu-west-1 移动到 eu-central- 1,离家比较近。

在现有设置中,我创建了一个 lambda 函数,当提交被推送到 CodeCommit 存储库时会触发该函数,并向我们的 Slack 通道发送有关它的良好通知。很好用,很好。

但是现在,当我尝试在 eu-central-1(法兰克福) 中重新创建相同的功能时,我陷入了困境。

我似乎无法为 CodeCommit 创建触发器来触发 Lambda 函数。我已经在其他一些地区试过了,它完美无缺。

我知道:

知道在 eu-central-1 中执行 CodeCommit 期间是否忘记了触发,或者是否有任何其他技巧我可以尝试使其正常工作?

谢谢!

它在法兰克福尚不可用。也许改在爱尔兰试试?

我认为问题在于您的 Lambda 函数可能缺少允许 CodeCommit 调用您的函数的策略。如果您的新 lambda 函数未将 CodeCommit 指定为委托人,他们将无法调用您的函数。

通常,拥有此策略的最简单方法是在 Lambda 控制台中设置触发器。不幸的是,由于 CodeCommit 是在这些地区新推出的,因此这种快速设置尚不可用。但是,您仍然可以按照此处概述的手动设置步骤操作:http://docs.aws.amazon.com/codecommit/latest/userguide/how-to-notify-lambda-cc.html#how-to-notify-lam-perm

TLDR:

创建一个 json 文件 'AllowAccessfromMyDemoRepo.json':

{
    "FunctionName": "MyCodeCommitFunction", 
    "StatementId": "1", 
    "Action": "lambda:InvokeFunction", 
    "Principal": "codecommit.amazonaws.com", 
    "SourceArn": "arn:aws:codecommit:eu-central-1:80398EXAMPLE:MyDemoRepo", 
    "SourceAccount": "80398EXAMPLE"
}

运行 Lambda 添加权限 api:

aws lambda add-permission --cli-input-json file://AllowAccessfromMyDemoRepo.json