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"?
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
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.
Si vous définissez l'option 'API Key Required' sur true, veuillez vérifier ci-dessous.
vous devez passer le paramètre d'en-tête HTTP 'x-api-key' à la passerelle API.
La clé API devait être créée.
En outre, vous devez vérifier un plan d'utilisation pour la clé API sur la console API Gateway.
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
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
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,