2016-11-20 3 views
0

Я использую AWS API Gateway с прокси-сервером Lambda, когда имя лямбда-функции входит в качестве переменной этапа. Значение У меня есть единая интеграция API, которая соединяется с соответствующей лямбдой в соответствии с развернутой стадией. Смотрите общую идею здесь: enter image description hereAWS API Gatewat с прокси-сервером Lambda: Недействительные разрешения для функции лямбда

Когда я тестирую один из моих этапов (так называемые: «постановка») все работает отлично, но при тестировании другой стадии («производство») Я получаю сообщение об ошибке «Не удалось завершить выполнение из-за к ошибке конфигурации: Недействительные разрешения для функции лямбда ".

Вещи, которые я уже испытал и проверял:
1. Оба лямбда, которые должны быть вызваны API, работают хорошо и, как ожидается, при тестировании с панели приборов лямбда.
2. Я убедился (много раз), что я дал разрешение на шлюз API для вызова моей лямбда-функции (то есть выполнил «aws lambda add-permission ...»). Я уже несколько раз проверял политику (т. Е. Выполнил «aws lambda get-policy ...»).

Любая идея, что еще я могу проверить? Что я мог забыть здесь? Спасибо.

enter image description here

ответ

-1

не могли» t найти причину, но нашел обходное решение, которое решило проблему. Вместо использования $ stageVariables в качестве имени функции Lambda я явно написал имена функции Lambda, которые я буду использовать один за другим. Таким образом AWS автоматически выдаст функции лямбда (для каждого из них явным образом напишу). После этого вы можете отредактировать интеграцию обратно к использованию переменных этапа.

enter image description here

1

Права доступа для вызова функции Lambda не создаются автоматически, когда функция Lambda задается в переменной стадии. Вы должны сделать это вручную:

aws lambda add-permission --function-name arn:aws:lambda:eu-west-1:111111111111:function:some-function:default --source-arn arn:aws:execute-api:eu-west-1:111111111111:xxxxxxxxxx/* --principal apigateway.amazonaws.com --statement-id 88b42004-f504-44d5-9adf-d027ee65a890 --action lambda:InvokeFunction 

(Вы должны заменить область, ваше имя функции лямбды и номер счета, а также ARN апи-шлюз в этом операторе.)

+0

Спасибо за ответ Digitalkapitaen, но, как я уже говорил в моем оригинальном вопросе - «Я сделал уверены (много раз), что я дал разрешение на шлюз API для вызова моей функции лямбды (т.е. выполняется "aws лямбда add-permission ...") ". – Shaish

+0

Я уверен, что вы сделали это с большой осторожностью. Однако ваш собственный ответ на вопрос, очевидно, показывает, что разрешения были установлены неправильно. Я думаю, что помечать этот ответ, поскольку это не полезно, проблематично, поскольку установка правильных разрешений - это решение проблемы, которую вы указали в своем вопросе. – Digitalkapitaen

+0

Проблема была, конечно, связана с разрешением (это ясно из самого вопроса - «... Неверное разрешение ...»), но этот конкретный ответ, к сожалению, не помогает. Ручная настройка разрешения с помощью этой команды просто не работает. Я считал, что ответ не помог, потому что я специально заявил, что использовал эту команду в своем первоначальном вопросе («aws ambda add-permission»), поэтому в основном ответ просто повторяет часть вопроса. С учетом сказанного, может быть, я слишком поспешил это сделать, и, возможно, ответ может быть полезен кому-то другому по другому сценарию. – Shaish

 Смежные вопросы

  • Нет связанных вопросов^_^