web-dev-qa-db-fra.com

Utilisation d'une clé api dans la passerelle Amazon api

J'ai créé une clé d'api et l'a ajoutée à mes fonctions. J'ai ensuite déployé l'API et testé, mais toujours obtenir:

"message": "Forbidden"

Comment puis-je transmettre la clé api avec ma demande JSON car j'utilise "x-api-key": "theKey"?

34
cdub

Le paramètre x-api-key Est transmis en tant que paramètre d’en-tête HTTP (c’est-à-dire qu’il n’est pas ajouté au corps JSON). La manière dont vous passez les en-têtes HTTP dépend du client HTTP que vous utilisez.

Par exemple, si vous utilisez curl et supposez que vous POST la charge utile JSON, une requête ressemblera à quelque chose comme (où vous remplacez [api-id] Par l'id actuel et [region] Par Région AWS de votre 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
34
matsev

J'ai dû ajouter un plan d'utilisation de l'API, puis le lier à l'étape de l'API.

On dirait que c'est le seul moyen de lier la clé à l'API, sans savoir s'il s'agit d'une modification récente sur AWS.

41
TimoSolo

Si vous définissez l'option 'API Key Required' sur true, veuillez vérifier ci-dessous.

  1. vous devez passer le paramètre d'en-tête HTTP 'x-api-key' à la passerelle API.

  2. La clé API devait être créée.

  3. En outre, vous devez vérifier un plan d'utilisation pour la clé API sur la console API Gateway.

16
Daniel Jihoon Oh

J'espère que vous ne manquez pas de lier la clé API à l'API API-Gateway Configuration

15
Partha

Si vous définissez la clé 'API' requise sur true, vous devez transmettre la clé api en tant qu'en-tête.

La clé API est transmise sous le champ d’en-tête 'x-api-key'. Même après avoir ajouté ce champ dans l'en-tête, ce problème peut se produire. Dans ce cas, veuillez valider les points ci-dessous

  1. Avez-vous un plan d'utilisation? sinon besoin d'en créer un.
  2. Liez votre API au plan d'utilisation. Pour cela ajouter une étape, il faudra lier votre API
  3. Avez-vous une clé API? sinon, vous devez créer une clé API et l'activer.
  4. Ajoutez le plan d'utilisation associé à votre API à cette clé API. Pour cela, ajoutez Plan d'utilisation.
4
bisw

J'ai réussi à obtenir une réponse de Lambda en utilisant la configuration ci-dessous dans l'application native Postman -

Sous l'onglet autorisation (pour une raison quelconque, cela ne fonctionnait pas lorsque je passais les mêmes paramètres dans l'en-tête)

Clé: x-api-key

Valeur: your-api-key-value

Ajouter à: En-tête

1
Abhishek Poojary

Pour les passerelles d'API privées accessibles via un DNS public, nous devons passer un en-tête supplémentaire de 'x-apigw-api-id' avec l'identifiant de l'api ainsi que 'x-api-key', si elles sont configurées.

curl -v https: // {id-vpce} .execute-api. {région} .vpce.amazonaws.com/test -H 'x-apigw-api-id: {api-id}'

Son documenté ci-dessous,

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

0
msounthar