Использование ключа api в шлюзе amazon api

Я создал ключ API и добавил его в свои функции. Затем я развернул API и протестировал его, но все равно получаю:

"message": "Forbidden"

Как передать ключ api с моим JSON-запросом, когда я использовал "x-api-key": "theKey"?

Ответ 1

Параметр x-api-key передается как параметр заголовка HTTP (т.е. Он не добавляется в тело JSON). Способ передачи HTTP-заголовков зависит от используемого вами HTTP-клиента.

Например, если вы используете завиток и при условии, что вы POST полезной нагрузки JSON, запрос будет выглядеть примерно так (где вы заменить [api-id] с действительным идентификатором и [region] с AWS областью вашего API):

$ curl -X POST -H "x-api-key: theKey" -H "Content-Type: application/json" -d '{"key":"val"}' https://[api-id].execute-api.[region].amazonaws.com

Ответ 2

Мне пришлось добавить план использования API, а затем связать план со стадией API.

Похоже, что это единственный способ связать ключ с API, не уверен, что это недавнее изменение в AWS.

Ответ 3

Я надеюсь, что вам не хватает ссылки на ключ API с API Конфигурация API-шлюза

Ответ 4

Если вы установите для параметра "API-ключ обязательно" значение "Истина", проверьте ниже.

  • вам необходимо передать "HTTP-заголовок" x-api-key в API Gateway.

  • Ключ API должен был быть создан.

  • Кроме того, вам нужно проверить План использования для ключа API на консоли API Gateway.

Ответ 5

Если для ключа 'API' требуется значение true, вам необходимо передать ключ API в качестве заголовка.

Ключ API передается как поле заголовка "x-api-key". Даже после добавления этого поля в заголовок, эта проблема может возникнуть. В этом случае, пожалуйста, подтвердите ниже пункты

  1. У вас есть план использования? если не нужно его создавать.
  2. Свяжите свой API с Планом использования. Для этого добавьте этап, он свяжет ваш API
  3. У вас есть API Key? если нет, вам нужно создать ключ API и включить его.
  4. Добавьте план использования, связанный с вашим API, в этот ключ API. Для этого добавьте план использования.

Ответ 6

Для частных шлюзов API, доступ к которым осуществляется через общедоступный DNS, нам необходимо передать дополнительный заголовок "x-apigw-api-id" с идентификатором api вместе с "x-api-key", если он настроен.

curl -v https://{vpce-id}.execute-api. {регион}.vpce.amazonaws.com/test -H 'x-apigw-api-id: {api-id}'

Его документировано ниже,

https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-api-test-invoke-url.html#w20aac13c16c28c11

Ответ 7

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

На вкладке авторизации (по какой-то причине это не сработало, когда я передал те же параметры под заголовком)

Ключ: X-API-ключ

Значение: ваш-api-ключ-значение

Добавить к: Заголовок