403 запрещено от AWS - PullRequest
       24

403 запрещено от AWS

0 голосов
/ 29 марта 2020

Я закончил учебник Notes App на https://serverless-stack.com (единственное изменение - подключение к MongoDB). Приложение Notes было создано с использованием инфраструктуры ymls в разделе «Ресурсы». Все работает.

Затем я решил изменить serverless.yml и добавить обратно в прилагаемый API 'hello' (включая добавление обработчика. js в проект). Этот API просто возвращает сообщение. После этого я выполнил $serverless deploy —stage dev Приложение Notes продолжает работать.

Выполнение API-интерфейса hello в Amazon API Gateway дает 200, хорошо. Когда я запускаю npx aws-api-gateway-cli-test с —path-template=‘/hello’, это дает мне «403 запрещено». Когда я запускаю npx aws-api-gateway-cli-test с --path-template=‘/notes’, это дает мне 200, хорошо.

Я не понимаю, почему вызов 'hello' запрещен 403?

В сторону : причина, по которой я добавил предоставленный API hello, заключается в том, что я также настроил новый проект (так же, как приложение Notes), у которого возникла та же проблема - я не могу вызвать ни одного из это новые проекты API (которые я написал), поскольку все они дают «403 запрещено».

Вот «привет» API, как определено в serverless.yml:

  hello:
    handler: handler.hello
    events:
      - http:
          path: hello
          method: get
          authorizer: aws_iam

I проверили, что:

npx aws-api-gateway-cli-test вызывается с --path-template=’/hello’.

npx aws-api-gateway-cli-test по умолчанию GET.

--invoke-url=‘https://“ID”.execute-api.us-east-2.amazonaws.com/dev’ тоже выглядит нормально.

Путь определяется в serverless.yml как 'hello' с методом GET.

Обработчик называется handler.js и содержит функцию с именем hello (как указано в руководстве) .

При регистрации в API Gateway > Stages > dev URL-адрес вызова указывается как https://“ID”.execute-api.us-east-2.amazonaws.com/dev/hello. (В обоих случаях «ID» заменяется на правильный совпадающий ID без кавычек)

Единственное другое отличие от учебника в том, что я не подключаюсь к «Динамо», у меня нет iamRoleStatements, определенных в serverless.yml.

Любая помощь очень ценится, поскольку я совершенно новичок в этом. Спасибо.

1 Ответ

0 голосов
/ 29 марта 2020

Вы в основном ответили на свой вопрос

У меня нет iamRoleStatements

Необходимо убедиться, что для службы лямбды и шлюза API указаны правильные роли IAM. Они не приходят предварительно настроены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...