0

由于 AWS 已启用 CodeCommit、CodeDeploy... 现在在其他区域也可用,因此我决定将其中一些服务从 eu-west-1 移至离家更近的eu-central-1 。

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

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

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

我知道:

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

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

谢谢!

4

2 回答 2

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 -烫发

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
于 2017-05-30T18:05:24.087 回答
0

它在法兰克福还没有。也许在爱尔兰尝试一下?

于 2017-05-30T07:51:19.987 回答