AWS: Невозможно создать триггер для CodeCommit -> Lambda (eu-central-1)

Поскольку в AWS теперь доступны CodeCommit, CodeDeploy,... и другие регионы, я решил переместить некоторые из этих сервисов с eu-west-1 на eu-central-1, ближе к дому.

В существующей настройке я создал лямбда-функцию, которая запускается при отправке коммита в репозиторий CodeCommit и отправляет приятное уведомление об этом на наш канал Slack. Работает, отлично.

Но теперь, когда я попытался воссоздать ту же функциональность в eu-central-1 (Франкфурт), я застрял.

Я не могу создать триггер для CodeCommit для запуска лямбда-функции. Я пробовал в некоторых других регионах, и это работает без нареканий.

Я знаю это:

  • права, роли, политики и разрешения настроены правильно
  • это работает в других регионах
  • элемент фиксации кода отсутствует в списке триггеров при создании лямбда-функции
  • Если я пытаюсь создать триггер наоборот, начиная со стороны фиксации кода, я получаю сообщение об ошибке: AWS CodeCommit does not have access to the destination or the destination does not exist.

Любая идея, если запуск был забыт во время реализации CodeCommit в eu-central-1 или есть какие-то другие приемы, которые я могу попытаться заставить это работать?

Спасибо!

2 ответа

Решение

Я считаю, что проблема заключается в том, что в вашей функции Lambda может отсутствовать политика, которая позволяет CodeCommit вызывать вашу функцию. Если ваша новая лямбда-функция не определяет CodeCommit в качестве принципала, они не смогут вызывать вашу функцию.

Обычно самый простой способ получить эту политику - настроить триггер в консоли Lambda. К сожалению, поскольку CodeCommit недавно запущен в этих регионах, эта быстрая настройка еще не доступна. Тем не менее, вы все равно можете выполнить шаги ручной настройки, описанные здесь: http://docs.aws.amazon.com/codecommit/latest/userguide/how-to-notify-lambda-cc.html

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-разрешение api:

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

Это просто еще не доступно во Франкфурте. может попробовать вместо этого в Ирландии?

Другие вопросы по тегам