Использование ключа 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". Даже после добавления этого поля в заголовок, эта проблема может возникнуть. В этом случае, пожалуйста, подтвердите ниже пункты
- У вас есть план использования? если не нужно его создавать.
- Свяжите свой API с Планом использования. Для этого добавьте этап, он свяжет ваш API
- У вас есть API Key? если нет, вам нужно создать ключ API и включить его.
- Добавьте план использования, связанный с вашим 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-ключ-значение
Добавить к: Заголовок