Go et Serverless : comment écrire des fonctions AWS Lambda dont les développeurs Python seront jaloux

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Pourquoi Go est le nouveau roi du Serverless (et point final) ?

\n\n

Quand on parle d'architecture serverless, la plupart des développeurs pensent à JavaScript (Node.js) ou Python. C'est logique : ils sont simples, populaires, et des tonnes de tutoriels existent pour eux. Mais il y a un problème : le démarrage à froid.

\n\n

Imaginez : vous lancez une fonction Lambda en Python. La première requête après une période d'inactivité prend 3 à 5 secondes à être traitée. L'utilisateur attend. L'entreprise perd de l'argent. Imaginez maintenant la même fonction en Go : 100 à 200 millisecondes. Vous sentez la différence ?

\n\n

Go (Golang) est un langage créé chez Google pour résoudre des problèmes où la performance et la simplicité sont cruciales. Dans le monde serverless, il offre trois avantages clés :

\n
    \n
  • Démarrage à froid instantané — le binaire compilé se lance en quelques millisecondes.
  • \n
  • Faible consommation mémoire — vous payez moins, vous obtenez plus.
  • \n
  • Un seul binaire — pas de dépendances, vous le chargez et l'oubliez.
  • \n
\n\n

Dans cet article, nous allons voir comment écrire des fonctions serverless en Go pour AWS Lambda, examiner des exemples de code réels et les comparer aux alternatives. Si vous en avez assez d'attendre que votre fonction Python "chauffe" — bienvenue.

\n\n

Comment configurer AWS Lambda pour Go : guide étape par étape

\n\n

Avant d'écrire du code, commençons par les outils nécessaires. Pour travailler avec Go sur AWS Lambda, vous aurez besoin de :

\n
    \n
  • Go installé (version 1.21+).
  • \n
  • L'utilitaire aws-cli (ou la console AWS).
  • \n
  • Une compréhension de base de ce qu'est un Handler.
  • \n
\n\n

Étape 1. Créer le projet

\n

Créez un nouveau répertoire et initialisez le module :

\n
mkdir go-lambda-example\ncd go-lambda-example\ngo mod init example.com/lambda
\n\n

Étape 2. Écrire la première fonction

\n

Créez un fichier main.go. Voici un exemple minimal de fonction serverless en Go qui traite du JSON et renvoie une réponse :

\n
package main\n\nimport (\n    "context"\n    "fmt"\n\n    "github.com/aws/aws-lambda-go/lambda"\n)\n\n// MyEvent — structure de l'événement entrant\ntype MyEvent struct {\n    Name string `json:"name"`\n}\n\n// MyResponse — structure de la réponse\ntype MyResponse struct {\n    Message string `json:"message"`\n    Status  int    `json:"status"`\n}\n\n// HandleRequest — gestionnaire principal de la Lambda\nfunc HandleRequest(ctx context.Context, event MyEvent) (MyResponse, error) {\n    if event.Name == "" {\n        return MyResponse{Message: "Bonjour, anonyme !", Status: 200}, nil\n    }\n    return MyResponse{\n        Message: fmt.Sprintf("Bonjour, %s ! Bienvenue dans le serverless avec Go.", event.Name),\n        Status:  200,\n    }, nil\n}\n\nfunc main() {\n    lambda.Start(HandleRequest)\n}
\n\n

Important : La fonction doit accepter context.Context et retourner (T, error). C'est le standard pour Go Lambda.

\n\n

Étape 3. Compiler pour Linux

\n

AWS Lambda fonctionne sous Linux, donc le binaire doit être compilé pour ce système d'exploitation :

\n
GOOS=linux GOARCH=amd64 go build -o bootstrap main.go
\n

Notez que le fichier de sortie doit s'appeler bootstrap — c'est une exigence d'AWS Lambda pour Go.

\n\n

Étape 4. Empaqueter et charger

\n

Compressez le binaire en ZIP :

\n
zip function.zip bootstrap
\n

Chargez-le maintenant dans AWS Lambda via la console ou le CLI. Terminé ! Votre première fonction serverless en Go fonctionne.

\n\n

Exemple avancé : travailler avec S3 et DynamoDB

\n

Maintenant que les bases sont acquises, écrivons quelque chose d'utile. Supposons que nous devions traiter le téléchargement de fichiers dans S3 et enregistrer les métadonnées dans DynamoDB. C'est un scénario classique pour le serverless.

\n\n

Installez les SDK nécessaires :

\n
go get github.com/aws/aws-lambda-go/events\ngo get github.com/aws/aws-sdk-go-v2/service/s3\ngo get github.com/aws/aws-sdk-go-v2/service/dynamodb
\n\

Blogs

Book Recommendations