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
Это просто еще не доступно во Франкфурте. может попробовать вместо этого в Ирландии?