Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisation de variables d'étape Amazon API Gateway
Vous pouvez utiliser les variables d'étape API Gateway pour accéder aux backends HTTP et Lambda pour différentes étapes de déploiement de l'API. Vous pouvez également utiliser des variables d'étape pour transmettre les métadonnées de configuration spécifiques à une étape dans un backend HTTP en tant que paramètre de requête et dans une fonction Lambda en tant que charge utile générée dans un modèle de mappage en entrée.
Prérequis
Vous devez créer deux étapes avec une variable d'étape url définie sur deux points de terminaison HTTP différents : une variable d'étape function affectée à deux fonctions Lambda différentes et une variable d'étape stageName qui contient les métadonnées spécifiques à l'étape.
Accès à un point de terminaison HTTP via une API avec une variable d'étape
-
Dans le volet de navigation Stages, sélectionnez beta. Sous Détails de l'étape, choisissez l'icône de copie pour copier l'URL d'invocation de votre API, puis saisissez l'URL d'invocation de votre API dans un navigateur web. Cela lance la demande
GET
de l'étape beta sur la ressource racine de l'API.Note
Le lien Invoke URL pointe sur la ressource racine de l'API à l'étape beta. L'entrée de l'URL dans un navigateur web appelle la méthode
GET
à l'étape bêta sur la ressource racine. Si les méthodes sont définies sur les ressources enfants et non sur la ressource racine elle-même, l'entrée de l'URL dans un navigateur web renvoie une réponse d'erreur{"message":"Missing Authentication Token"}
. Dans ce cas, vous devez ajouter le nom d'une ressource enfant spécifique au lien Invoke URL. -
La réponse renvoyée par la demande
GET
à l'étape beta est présentée ci-dessous. Vous pouvez également vérifier le résultat en utilisant un navigateur pour accéder à l'adresse http://httpbin.org/get. Cette valeur a été affectée à la variableurl
à l'étape beta. Les deux réponses sont identiques. -
Dans le volet de navigation Stages, sélectionnez l'étape prod. Sous Détails de l'étape, choisissez l'icône de copie pour copier l'URL d'invocation de votre API, puis saisissez l'URL d'invocation de votre API dans un navigateur web. Cela lance la demande
GET
de l'étape prod sur la ressource racine de l'API. -
La réponse renvoyée par la demande
GET
à l'étape prod est présentée ci-dessous. Vous pouvez vérifier le résultat en utilisant un navigateur pour accéder à http ://petstore-demo-endpoint.execute-api.com/petstore/pets. Cette valeur a été affectée à la variableurl
à l'étape prod. Les deux réponses sont identiques.
Transmission des métadonnées spécifiques à l'étape à un backend HTTP via une variable d'étape dans une expression de paramètre de requête
Cette procédure explique comment utiliser une valeur de variable d'étape dans une expression de paramètre de requête pour transmettre les métadonnées spécifiques à l'étape à un backend HTTP. Nous allons utiliser la variable d'étape stageName
déclarée dans la section Définition de variables d'étape à l'aide de la console Amazon API Gateway.
-
Dans le volet de navigation Resource, sélectionnez la méthode GET.
Pour ajouter un paramètre de chaîne de requête à l'URL de la méthode, sélectionnez l'onglet Demande de méthode, puis dans la section Paramètres de la demande de méthode, choisissez Modifier.
Choisissez Paramètres de chaîne de requête d'URL et procédez comme suit :
Sélectionnez Add query string (Ajouter une chaîne de requêtes).
Pour Name (Nom), saisissez
stageName
.Gardez Obligatoire et Mise en cache désactivés.
Choisissez Enregistrer.
-
Choisissez l'onglet Demande d'intégration, puis dans la section Paramètres de la demande d'intégration, sélectionnez Modifier.
Pour URL du point de terminaison, ajoutez
?stageName=${stageVariables.stageName}
à la valeur d'URL définie précédemment, de sorte que l'URL du point de terminaison soithttp://${stageVariables.url}?stageName=${stageVariables.stageName}
.-
Choisissez Déployer l'API et sélectionnez l'étape bêta.
-
Dans le volet de navigation principal, choisissez Étapes. Dans le volet de navigation Stages, sélectionnez beta. Sous Détails de l'étape, choisissez l'icône de copie pour copier l'URL d'invocation de votre API, puis saisissez l'URL d'invocation de votre API dans un navigateur web.
Note
Nous utilisons ici l'étape beta, car le point de terminaison HTTP spécifié par la variable
url
, « http://httpbin.org/get », accepte les expressions de paramètre de requête et les renvoie en tant qu'objetargs
dans sa réponse. -
Vous recevez la réponse suivante. Notez que la valeur
beta
, affectée à la variable d'étapestageName
, est transmise au backend en tant qu'argumentstageName
.
Appel d'une fonction Lambda via une API avec une variable d'étape
Cette procédure explique comment utiliser une variable d'étape pour appeler une fonction Lambda en tant que backend de votre API. Nous allons utiliser la variable d'étape function
déclarée précédemment. Pour de plus amples informations, veuillez consulter Définition de variables d'étape à l'aide de la console Amazon API Gateway.
-
Créez une Fonction Lambda nommée
HelloWorld
à l'aide de l'exécution Node.js par défaut. Le code doit contenir ce qui suit :export const handler = function(event, context, callback) { if (event.stageName) callback(null, 'Hello, World! I\'m calling from the ' + event.stageName + ' stage.'); else callback(null, 'Hello, World! I\'m not sure where I\'m calling from...'); };
Pour plus d'informations sur la création d'une Fonction Lambda, consultez Bien démarrer avec la console d'API REST.
-
Dans le volet Ressources, sélectionnez Créer une ressource, puis procédez comme suit :
Pour Chemin de ressources, sélectionnez /.
Sous Resource Name (Nom de la ressource), entrez
lambdav1
.Choisissez Créer une ressource.
-
Choisissez la ressource /lambdav1, puis choisissez Create method.
Ensuite, procédez comme suit :
Pour Type de méthode, sélectionnez GET.
Pour Type d'intégration, sélectionnez Fonction Lambda.
Maintenez Intégration proxy Lambda désactivée.
Sous Lambda function (Fonction Lambda), saisissez
${stageVariables.function}
.Astuce
Lorsque vous y êtes invité avec la commande Ajouter une autorisation, copiez la commande de l'interface de ligne de commande AWS . Exécutez la commande sur chaque Fonction Lambda qui sera affectée à la variable d'étape
function
. Par exemple, si la$stageVariables.function
valeur estHelloWorld
, exécutez la AWS CLI commande suivante :aws lambda add-permission --function-name arn:aws:lambda:us-east-1:
account-id
:function:HelloWorld --source-arn arn:aws:execute-api:us-east-1:account-id
:api-id
/*/GET/lambdav1 --principal apigateway.amazonaws.com --statement-idstatement-id-guid
--action lambda:InvokeFunctionSi vous ne le faites pas, l'appel de la méthode renverra une réponse
500 Internal Server Error
. Remplacez${stageVariables.function}
par le nom de la Fonction Lambda qui est affectée à la variable d'étape.-
Choisissez Créer une méthode.
-
Déployez l'API vers les deux étapes
prod
etbeta
. -
Dans le volet de navigation principal, choisissez Étapes. Dans le volet de navigation Stages, sélectionnez beta. Sous Détails de l'étape, choisissez l'icône de copie pour copier l'URL d'invocation de votre API, puis saisissez l'URL d'invocation de votre API dans un navigateur web. Ajoutez
/lambdav1
à l'URL avant d'appuyer sur Entrée.Vous recevez la réponse suivante.
"Hello, World! I'm not sure where I'm calling from..."
Transmission des métadonnées spécifiques à l'étape à une fonction Lambda via une variable d'étape
Cette procédure explique comment utiliser une variable d'étape pour transmettre les métadonnées de configuration spécifiques à l'étape à une fonction Lambda. Vous créez une méthode POST
et un modèle de mappage d'entrée pour générer la charge utile à l'aide de la variable d'étape stageName
déclarée précédemment.
-
Choisissez la ressource /lambdav1, puis choisissez Create method.
Ensuite, procédez comme suit :
Pour Type de méthode, sélectionnez POST.
Pour Type d'intégration, sélectionnez Fonction Lambda.
Maintenez Intégration proxy Lambda désactivée.
Sous Lambda function (Fonction Lambda), saisissez
${stageVariables.function}
.Lorsque vous y êtes invité avec la commande Ajouter une autorisation, copiez la commande de l'interface de ligne de commande AWS . Exécutez la commande sur chaque Fonction Lambda qui sera affectée à la variable d'étape
function
.Choisissez Créer une méthode.
-
Choisissez l'onglet Demande d'intégration, puis dans la section Paramètres de la demande d'intégration, sélectionnez Modifier.
Choisissez Modèles de mappage, puis choisissez Ajouter un modèle de mappage.
Pour Type de contenu, entrez
application/json
.Pour Corps du modèle, entrez le modèle suivant :
#set($inputRoot = $input.path('$')) { "stageName" : "$stageVariables.stageName" }
Note
Dans un modèle de mappage, une variable d'étape doit être référencée entre guillemets (comme dans
"$stageVariables.stageName"
ou"${stageVariables.stageName}"
). Dans d'autres endroits, il doit être référencé sans guillemets (comme dans${stageVariables.function}
).Choisissez Enregistrer.
-
Déployez l'API vers les deux étapes
beta
etprod
. -
Pour utiliser un client d'API REST afin de transmettre des métadonnées spécifiques à l'étape, procédez comme suit :
Dans le volet de navigation Stages, sélectionnez beta. Sous Détails de l'étape, choisissez l'icône de copie pour copier l'URL d'invocation de votre API, puis entrez l'URL d'invocation de votre API dans le champ d'entrée d'un client d'API REST. Ajoutez
/lambdav1
avant de soumettre votre demande.Vous recevez la réponse suivante.
"Hello, World! I'm calling from the beta stage."
Dans le volet de navigation Étapes, choisissez prod. Sous Détails de l'étape, choisissez l'icône de copie pour copier l'URL d'invocation de votre API, puis entrez l'URL d'invocation de votre API dans le champ d'entrée d'un client d'API REST. Ajoutez
/lambdav1
avant de soumettre votre demande.Vous recevez la réponse suivante.
"Hello, World! I'm calling from the prod stage."
-
Pour utiliser la fonctionnalité Test afin de transmettre des métadonnées spécifiques à l'étape, procédez comme suit :
Dans le volet de navigation Ressources, choisissez l'onglet Test. Vous devrez peut-être choisir la flèche droite pour afficher l'onglet.
Pour function, entrez
HelloWorld
.Pour stageName, entrez
beta
.Sélectionnez Tester). Vous n'avez pas besoin d'ajouter de corps à votre demande
POST
.Vous recevez la réponse suivante.
"Hello, World! I'm calling from the beta stage."
Vous pouvez répéter les étapes précédentes pour tester l'étape Prod. Pour stageName, entrez
Prod
.Vous recevez la réponse suivante.
"Hello, World! I'm calling from the prod stage."