Tutoriel : Création d'une Calc API REST avec deux intégrations AWS de services et une intégration Lambda sans proxy - Amazon API Gateway

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.

Tutoriel : Création d'une Calc API REST avec deux intégrations AWS de services et une intégration Lambda sans proxy

Le didacticiel Démarrez avec les intégrations non-proxy utilise l'intégration Lambda Function exclusivement. L'intégration Lambda Function est un cas particulier du type d'intégration AWS Service qui effectue une grande partie de la configuration de l'intégration pour vous, comme l'ajout automatique des autorisations basées sur les ressources requises pour appeler la fonction Lambda. Ici, deux des trois intégrations utilisent l'intégration AWS Service. Ce type d'intégration offre davantage de contrôle, mais vous devez exécuter manuellement les tâches telles que la création et la spécification d'un rôle IAM contenant les autorisations appropriées.

Dans ce tutoriel, vous allez créer une fonction Lambda Calc pour implémenter les opérations arithmétiques de base, en acceptant et en renvoyant des données d'entrée et de sortie au format JSON. Ensuite, vous allez créer une API REST et l'intégrer à la fonction Lambda de différentes manières :

  1. En exposant une méthode GET sur la ressource /calc pour appeler la fonction Lambda, en fournissant l'entrée en tant que paramètres de chaîne de requête. (Intégration AWS Service)

  2. En exposant une méthode POST sur la ressource /calc pour appeler la fonction Lambda, en fournissant l'entrée dans la charge utile de la demande de méthode. (Intégration AWS Service)

  3. En exposant une méthode GET sur les ressources /calc/{operand1}/{operand2}/{operator} imbriquées pour appeler la fonction Lambda, en fournissant les données d'entrée en tant que paramètres de chemin. (Intégration Lambda Function)

Outre ce tutoriel, vous pouvez vous reporter au fichier de définitions OpenAPI pour l'API Calc, que vous pouvez importer dans API Gateway en suivant les instructions de Configuration d'une API REST à l'aide d'OpenAPI.

Création d'un rôle IAM assumable

Pour que votre API invoque votre fonction Lambda Calc, vous devez disposer d'un rôle IAM assumable API Gateway, qui est un rôle IAM ayant la relation de confiance suivante :

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "apigateway.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Le rôle que vous créez doit disposer de l'autorisation Lambda InvokeFunction. Dans le cas contraire, l'appelant d'API recevra une réponse 500 Internal Server Error. Pour accorder cette autorisation au rôle, vous devez lui attacher la stratégie IAM suivante :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "*" } ] }

Voici comment procéder :

Création d'un rôle IAM assumable API Gateway
  1. Connectez-vous à la console IAM.

  2. Sélectionnez Roles.

  3. Choisissez Create Role (Créer le rôle).

  4. Sous Sélectionner un type d’entité de confiance, choisissez AWS Service.

  5. Sous Choose the service that will use this role (Choisir le service qui utilisera ce rôle), choisissez Lambda.

  6. Sélectionnez Next: Permissions (Suivant : autorisations).

  7. Choisissez Create Policy (Créer une politique).

    Une nouvelle fenêtre de console Create Policy (Créer une politique) s'ouvre. Dans cette fenêtre, procédez de la façon suivante :

    1. Dans l'onglet JSON, remplacez la politique existante par la suivante :

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "*" } ] }
    2. Choisissez Examiner une politique.

    3. Sous Review Policy (Examiner une politique), procédez comme suit :

      1. Pour Nom, tapez un nom, par exemple lambda_execute.

      2. Choisissez Créer une politique.

  8. Dans la fenêtre de console d'origine Create Role (Créer un rôle), procédez comme suit :

    1. Sous Attach permissions policies (Attacher des politiques d'autorisations), choisissez votre politique lambda_execute dans la liste déroulante.

      Si votre politique n'est pas répertoriée dans la liste, cliquez sur le bouton d'actualisation en haut de la liste. (N'actualisez pas la page du navigateur.)

    2. Choisissez Next:Tags (Suivant : balises).

    3. Choisissez Next: Review (Suivant : vérifier).

    4. Sous Role name (Nom du rôle), saisissez un nom tel que lambda_invoke_function_assume_apigw_role.

    5. Sélectionnez Créer un rôle.

  9. Choisissez votre rôle lambda_invoke_function_assume_apigw_role dans la liste.

  10. Choisissez l'onglet Trust relationships.

  11. Choisissez Modifier la relation d'approbation.

  12. Remplacez la stratégie existante comme suit :

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com", "apigateway.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  13. Choisissez Update Trust Policy.

  14. Notez l'ARN du rôle que vous venez de créer. Vous en aurez besoin ultérieurement.

Création d'une fonction Lambda Calc

Vous créerez ensuite une fonction Lambda à l'aide de la console Lambda.

  1. Dans la console Lambda, choisissez Create function (Créer une fonction).

  2. Choisissez Créer à partir de zéro.

  3. Pour Nom, saisissez Calc.

  4. Pour Exécution, choisissez le dernier environnement d’exécution Node.js ou Python compatible.

  5. Choisissez Créer une fonction.

  6. Copiez la fonction Lambda suivante dans votre environnement d’exécution préféré et collez-la dans l’éditeur de code de la console Lambda.

    Node.js
    export const handler = async function (event, context) { console.log("Received event:", JSON.stringify(event)); if ( event.a === undefined || event.b === undefined || event.op === undefined ) { return "400 Invalid Input"; } const res = {}; res.a = Number(event.a); res.b = Number(event.b); res.op = event.op; if (isNaN(event.a) || isNaN(event.b)) { return "400 Invalid Operand"; } switch (event.op) { case "+": case "add": res.c = res.a + res.b; break; case "-": case "sub": res.c = res.a - res.b; break; case "*": case "mul": res.c = res.a * res.b; break; case "/": case "div": if (res.b == 0) { return "400 Divide by Zero"; } else { res.c = res.a / res.b; } break; default: return "400 Invalid Operator"; } return res; };
    Python
    import json def lambda_handler(event, context): print(event) try: (event['a']) and (event['b']) and (event['op']) except KeyError: return '400 Invalid Input' try: res = { "a": float( event['a']), "b": float( event['b']), "op": event['op']} except ValueError: return '400 Invalid Operand' if event['op'] == '+': res['c'] = res['a'] + res['b'] elif event['op'] == '-': res['c'] = res['a'] - res['b'] elif event['op'] == '*': res['c'] = res['a'] * res['b'] elif event['op'] == '/': if res['b'] == 0: return '400 Divide by Zero' else: res['c'] = res['a'] / res['b'] else: return '400 Invalid Operator' return res
  7. Sous Execution role (Rôle d'exécution), choisissez Choose an existing role (Choisir un rôle existant).

  8. Entrez l'ARN du rôle lambda_invoke_function_assume_apigw_role que vous avez créé précédemment.

  9. Choisissez Deploy (Déployer).

Cette fonction nécessite deux opérandes (a et b) et un opérateur (op) à partir du paramètre d'entrée event. L'entrée est un objet JSON au format suivant :

{ "a": "Number" | "String", "b": "Number" | "String", "op": "String" }

Cette fonction renvoie le résultat calculé (c) et les données d'entrée. En cas d'entrée non valide, la fonction renvoie la valeur null ou la chaîne « Opération non valide » en tant que résultat. La sortie est au format JSON suivant :

{ "a": "Number", "b": "Number", "op": "String", "c": "Number" | "String" }

Vous devez tester la fonction dans la console Lambda avant de l'intégrer à l'API dans l'étape suivante.

Test de la fonction Lambda Calc

Voici comment tester la fonction Calc dans la console Lambda :

  1. Choisissez l’onglet Test.

  2. Entrez comme nom de l'événement de tes calc2plus5.

  3. Remplacez la définition de l'événement de test par ce qui suit :

    { "a": "2", "b": "5", "op": "+" }
  4. Choisissez Save (Enregistrer).

  5. Sélectionnez Test (Tester).

  6. Développez Résultat de l'exécution : réussite. Vous devez voir ce qui suit :

    { "a": 2, "b": 5, "op": "+", "c": 7 }

Création d'une API Calc

La procédure suivante explique comment créer une API pour la fonction Lambda Calc que vous venez de créer. Dans les sections suivantes, vous allez y ajouter des ressources et des méthodes.

Pour créer une API
  1. Connectez-vous à la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway.

  2. Si vous utilisez API Gateway pour la première fois, vous voyez une page qui vous présente les fonctions du service. Sous REST API (API REST), choisissez Build (Création). Lorsque la fenêtre contextuelle Create Example API (Créer API exemple) s'affiche, cliquez sur OK.

    Si ce n'est pas la première fois que vous utilisez API Gateway, choisissez Create API (Créer une API). Sous REST API (API REST), choisissez Build (Création).

  3. Sous API name (Nom de l'API), saisissez LambdaCalc.

  4. (Facultatif) Sous Description, entrez une description.

  5. Laissez Type de point de terminaison d'API défini sur Régional.

  6. Sélectionnez Create API (Créer une API).

Intégration 1 : Création d'une méthode GET avec des paramètres de requête pour appeler la fonction Lambda

Lorsque vous créez une méthode GET qui transmet les paramètres de chaîne de requête à la fonction Lambda, vous permettez à l'API d'être appelée à partir d'un navigateur. Cette approche peut s'avérer utile, en particulier pour les API qui autorisent un accès ouvert.

Une fois que vous avez créé une API, vous créez une ressource. En règle générale, les ressources API sont organisées dans une arborescence des ressources selon la logique de l'application. Pour cette étape, vous créez une ressource /calc.

Pour créer une ressource /calc
  1. Choisissez Créer une ressource.

  2. Maintenez Ressource proxy désactivée.

  3. Conservez Chemin de la ressource sous la forme /.

  4. Sous Resource Name (Nom de la ressource), entrez calc.

  5. Maintenez CORS (Partage des ressources entre origines multiples) désactivé.

  6. Choisissez Créer une ressource.

Lorsque vous créez une méthode GET qui transmet les paramètres de chaîne de requête à la fonction Lambda, vous permettez à l'API d'être appelée à partir d'un navigateur. Cette approche peut s'avérer utile, en particulier pour les API qui autorisent un accès ouvert.

Dans cette méthode, Lambda exige que la requête POST soit utilisée pour invoquer une fonction Lambda. Cet exemple montre que la méthode HTTP dans une demande de méthode de serveur frontal peut être différente de la demande d'intégration sur le backend.

Pour créer une méthode GET
  1. Sélectionnez la ressource /calc, puis choisissez Créer une méthode.

  2. Pour Type de méthode, sélectionnez GET.

  3. Pour Type d’intégration, sélectionnez Service AWS.

  4. Pour Région AWS, sélectionnez l' Région AWS endroit où vous avez créé votre fonction Lambda.

  5. Pour Service AWS, sélectionnez Lambda.

  6. Laissez Sous-domaine AWS vide.

  7. Pour Méthode HTTP, sélectionnez POST.

  8. Pour Type d’action, sélectionnez Utiliser un remplacement de chemin. Cette option nous permet de spécifier l'ARN de l'action Invoke (Appel) pour exécuter notre fonction Calc.

  9. Pour Remplacement de chemin, saisissez 2015-03-31/functions/arn:aws:lambda:us-east-2:account-id:function:Calc/invocations. Pour account-id, entrez votre Compte AWS identifiant. Pourus-east-2, entrez l' Région AWS endroit où vous avez créé votre fonction Lambda.

  10. Pour Rôle d’exécution, saisissez l’ARN de rôle pour lambda_invoke_function_assume_apigw_role.

  11. Ne modifiez pas les paramètres de Cache d’informations d’identification et de Délai d’attente par défaut.

  12. Choisissez Créer une méthode.

Maintenant, vous allez configurer les paramètres de requête pour la méthode GET sur la ressource /calc de sorte qu’elle reçoive l’entrée au nom de la fonction Lambda du backend.

Pour configurer les paramètres de chaîne de requête
  1. Dans l'onglet Demande de méthode, sous Paramètre de demande de méthode, choisissez Modifier.

  2. Pour Validateur de requête, sélectionnez Valider les paramètres de chaîne de requête et les en-têtes. Ce paramètre renvoie un message d’erreur si le client ne spécifie pas les paramètres requis.

  3. Choisissez Paramètres de chaîne de requête d'URL et procédez comme suit :

    1. Sélectionnez Add query string (Ajouter une chaîne de requêtes).

    2. Pour Name (Nom), saisissez operand1.

    3. Activez Obligatoire.

    4. Maintenez Mise en cache désactivée.

    Répétez les mêmes étapes et créez une chaîne de requête nommée operand2 et une chaîne de requête nommée operator.

  4. Choisissez Enregistrer.

Maintenant, vous créez un modèle de mappage afin de convertir les chaînes de requête fournies par le client en la charge utile de requête d’intégration, comme requis par la fonction Calc. Ce modèle mappe les trois paramètres de chaîne de requête déclarés dans Requête de méthode aux valeurs de propriété désignées de l’objet JSON en tant que données d’entrée de la fonction Lambda du backend. L'objet JSON transformé sera inclus en tant que charge utile de la demande d'intégration.

Pour mapper les paramètres d’entrée à la requête d’intégration
  1. Dans l’onglet Requête d’intégration, sous Paramètres de requête d’intégration, choisissez Modifier.

  2. Pour Transmission du corps de requête, sélectionnez Lorsqu’aucun modèle n’est défini (recommandé).

  3. Choisissez Modèles de mappage.

  4. Sélectionnez Add mapping template.

  5. Pour Type de contenu, entrez application/json.

  6. Pour Corps du modèle, entrez le code suivant :

    { "a": "$input.params('operand1')", "b": "$input.params('operand2')", "op": "$input.params('operator')" }
  7. Choisissez Enregistrer.

Vous pouvez maintenant tester votre méthode GET pour vérifier qu’elle a été correctement configurée pour invoquer la fonction Lambda.

Pour tester la méthode GET
  1. Choisissez l’onglet Test. Vous devrez peut-être choisir la flèche droite pour afficher l'onglet.

  2. Pour Chaînes de requête, saisissez operand1=2&operand2=3&operator=+.

  3. Sélectionnez Test.

    Les résultats doivent ressembler à ce qui suit :

    
                      Création d'une API dans API Gateway en tant que proxy Lambda

Intégration 2 : Création d'une méthode POST avec une charge utile JSON pour appeler la fonction Lambda

En créant une méthode POST avec une charge utile JSON pour appeler la fonction Lambda, vous faites en sorte que le client doive fournir les données d'entrée nécessaires à la fonction du backend dans le corps de la demande. Pour vous assurer que le client charge les données d'entrée correctes, vous allez activer la validation de demande sur la charge utile.

Pour créer une méthode POST avec une charge utile JSON
  1. Sélectionnez la ressource /calc, puis choisissez Créer une méthode.

  2. Pour Type de méthode, sélectionnez POST.

  3. Pour Type d’intégration, sélectionnez Service AWS.

  4. Pour Région AWS, sélectionnez l' Région AWS endroit où vous avez créé votre fonction Lambda.

  5. Pour Service AWS, sélectionnez Lambda.

  6. Laissez Sous-domaine AWS vide.

  7. Pour Méthode HTTP, sélectionnez POST.

  8. Pour Type d’action, sélectionnez Utiliser un remplacement de chemin. Cette option nous permet de spécifier l'ARN de l'action Invoke (Appel) pour exécuter notre fonction Calc.

  9. Pour Remplacement de chemin, saisissez 2015-03-31/functions/arn:aws:lambda:us-east-2:account-id:function:Calc/invocations. Pour account-id, entrez votre Compte AWS identifiant. Pourus-east-2, entrez l' Région AWS endroit où vous avez créé votre fonction Lambda.

  10. Pour Rôle d’exécution, saisissez l’ARN de rôle pour lambda_invoke_function_assume_apigw_role.

  11. Ne modifiez pas les paramètres de Cache d’informations d’identification et de Délai d’attente par défaut.

  12. Choisissez Créer une méthode.

Maintenant, vous créez un modèle d’entrée pour décrire la structure des données d’entrée et valider le corps de la requête entrante.

Pour créer un modèle d’entrée
  1. Dans le volet de navigation principal, choisissez Modèles.

  2. Sélectionnez Create model.

  3. Pour Name (Nom), saisissez input.

  4. Pour Type de contenu, entrez application/json.

    Si aucun type de contenu correspondant n'est trouvé, la validation de demande n'est pas effectuée. Pour utiliser le même modèle quel que soit le type de contenu, saisissez $default.

  5. Pour Schéma du modèle, saisissez le modèle qui suit :

    { "type":"object", "properties":{ "a":{"type":"number"}, "b":{"type":"number"}, "op":{"type":"string"} }, "title":"input" }
  6. Sélectionnez Create model.

Vous créez maintenant un modèle de sortie. Ce modèle décrit la structure de données de la sortie calculée à partir du serveur principal. Elle peut être utilisée pour mapper les données de réponse d'intégration à un autre modèle. Ce didacticiel s'appuie sur le comportement de transmission et n'utilise pas ce modèle.

Pour créer un modèle de sortie
  1. Sélectionnez Create model.

  2. Pour Name (Nom), saisissez output.

  3. Pour Type de contenu, entrez application/json.

    Si aucun type de contenu correspondant n'est trouvé, la validation de demande n'est pas effectuée. Pour utiliser le même modèle quel que soit le type de contenu, saisissez $default.

  4. Pour Schéma du modèle, saisissez le modèle qui suit :

    { "type":"object", "properties":{ "c":{"type":"number"} }, "title":"output" }
  5. Sélectionnez Create model.

Vous créez maintenant un modèle de résultat. Ce modèle décrit la structure de données des données de réponse renvoyées. Il fait référence aux schémas d’entrée et de sortie définis dans votre API.

Pour créer un modèle de résultat
  1. Sélectionnez Create model.

  2. Pour Name (Nom), saisissez result.

  3. Pour Type de contenu, entrez application/json.

    Si aucun type de contenu correspondant n'est trouvé, la validation de demande n'est pas effectuée. Pour utiliser le même modèle quel que soit le type de contenu, saisissez $default.

  4. Pour Schéma du modèle, entrez le modèle suivant avec votre restapi-id. Votre restapi-id est indiqué entre parenthèses en haut de la console dans le flux suivant : API Gateway > APIs > LambdaCalc (abc123).

    { "type":"object", "properties":{ "input":{ "$ref":"https://apigateway.amazonaws.com/restapis/restapi-id/models/input" }, "output":{ "$ref":"https://apigateway.amazonaws.com/restapis/restapi-id/models/output" } }, "title":"result" }
  5. Sélectionnez Create model.

Vous configurez maintenant la requête de méthode de votre méthode POST pour activer la validation de requête sur le corps de requête entrante.

Pour activer la validation des demandes sur la méthode POST
  1. Dans le volet de navigation principal, choisissez Ressources, puis sélectionnez la méthode POST dans l’arborescence de ressources.

  2. Dans l'onglet Demande de méthode, sous Paramètres de demande de méthode, choisissez Modifier.

  3. Pour Validateur de requête, sélectionnez Valider le corps.

  4. Choisissez Corps de la requête, puis choisissez Ajouter un modèle.

  5. Pour Type de contenu, entrez application/json.

    Si aucun type de contenu correspondant n'est trouvé, la validation de demande n'est pas effectuée. Pour utiliser le même modèle quel que soit le type de contenu, saisissez $default.

  6. Pour Modèle, sélectionnez entrée.

  7. Choisissez Enregistrer.

Vous pouvez maintenant tester votre méthode POST pour vérifier qu’elle a été correctement configurée pour invoquer la fonction Lambda.

Pour tester la méthode POST
  1. Choisissez l’onglet Test. Vous devrez peut-être choisir la flèche droite pour afficher l'onglet.

  2. Pour Corps de la requête, entrez la charge utile de JSON suivante.

    { "a": 1, "b": 2, "op": "+" }
  3. Sélectionnez Tester).

    Vous devriez voir la sortie suivante :

    { "a": 1, "b": 2, "op": "+", "c": 3 }

Intégration 3 : Création d'une méthode GET avec des paramètres de chemin pour appeler la fonction Lambda

Vous allez maintenant créer une méthode GET sur une ressource spécifiée par une séquence de paramètres de chemin pour appeler la fonction Lambda du backend. Les valeurs de paramètre de chemin spécifient les données d'entrée de la fonction Lambda. Vous allez utiliser un modèle de mappage afin de mapper les valeurs de paramètres de chemin entrantes à la charge utile de demande d'intégration requise.

La structure de ressource d'API qui en résulte ressemble à ce qui suit :


                Création d'une API dans API Gateway en tant que proxy Lambda
Pour créer une ressource /{operand1}/{operand2}/{operator}
  1. Choisissez Créer une ressource.

  2. Pour Chemin de ressource, sélectionnez /calc.

  3. Sous Resource Name (Nom de la ressource), entrez {operand1}.

  4. Maintenez CORS (Partage des ressources entre origines multiples) désactivé.

  5. Choisissez Créer une ressource.

  6. Pour Chemin de ressource, sélectionnez /calc/{operand1}/.

  7. Sous Resource Name (Nom de la ressource), entrez {operand2}.

  8. Maintenez CORS (Partage des ressources entre origines multiples) désactivé.

  9. Choisissez Créer une ressource.

  10. Pour Chemin de ressource, sélectionnez /calc/{operand1}/{operand2}/.

  11. Sous Resource Name (Nom de la ressource), entrez {operator}.

  12. Maintenez CORS (Partage des ressources entre origines multiples) désactivé.

  13. Choisissez Créer une ressource.

Cette fois, vous allez utiliser l’intégration Lambda intégrée dans la console API Gateway afin de configurer l’intégration de la méthode.

Pour configurer une intégration de méthode
  1. Sélectionnez la ressource/{operand1}/{operand2}/{operator}, puis choisissez Créer une méthode.

  2. Pour Type de méthode, sélectionnez GET.

  3. Pour Type d'intégration, sélectionnez Lambda

  4. Maintenez Intégration proxy Lambda désactivée.

  5. Pour la fonction Lambda, sélectionnez l' Région AWS endroit où vous avez créé votre fonction Lambda et entrez. Calc

  6. Maintenez Délai d’expiration par défaut activé.

  7. Choisissez Créer une méthode.

Vous créez maintenant un modèle de mappage pour mapper les trois paramètres de chemin d’URL, déclarés lors de la création de la ressource /calc/{operand1}/{operand2}/{operator}, aux valeurs de propriété désignées de l’objet JSON. Etant donné que les chemins d'URL doivent être codés en URL, l'opérateur de division doit être spécifié sous la forme %2F au lieu de /. Ce modèle convertit %2F en '/' avant de le transmettre à la fonction Lambda.

Pour créer un modèle de mappage
  1. Dans l’onglet Requête d’intégration, sous Paramètres de requête d’intégration, choisissez Modifier.

  2. Pour Transmission du corps de requête, sélectionnez Lorsqu’aucun modèle n’est défini (recommandé).

  3. Choisissez Modèles de mappage.

  4. Pour Type de contenu, entrez application/json.

  5. Pour Corps du modèle, entrez le code suivant :

    { "a": "$input.params('operand1')", "b": "$input.params('operand2')", "op": #if($input.params('operator')=='%2F')"/"#{else}"$input.params('operator')"#end }
  6. Choisissez Enregistrer.

Vous pouvez maintenant tester votre méthode GET pour vérifier qu’elle a été correctement configurée pour invoquer la fonction Lambda et transmettre le résultat d’origine via la réponse d’intégration sans mappage.

Pour tester la méthode GET
  1. Choisissez l’onglet Test. Vous devrez peut-être choisir la flèche droite pour afficher l'onglet.

  2. Pour Chemin, procédez comme suit :

    1. Pour opérande 1, saisissez 1.

    2. Pour opérande 2, saisissez 1.

    3. Pour opérateur, saisissez +.

  3. Sélectionnez Test.

  4. Le résultat doit se présenter comme suit :

    
            Mappage des paramètres de chemin d'URL d'une demande de méthode à la charge utile de demande d'intégration pour appeler la fonction Lambda

Ensuite, vous modélisez la structure de données de la charge utile de réponse de méthode après le schéma result.

Par défaut, un modèle vide est attribué au corps de réponse de méthode. Cela entraînera la transmission du corps de réponse d'intégration sans mappage. Cependant, lorsque vous générez un kit SDK pour l'un des langages fortement typés, comme Java ou Objective-C, les utilisateurs de votre kit SDK recevront un objet vide comme résultat. Pour vous assurer que le client REST et les clients SDK reçoivent les résultats escomptés, vous devez modéliser les données de réponse à l'aide d'un schéma prédéfini. Ici, vous allez définir un modèle pour le corps de réponse de méthode et construire un modèle de mappage pour traduire le corps de réponse d'intégration en corps de réponse de méthode.

Pour créer une réponse de méthode
  1. Dans l’onglet Méthode de réponse, sous Réponse 200, choisissez Modifier.

  2. Sous Corps de la réponse, choisissez Ajouter un modèle.

  3. Pour Type de contenu, entrez application/json.

  4. Pour Modèle, sélectionnez Résultat.

  5. Choisissez Enregistrer.

La définition du modèle pour le corps de réponse de méthode garantit que les données de réponse seront intégrées dans l'objet result d'un kit SDK donné. Pour vous assurer que les données de réponse d'intégration sont mappées en conséquence, un modèle de mappage est nécessaire.

Pour créer un modèle de mappage
  1. Dans l’onglet Réponse d’intégration, sous Par défaut - Réponse, choisissez Modifier.

  2. Choisissez Modèles de mappage.

  3. Pour Type de contenu, entrez application/json.

  4. Pour Générer un modèle, sélectionnez le résultat.

  5. Modifiez le modèle de mappage généré pour qu’il corresponde aux éléments suivants :

    #set($inputRoot = $input.path('$')) { "input" : { "a" : $inputRoot.a, "b" : $inputRoot.b, "op" : "$inputRoot.op" }, "output" : { "c" : $inputRoot.c } }
  6. Choisissez Enregistrer.

Pour tester le modèle de mappage
  1. Choisissez l’onglet Test. Vous devrez peut-être choisir la flèche droite pour afficher l'onglet.

  2. Pour Chemin, procédez comme suit :

    1. Pour opérande 1, saisissez 1.

    2. Pour opérande 2, saisissez 2.

    3. Pour opérateur, saisissez +.

  3. Sélectionnez Tester).

  4. Le résultat ressemble à ce qui suit :

    { "input": { "a": 1, "b": 2, "op": "+" }, "output": { "c": 3 } }

À ce stade, vous pouvez appeler l’API uniquement à l’aide de la fonctionnalité Tester dans la console API Gateway. Afin de la rendre disponible votre API pour les clients, vous devez la déployer. Veillez toujours à redéployer votre API chaque fois que vous ajoutez, modifiez ou supprimez une ressource ou une méthode, mettez à jour un mappage de données ou mettez à jour des paramètres d'étape. Sinon, les nouvelles fonctionnalités ou les mises à jour ne seront pas disponibles pour les clients de votre API, comme suit :

Pour déployer l’API
  1. Sélectionnez Deploy API (Déployer une API).

  2. Pour Étape, sélectionnez Nouvelle étape.

  3. Sous Stage name (Nom de l'étape), entrez Prod.

  4. (Facultatif) Sous Description, entrez une description.

  5. Choisissez Deploy (Déployer).

  6. (Facultatif) Sous Détails de l’étape, pour Invoquer une URL, vous pouvez choisir l’icône de copie pour copier l’URL d’invocation de votre API. Vous pouvez l'utiliser avec des outils tels que Postman et cURL pour tester votre API.

Note

Veillez toujours à redéployer votre API chaque fois que vous ajoutez, modifiez ou supprimez une ressource ou une méthode, mettez à jour un mappage de données ou mettez à jour des paramètres d’étape. Sinon, les nouvelles fonctions ou les mises à jour ne seront pas disponibles pour les clients de votre API.