🌐 Didacticiel : crĂ©ation d’une API REST avec une intĂ©gration de proxy Lambda - Amazon API GatewayDidacticiel : crĂ©ation d’une API REST avec une intĂ©gration de proxy Lambda - Amazon API Gateway - docs.aws.amazon.com

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.

Didacticiel : crĂ©ation d’une API REST avec une intĂ©gration de proxy Lambda

L’intĂ©gration de proxy Lambda est un type d’intĂ©gration d’API avec API Amazon Gateway lĂ©ger et flexible qui permet d’intĂ©grer une mĂ©thode d’API, ou une API complĂšte, avec une fonction Lambda. La fonction Lambda peut ĂȘtre Ă©crite dans n’importe quelle langue prise en charge par Lambda. Puisqu’il s’agit d’une intĂ©gration de proxy, vous pouvez modifier la mise en Ɠuvre de la fonction Lambda Ă  tout moment, sans avoir Ă  redĂ©ployer votre API.

Dans ce didacticiel, vous allez effectuer les opĂ©rations suivantes :

  • CrĂ©er une fonction Lambda « Hello, World! Â» pour ĂȘtre le backend de l’API.

  • CrĂ©er et tester une API « Hello, World! Â» avec intĂ©gration de proxy Lambda.

CrĂ©ation d’une fonction Lambda « Hello, World! Â»

Pour crĂ©er une fonction Lambda « Hello, World! Â» 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 lors de la crĂ©ation de l’API.

  3. Choisissez Fonctions dans le panneau de navigation.

  4. Choisissez 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 politique AWS .

    5. Sous Nom du rĂŽle, entrez GetStartedLambdaBasicExecutionRole.

    6. Laissez vide le champ ModĂšles de politique.

    7. Choisissez Créer une fonction.

  7. Sous Code de fonction, dans l'Ă©diteur de code en ligne, copy/paste le code suivant :

    Node.js
    export const handler = async(event, context) => { 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 + "!"; return 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Ă©ation d’une API « Hello, World! Â»

Maintenant, crĂ©ez une API pour votre fonction Lambda « Hello, World ! Â» Ă  l’aide de la console API Gateway.

Pour crĂ©er une API « Hello, World! Â»
  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 LambdaProxyAPI.

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

  5. Laissez Type de point de terminaison d’API dĂ©fini sur RĂ©gional.

  6. Pour le type d'adresse IP, sélectionnez IPv4.

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

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 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 (Partage des ressources entre origines multiples) désactivé.

  6. Choisissez Créer une ressource.

Dans une intĂ©gration de proxy, la totalitĂ© de la demande est envoyĂ©e Ă  la fonction Lambda du backend en l’état, via une mĂ©thode ANY fourre-tout qui reprĂ©sente n’importe quelle mĂ©thode HTTP. La mĂ©thode HTTP concrĂšte est spĂ©cifiĂ©e par le client au moment de l’exĂ©cution. La mĂ©thode ANY vous permet d’utiliser une seule configuration de mĂ©thode d’API pour toutes les mĂ©thodes HTTP prises en charge, DELETE, GET, HEAD, OPTIONS, PATCH, POST et PUT.

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Ă©ploiement et test de l’API

Pour déployer votre 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 test.

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

  5. Choisissez Déployer.

  6. Sous DĂ©tails de l’étape, choisissez l’icĂŽne de copie pour copier l’URL d’invocation de votre API.

Utilisation du navigateur et de cURL pour tester une API avec l’intĂ©gration de proxy Lambda

Pour tester votre API, vous pouvez utiliser un navigateur ou cURL.

Pour tester les demandes GET en utilisant uniquement les paramĂštres de chaĂźne de requĂȘte, vous pouvez saisir l’URL de la ressource helloworld de l’API dans la barre d’adresse d’un navigateur.

Pour crĂ©er l’URL de la ressource helloworld de l’API, ajoutez la ressource helloworld et le paramĂštre de chaĂźne de requĂȘte ?greeter=John Ă  votre URL d’invocation. Votre URL doit 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 les utilitaires de test plus avancĂ©s de l’API REST, tels que POSTMAN ou cURL. Dans ce didacticiel, on utilise cURL. Dans les exemples de commande cURL ci-dessous, on suppose que cURL est installĂ© sur votre ordinateur.

Pour tester l’API dĂ©ployĂ©e Ă  l’aide de cURL :
  1. Ouvrez une fenĂȘtre du terminal.

  2. Copiez la commande cURL suivante et collez-la dans la fenĂȘtre du terminal, et remplacez l’URL d’invocation par celle que vous avez copiĂ©e Ă  l’étape prĂ©cĂ©dente et ajoutez /helloworld Ă  la fin de l’URL.

    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 l’API avec le paramĂštre de chaĂźne de requĂȘte de ?greeter=John :

      curl -X GET 'https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld?greeter=John'
    2. Pour appeler l’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 l’API avec un corps {"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!