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

时间:2017-05-30 06:15:31

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

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

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

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

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

我知道:

  • 正确设置权限,角色,政策和权限
  • 适用于其他地区
  • 创建Lambda函数时,触发器列表中缺少代码提交项
  • 如果我尝试以相反的方式创建触发器,从代码提交方面开始,我收到一个错误: AWS CodeCommit does not have access to the destination or the destination does not exist.

在eu-central-1中执行CodeCommit期间是否忘记了触发是否有任何想法,或者我是否可以尝试使用其他技巧?

谢谢!

2 个答案:

答案 0 :(得分:2)

我认为问题在于您的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 add-permission api:

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

答案 1 :(得分:0)

法兰克福尚未公布。也许在爱尔兰试一试?