Fermer

mai 6, 2022

Comment intégrer AWS Lambda à Amazon API Gateway à l’aide du code Terraform

Comment intégrer AWS Lambda à Amazon API Gateway à l’aide du code Terraform


Dans la plupart des cas, nous avons intégré AWS Lambda à API Gateway pour exécuter notre application écrite en Python, Node.js, Go, .NET, Java, Ruby, etc.

Une intégration Lambda trace une combinaison de chemin et de méthode HTTP vers une fonction Lambda. Nous pouvons configurer la passerelle API pour transmettre le contenu de la requête HTTP tel quel ou pour résumer le contenu demandé dans un document qui inclut toutes les informations, y compris les en-têtes, la ressource, le chemin et la méthode.

1

Qu’est-ce que Terraform ?

Terraform est un outil d’infrastructure en tant que code qui vous permet de construire, modifier, gérer et versionner votre infrastructure. Il s’agit de l’un des outils d’infrastructure en tant que code (Iac) les plus populaires, utilisé pour automatiser les tâches d’infrastructure et automatiser le provisionnement de vos ressources cloud. C’est open source. Terraform peut gérer des composants de bas niveau comme les ressources de calcul, de stockage et de mise en réseau, ainsi que des composants de haut niveau comme les entrées DNS et les fonctionnalités SaaS.

Qu’est-ce qu’AWS Lambda ?

AWS Lambda est une plate-forme informatique sans serveur fournie par AWS où vous pouvez télécharger votre code et il est exécuté automatiquement à l’aide de serveurs AWS.

La notion de sans serveur l’informatique fait référence à l’idée que vous n’avez pas besoin de maintenir ou de gérer vos propres serveurs pour exécuter certaines fonctions. Ce qui signifie que nous pouvons simplement télécharger notre code (Python, Node.js, Go, .NET, Java, Ruby) et Lambda gérera des fonctions telles que l’exécution, la mise à l’échelle, l’équilibrage de charge, etc.

Qu’est-ce qu’Amazon API Gateway ?

API Gateway est un service entièrement géré qui aide les développeurs à créer des API pour les systèmes back-end exécutés sur Amazon EC2, lambda ou tout autre service Web publiquement adressable. API Gateway prend en charge les API RESTful, y compris les API REST, les API HTTP, ainsi que les API de socket Web.

Les API sont capables de modifier les informations de la demande et de les transmettre à quelque chose comme un service API Gateway de fonction Lambda, que vous pouvez utiliser pour créer des interfaces de programmation d’application.

Pré-requis:

  • Un compte AWS
  • Studio de code VS
  • Terraform installé sur votre machine.

Flux de travail du code Terraform :

Pour exécuter le script terraform, suivez les étapes ci-dessous :

Avant de commencer, nous devons créer des modules de rôles IAM, des fonctions Lambda et une API Gateway. Pour ce faire, nous devons créer des fichiers principaux, variables et de sortie séparés, comme indiqué dans le flux de travail. Dans nos modules Lambda, nous allons créer notre fichier python que nous voulons exécuter, puis créer les fichiers principaux, variables et de sortie pour notre code terraform principal.

|– Intégrer lambda à la passerelle API (nom du répertoire)

| `

|—-modules

| |– Rôle IAM

| | |– main.tf

| | |– sorties.tf

| | |– variables.tf

| |

| |

| |– LAMBDA

| | |– main.tf

| | |– sorties.tf

| | |– variables.tf

| | |– bonjour_lambda

| | | hello_lambda.py

| |–bonjour_lambda.zip

| |

| |

| |– PASSERELLE API

| | |– main.tf

| | |– sorties.tf

| | |– variable.tf

| | |

| | |

| | — |– main.tf

| | — |– sorties.tf

| |– |– terraform.tfvars

| | — |– terraform tfstate

Amazon Web Services - Évitez les pannes du centre de contact : planifiez votre mise à niveau vers Amazon Connect

| | |

`

Module de rôle IAM

Fichier principal du module de rôle IAM :

Nous devons créer le fichier principal des modules de rôle IAM pour la fonction lambda et la passerelle API, ce qui signifie que nous devrons dicter le rôle d’assumer, l’autorisation lambda et l’exécution lambda.

2

Assume_role_policy –La stratégie qui donne à une entité l’autorisation d’assumer le rôle.

Maintenant, nous devons fournir l’autorisation AWS Lambda à la passerelle API en attachant la stratégie de rôle IAM à l’exécution Lambda.

3

aws_lambda_permission – Autoriser API Gateway et AWS Lambda pour accéder l’un à l’autre.

aws_iam_role_policy _attachment pour vpc_access _execution pour accéder à vpc avec AWS Lambda.

Fichier variable du module de rôle IAM :

Il s’agit du fichier de variables du module IAM, dans lequel nous avons défini le nom du rôle IAM, API Gateway arn, Lambda arn et le rôle IAM arn.

4

Fichier de sortie du module de rôle IAM:

Dans ce fichier, nous devrons définir le rôle IAM arn.

5

Module de fonction Lambda :

Le deuxième module que vous devrez créer est la fonction Lambda et le fichier d’archive, qui contient l’application dans laquelle vous devrez exécuter le fichier principal du module Lambda.

Écrivez l’application Python :

Appelons l’application Python que nous allons exécuter sur la fonction Lambda. Pour cela vous devrez :

  1. Créez un répertoire hello_lambda parallèle à main.tf
  2. Dans ce répertoire, créez un fichier hello_lambda.py
  3. Ajoutez le script Python suivant à exécuter :

importer json

def lambda_handler(event, context):

# TODO implémenter

return { ‘statuscode’ : 200,

‘body’ : json.dumps(‘Bonjour Lambda’)

}

Après avoir appelé l’application Python, vous devrez créer un fichier .zip. La fonction AWS Lambda doit avoir du code stocké dans un fichier .zip pour être téléchargé correctement sur les serveurs AWS. Ce .zip que nous allons uploader sera mentionné dans le code main.tf.

Fichier principal du module de fonction Lambda :

6

aws_lambda_function.KClambda – configure la fonction Lambda contenant votre code de fonction. Il définit également le runtime sur Python3.8 et affecte le gestionnaire à la fonction de gestionnaire définie dans hello_lambda.py.

Fichier variable pour le module de fonction Lambda :

Ici, vous déclarerez les variables telles que le nom de fonction de Lambda, Lambda arn et le rôle IAM arn pour la fonction Lambda. La ressource IAM_role_arn spécifie un rôle qui accorde à la fonction l’autorisation d’accéder aux services et ressources AWS de votre compte.

7

Fichier de sortie pour le module de fonction Lambda :

Il s’agit du fichier de sortie de la fonction Lambda dans lequel vous avez déclaré lambda_arn.

Invoke arn – L’arn pour appeler la fonction lambda.

8

Module de passerelle API :

Dans cette étape, nous allons créer la méthode POST & OPTION, intégrer cette méthode et la déployer.

API Gateway est un service géré par AWS qui vous permet de créer et de gérer des API HTTP. Il prend en charge les intégrations avec les fonctions AWS Lambda, ce qui nous permet de mettre en œuvre une API HTTP à l’aide des fonctions Lambda pour gérer et répondre aux requêtes HTTP.

Fichier principal du module API Gateway :

Ici, nous allons créer la passerelle rest_api. rest_API est une collection de ressources et de méthodes qui sont intégrées aux points de terminaison HTTP principaux, aux fonctions Lambda ou à d’autres services AWS.

9

Dans le diagramme ci-dessous, nous rencontrerons des contenus tels que :

  • rest_api_id – définit l’ID de notre API REST associée.
  • stage_name – définit le nom de la scène.
  • resource_id – définit l’ID de ressource de l’API REST.
  • http_method-la méthode qui appelle la ressource associée.

dix

  • aws_api_gateway_rest_api définit un nom pour la passerelle API et définit son protocole sur la méthode HTTP.
  • aws_api_gateway_integration configure la passerelle API pour utiliser votre fonction Lambda
  • aws_api_gateway_deployment – ​​Le déploiement peut ensuite être publié sur des points de terminaison appelables via la ressource aws_api _gateway _stage.

Fichier variable du module API Gateway :

Ici, nous avons déclaré le nom de l’API et Lambda arn pour intégrer la méthode API.

11

Fichier de sortie du module API Gateway :

Ici, nous avons vérifié l’api_arn que nous avons utilisé l’arn d’exécution de api_gateway.

execution_arn – L’ARN d’exécution à utiliser dans l’arn source de lambda_permission lorsque vous autorisez API Gateway à appeler une fonction Lambda.

12

Fichier principal du script Terraform :

Ici, nous devons écrire un script terraform. Nous allons créer un fichier principal dans lequel nous appellerons les modules, qui sont le rôle IAM, la fonction Lambda et la passerelle API.

13

Fichier Terraform Tfstate :

Le fichier d’état Terraform est mis à jour simultanément lors de la création d’une nouvelle ressource. Les fichiers Tfstate suivent toutes les modifications que vous apportez, telles que la création, la suppression ou la mise à jour. Il indique quelle version de terraform nous utilisons.

C’est le fichier le plus important dans terraform, sans lui, le processus ne fonctionne tout simplement pas. (Tout le contenu de ce fichier est au format JSON.)

Exécutez la commande suivante pour le provisionnement :

  • Terraform init: Utilisé pour initialiser un répertoire de travail contenant les fichiers de configuration de Terraform.
  • Plan Terraform : Vérifie quelles ressources seront créées lors du déploiement de Terraform Apply. Pour cela nous avons utilisé le plan terraform.
  • Terraform s’applique : Déployé pour construire l’infrastructure.

SORTIE sur la console AWS :

Ici on voit le Rôle IAM est créé qui a été écrit dans notre script terraform,

14

Ensuite, on peut voir le Fonction lambda:

15

Le Passerelle API Le nom « demo-api » est créé avec la méthode POST et OPTION comme nous le mentionnons dans le code terraform.

16

Conclusion:

Il s’agit de la sortie finale où nous pouvons voir que la fonction AWS Lambda est intégrée avec succès à API Gateway à l’aide du code terraform. Dans la première étape de la sortie, nous pouvons voir que le rôle IAM est créé, après quoi nous voyons que la fonction Lambda et la passerelle API sont créées avec succès.

Comment Perficient peut-il vous aider ?

Perficient est un partenaire certifié Amazon Web Services avec plus de 10 ans d’expérience dans la fourniture d’applications et d’expertise au niveau de l’entreprise dans les solutions de plate-forme cloud, le centre de contact, la modernisation des applications, les migrations, l’analyse de données, les outils mobiles, de développement et de gestion, l’IoT, le sans serveur, la sécurité. , et plus. Associé à notre stratégie et à notre équipe de pointe, Perficient est équipé pour aider les entreprises à relever les défis les plus difficiles et à tirer le meilleur parti de leurs implémentations et intégrations.

Apprenez-en plus sur notre pratique AWS et contactez notre équipe ici !

A propos de l’auteur

Tony Harper est coordinateur du marketing partenaire chez Perficient. En tant que membre de l’équipe des partenaires, il est aligné et spécialisé dans les services Web Amazon et Twilio et est basé au bureau de St. Louis. Son expérience comprend une expérience dans l’industrie des logiciels / technologies, ce qui lui donne la capacité de glaner des informations impératives sur les partenaires et les équipes de Perficient.

Plus de cet auteur






Source link