Utilisation d'Amazon API Gateway

La fonction AWS Lambda peut être appelée sur HTTPSurl. Cela peut être fait sur GET, POST, PUT. Lorsque l'URL HTTPS est appelée, la fonction AWS Lambda peut également être déclenchée et les données transmises à HTTPS à l'aide deget/post peuvent être rendus disponibles dans AWS Lambda pour être utilisés pour insérer dans DynamoDB ou pour envoyer des e-mails, etc.

Ce chapitre traite en détail des différents processus impliqués dans le travail avec AWS lambda et API Gateway.

Processus impliqués

Voici les processus impliqués dans l'utilisation d'AWS lambda et d'API Gateway:

  • Créer un rôle IAM pour l'autorisation
  • Créer une fonction AWS lambda
  • Créer une passerelle API
  • Lier la fonction lambda à la passerelle API
  • Passer des données à la passerelle API

Un diagramme de base qui explique le fonctionnement de la passerelle API et d'AWS Lambda est donné ici -

Ces processus sont expliqués en détail plus loin dans ce chapitre avec des captures d'écran pertinentes.

Créer un rôle IAM pour l'autorisation

Dans les services Amazon comme indiqué ci-dessous, sélectionnez IAM pour créer des rôles à utiliser par la fonction Lambda.

Accédez à IAM et sélectionnez Roles à partir de la section latérale gauche comme indiqué ci-dessous -

Cliquez sur Create role pour la fonction Lambda.

Sélectionnez Lambda et cliquez sur Permissionsau fond. Sélectionnez l'autorisation requise pour API Gateway et Lambda.

Recherchez la passerelle API dans la recherche et vous trouverez toutes les autorisations associées. Ici, nous avons choisi un accès complet à la passerelle API comme indiqué ci-dessous -

Maintenant, recherchez la passerelle API et elle vous listera toutes les autorisations associées. Ici, nous avons choisi un accès complet à la passerelle API comme indiqué ci-dessous -

Vous devez également répéter le même processus pour les politiques.

Une fois que vous avez choisi les politiques nécessaires, cliquez sur Reviewpour la prochaine étape. Entrez le nom du rôle selon votre choix comme indiqué ci-dessous -

Il affiche les stratégies associées au rôle. Cliquez surCreate role et nous en avons terminé avec la création du rôle et pouvons continuer avec la fonction lambda.

Créer une fonction AWS Lambda

Accédez aux services AWS et cliquez sur le service lambda pour créer une fonction permettant de le connecter à la passerelle api.

L'écran de l'interface utilisateur pour la fonction Lambda est illustré ci-dessous. Cliquez surCreate function pour procéder à la création de la fonction Lambda.

Entrez le nom de la fonction et choisissez le rôle existant que nous avons créé ci-dessus.

Il clignote un message indiquant que la fonction avec le nom lambdawithapigateway est créé avec succès.

Notez qu'ici nous utiliserons nodejsruntime pour écrire le code. Le code AWS avechelloworld le message est comme indiqué ci-dessous -

Le code AWS Lambda est présent dans index.jsfichier. La fonction appelée handler a les paramètres à savoirevents, context et callback.

La fonction de rappel a essentiellement l'erreur et le message de réussite. Notez qu'ici nous n'avons aucun code lié à l'erreur, donc null est passé et le message de réussite estHelloWorld from lambda.

Enfin, enregistrez les modifications ajoutées et ajoutons la fonction Lambda à la passerelle API.

Créer une passerelle API

Connectez-vous à votre compte AWS et ouvrez API Gateway comme indiqué ci-dessous -

Cliquez sur API Gateway et cela vous mènera à l'écran où une nouvelle passerelle API peut être créée.

Cliquez sur Create API et ajoutez des détails comme indiqué ci-dessous -

Clique le Create APIbouton sur le côté droit de l'écran. Cela affichera l'API nouvellement créée sur le côté gauche de l'écran.

Clique le Actions liste déroulante pour créer une nouvelle ressource pour l'API.

Maintenant, créez une nouvelle ressource comme indiqué ci-dessous -

Entrer le Resource Namecomme indiqué ci-dessous. Vous verrez le nom de la ressource saisi dans l'url créée à la fin. Cliquez surCreate Resource et vous le verrez à l'écran comme suit -

Ajouter GET/POSTméthodes à la ressource créée comme indiqué ci-dessous. Sélectionnez la méthode dansActions menu déroulant.

Clique le GET méthode pour ajouter la méthode à l'API.

L'étape suivante est l'intégration qui l'intègrera à la fonction Lambda. Ajoutez maintenant la fonction Lambda comme indiqué ci-dessous -

Lier la fonction Lambda à la passerelle API

Sélectionnez la fonction lambda créée précédemment.

Enregistrez les modifications et vous pouvez voir une boîte de dialogue demandant l'autorisation comme indiqué ci-dessous -

Cliquez sur OKpour la permission. Il s'agit des détails d'exécution entre la requête HTTP de la passerelle API et la fonction Lambda -

Maintenant, déployons les modifications de la passerelle API. Pour cela, nous devons sélectionner leDeploy API de Actions déroulant comme indiqué ci-dessous -

Sélectionner Deploy API. Il demandera l'état du déploiement. SélectionnerNew Stage à partir de la liste déroulante de l'étape de déploiement et ajoutez le nom de l'étape comme Production.

Cliquez sur Deploy et il vous redirigera vers l'url comme indiqué ci-dessous -

Sélectionnez le GETméthode du côté gauche pour obtenir l'url. Ouvrez l'url dans un nouvel onglet pour voir le message de la fonction Lambda.

Il s'agit d'un exemple de base d'utilisation d'AWS Lambda et d'AWS API Gateway. Dans l'exemple ci-dessus, nous avons codé en dur le message dans la fonction Lambda.

Maintenant, prenons les détails du message de la passerelle API. Dans le cas où l'appel HTTPS doit être appelé à partir d'un domaine différent, par exemple un appel AJAX à l'API, nous devons activer CORS pour la passerelle API créée.

Sélectionnez la ressource créée pour l'API et cliquez sur Actions liste déroulante -

Maintenant, Enable CORS ouvrira l'écran suivant -

Vous pouvez utiliser quelques méthodes pour ACTIVER CORS. Access-Control-Allow-Origin est marqué comme *, ce qui signifie qu'il permettra d'obtenir le contenu de la passerelle API de n'importe quel domaine.

Vous pouvez également spécifier le nom de domaine que vous souhaitez utiliser avec l'API. Cliquez surEnable CORS and replace existing CORS headers et il affichera le message de confirmation comme indiqué ci-dessous -

Cliquez sur Yes, replace existing valuesbouton pour l'activer. leEnable CORS l'écran ressemble à celui ci-dessous -

Passer des données à API Gateway

Ouvrez l'API créée dans API Gateway displayhelloworld comme indiqué ci-dessous -

Cliquez sur Integration Request pour envoyer des données comme indiqué ci-dessous -

Choisir Body Mapping Templates et ajoutez le Content-Type pour cet exemple comme application/json. Cliquez sur le type de contenu ajouté ajoutez les détails comme suit -

Maintenant, ajoutez le modèle au format JSON comme indiqué ci-dessous -

Notez que nous avons pris le message comme paramètre pour obtenir des données d'API Gateway et les partager avec AWS Lambda. La syntaxe pour obtenir les détails est la suivante.

Maintenant, déployez l'API pour rendre les modifications disponibles sur l'URL de la passerelle API. Pour cela, nous devons modifier la fonction Lambda pour afficher les données en fonction de l'URL de la passerelle API. Le code de la fonction Lambda est donné ci-dessous. Notez que nous prenons le message de l'événement et le passons au rappel.

exports.handler = (event, context, callback) => {
   let message = event.message;
   callback(null, message);
};

Maintenant, enregistrez les modifications dans Lambda et appuyez sur l'URL pour voir les modifications. Observez la capture d'écran ci-dessous -

Cliquez sur l'URL comme indiqué ci-dessous -

https://rw2ek1xung.execute-api.us-east-
1.amazonaws.com/prod/hello?message=hello%20from%20api%20gateway

Observez que nous transmettons ici le message sous forme de chaîne de requête à l'URL GET. Ensuite, vous pouvez observer la sortie comme indiqué ci-dessous -

Il lit les détails envoyés au message à partir de l'URL et les affiche dans le navigateur.