Tutoriel : Création d'une REST API intégration avec un proxy Lambda - APIPasserelle Amazon

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 REST API intégration avec un proxy Lambda

L'intégration de proxy Lambda est un type d'APIintégration de API passerelle léger et flexible qui vous permet d'intégrer une API méthode (ou une méthode complète) à une API fonction Lambda. La fonction Lambda peut être écrite dans n'importe quelle langue prise en charge par Lambda. Comme il s'agit d'une intégration par proxy, vous pouvez modifier l'implémentation de la fonction Lambda à tout moment sans avoir à redéployer votre. API

Dans ce didacticiel, vous effectuez les opérations suivantes :

  • Création d'une fonction Fonction Lambda destinée à être le backend du. API

  • Créez et testez une API « Hello, World! » APIavec intégration du proxy Lambda.

Création d'une fonction Fonction Lambda

Pour créer un « Hello, World! » Fonction Lambda dans la console Lambda
  1. Connectez-vous à la console Lambda à l'adresse /lambda. https://console.aws.amazon.com

  2. Dans la barre AWS de navigation, choisissez un Région AWS.

    Note

    Notez la région où vous avez créé la fonction Lambda. Vous en aurez besoin pour créer leAPI.

  3. Choisissez Fonctions dans le panneau de navigation.

  4. Sélectionnez Create function (Créer une fonction).

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

  6. Sous Informations de base, procédez comme suit :

    1. Sous Nom de la fonction, entrez GetStartedLambdaProxyIntegration.

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

    3. Pour Architecture, conservez le paramètre par défaut.

    4. Sous Permissions (Autorisations), développez Change default execution role (Modifier le rôle d'exécution par défaut). Dans la liste déroulante Rôle d’exécution, choisissez Créer un nouveau rôle à partir de modèles de stratégie AWS .

    5. Sous Nom du rôle, entrez GetStartedLambdaBasicExecutionRole.

    6. Laissez vide le champ Modèles de stratégie.

    7. Sélectionnez Create function (Créer une fonction).

  7. Sous Function code (Code de fonction), dans l'éditeur de code en ligne, copiez-collez le code suivant :

    Node.js
    export const handler = function(event, context, callback) { console.log('Received event:', JSON.stringify(event, null, 2)); var res ={ "statusCode": 200, "headers": { "Content-Type": "*/*" } }; var greeter = 'World'; if (event.greeter && event.greeter!=="") { greeter = event.greeter; } else if (event.body && event.body !== "") { var body = JSON.parse(event.body); if (body.greeter && body.greeter !== "") { greeter = body.greeter; } } else if (event.queryStringParameters && event.queryStringParameters.greeter && event.queryStringParameters.greeter !== "") { greeter = event.queryStringParameters.greeter; } else if (event.multiValueHeaders && event.multiValueHeaders.greeter && event.multiValueHeaders.greeter != "") { greeter = event.multiValueHeaders.greeter.join(" and "); } else if (event.headers && event.headers.greeter && event.headers.greeter != "") { greeter = event.headers.greeter; } res.body = "Hello, " + greeter + "!"; callback(null, res); };
    Python
    import json def lambda_handler(event, context): print(event) greeter = 'World' try: if (event['queryStringParameters']) and (event['queryStringParameters']['greeter']) and ( event['queryStringParameters']['greeter'] is not None): greeter = event['queryStringParameters']['greeter'] except KeyError: print('No greeter') try: if (event['multiValueHeaders']) and (event['multiValueHeaders']['greeter']) and ( event['multiValueHeaders']['greeter'] is not None): greeter = " and ".join(event['multiValueHeaders']['greeter']) except KeyError: print('No greeter') try: if (event['headers']) and (event['headers']['greeter']) and ( event['headers']['greeter'] is not None): greeter = event['headers']['greeter'] except KeyError: print('No greeter') if (event['body']) and (event['body'] is not None): body = json.loads(event['body']) try: if (body['greeter']) and (body['greeter'] is not None): greeter = body['greeter'] except KeyError: print('No greeter') res = { "statusCode": 200, "headers": { "Content-Type": "*/*" }, "body": "Hello, " + greeter + "!" } return res
  8. Choisissez Deploy (Déployer).

Créez un message « Hello, World ! » API

Créez maintenant une annonce API pour votre message « Hello, World ! » Fonction Lambda à l'aide de la console API Gateway.

Pour créer un message « Hello, World ! » API
  1. Connectez-vous à la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway.

  2. Si c'est la première fois que vous utilisez API Gateway, une page vous présentant les fonctionnalités du service s'affiche. Sous RESTAPI, choisissez Build. Lorsque la API fenêtre contextuelle Create Example apparaît, cliquez sur OK.

    Si ce n'est pas la première fois que vous utilisez API Gateway, choisissez Create API. Sous RESTAPI, choisissez Build.

  3. Pour APIle nom, entrezLambdaProxyAPI.

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

  5. Conservez le type de API point de terminaison défini sur Régional.

  6. Choisissez Create API.

Après avoir créé unAPI, vous créez une ressource. Généralement, les API ressources sont organisées dans une arborescence de ressources conformément à la logique de l'application. Pour cet exemple, vous créez une ressource /helloworld.

Pour créer une ressource
  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 helloworld.

  5. Maintenez CORS(Cross Origin Resource Sharing) désactivé.

  6. Choisissez Créer une ressource.

Dans une intégration par proxy, l'intégralité de la demande est envoyée à la fonction Lambda principale telle quelle, via une méthode ANY fourre-tout qui représente n'importe quelle méthode. HTTP La HTTP méthode réelle est spécifiée par le client au moment de l'exécution. La ANY méthode vous permet d'utiliser une seule configuration de API méthode pour toutes les HTTP méthodes prises en charge : DELETEGET,HEAD,OPTIONS,PATCH,POST, etPUT.

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

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

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

  4. Activez Intégration de proxy Lambda.

  5. Pour la fonction Lambda, sélectionnez l' Région AWS endroit où vous avez créé votre fonction Lambda, puis entrez le nom de la fonction.

  6. Pour utiliser la valeur de délai d'expiration par défaut de 29 secondes, gardez Délai d'expiration activé. Pour définir un délai d'expiration personnalisé, choisissez Délai d'expiration et entrez une valeur de délai d'expiration comprise entre 50 et 29000 millisecondes.

  7. Choisissez Créer une méthode.

Déployez et testez API

Pour déployer votre API
  1. Choisissez DeployAPI (Déployer).

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

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

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

  5. Choisissez Deploy (Déployer).

  6. Sous Détails de l'étape, cliquez sur l'icône de copie pour copier votre API appelURL.

Utilisez le navigateur et c URL pour tester l'intégration d'un API proxy avec Lambda

Vous pouvez utiliser un navigateur ou c URL pour tester votreAPI.

Pour tester les GET demandes en utilisant uniquement des paramètres de chaîne de requête, vous pouvez saisir la API helloworld ressource URL for dans la barre d'adresse d'un navigateur.

Pour créer la ressource URL for, ajoutez la API helloworld ressource helloworld et le paramètre de chaîne de requête ?greeter=John à votre appel. URL Vous URL devriez ressembler à ce qui suit.

https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld?greeter=John

Pour les autres méthodes, vous devez utiliser des utilitaires de REST API test plus avancés, tels que POSTMANou URLc. Ce didacticiel utilise URL c. Les exemples de URL commande c ci-dessous supposent que c URL est installé sur votre ordinateur.

Pour tester votre déploiement à API l'aide de c URL :
  1. Ouvrez une fenêtre du terminal.

  2. Copiez la URL commande c suivante et collez-la dans la fenêtre du terminal, remplacez l'appel URL par celui que vous avez copié à l'étape précédente et ajoutez-le /helloworld à la fin duURL.

    Note

    Si vous exécutez la commande sous Windows, utilisez plutôt cette syntaxe :

    curl -v -X POST "https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld" -H "content-type: application/json" -d "{ \"greeter\": \"John\" }"
    1. Pour appeler le API avec le paramètre de chaîne de requête suivant ?greeter=John :

      curl -X GET 'https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld?greeter=John'
    2. Pour appeler le API avec un paramètre d'en-tête de greeter:John :

      curl -X GET https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld \ -H 'content-type: application/json' \ -H 'greeter: John'
    3. Pour appeler le API avec un corps de {"greeter":"John"} :

      curl -X POST https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld \ -H 'content-type: application/json' \ -d '{ "greeter": "John" }'

    Dans tous les cas, la sortie est une réponse 200 avec le corps de réponse suivant :

    Hello, John!