Pour transmettre des paramètres à votre fonction lambda, vous devez créer un mappage entre la demande API Gateway et votre fonction lambda. Le mappage est effectué dans la section Integration Request
-> Mapping templates
de la ressource API Gateway sélectionnée.
Créez un mappage de type application/json
, puis à droite vous éditez (cliquez sur le crayon) le modèle.
Un modèle de mappage est en fait un modèle Velocity où vous pouvez utiliser des ifs, des boucles et bien sûr imprimer des variables dessus. Le modèle a ces variables injectées où vous pouvez accéder individuellement aux paramètres de la chaîne de requête, demander les en-têtes, etc. Avec le code suivant, vous pouvez recréer la chaîne de requête entière:
{
"querystring" : "#foreach($key in $input.params().querystring.keySet())#if($foreach.index > 0)&#end$util.urlEncode($key)=$util.urlEncode($input.params().querystring.get($key))#end",
"body" : $input.json('$')
}
Remarque: cliquez sur le symbole de contrôle pour enregistrer le modèle. Vous pouvez tester vos modifications avec le bouton "test" de votre ressource. Mais pour tester les paramètres de la chaîne de requête dans la console AWS, vous devrez définir les noms des paramètres dans la Method Request
section de votre ressource.
Remarque: consultez le Guide de l'utilisateur Velocity pour plus d'informations sur le langage de modélisation Velocity.
Ensuite, dans votre modèle lambda, vous pouvez effectuer les opérations suivantes pour analyser la chaîne de requête:
var query = require('querystring').parse(event.querystring)
// access parameters with query['foo'] or query.foo