Bibliothèques, exemples et outils pour aider les développeurs Go à développer des fonctions AWS Lambda.
Pour en savoir plus sur l'écriture des fonctions AWS Lambda dans Go, accédez à la documentation officielle
// main.gopackage mainimport ( "github.com/aws/aws-lambda-go/lambda")func hello() (string, error) { return "Bonjour λ!", nil}func main() { // Make le gestionnaire disponible pour l'appel de procédure à distance par AWS Lambdalambda.Start (bonjour) }
La préparation d'un binaire à déployer sur AWS Lambda nécessite qu'il soit compilé pour Linux et placé dans un fichier .zip. Lorsque vous utilisez le runtime provided
, provided.al2
ou provided.al2023
, l'exécutable dans le fichier .zip doit être nommé bootstrap
. L'architecture par défaut de Lambda est x86_64
, donc lors d'une compilation croisée à partir d'un environnement non-x86, l'exécutable doit être construit avec GOARCH=amd64
. De même, si la fonction Lambda est configurée pour utiliser ARM, l'exécutable doit être construit avec GOARCH=arm64
.
GOOS=linux GOARCH=amd64 go build -o bootstrap main.go zip lambda-handler.zip bootstrap
Sous Linux, le comportement par défaut du compilateur Go consiste à lier l'exécutable de sortie à la libc système pour certaines fonctionnalités de bibliothèque standard (par exemple, les recherches DNS). Si l'environnement de construction utilise une distribution Linux avec une version GNU libc plus récente que l'environnement de déploiement, l'application lorsqu'elle est déployée sur Lambda peut échouer avec une erreur telle que /lib64/libc.so.6: version `GLIBC_X.YZ' not found
.
La plupart des applications Go ne nécessitent pas de connexion à la libc système. Ce comportement peut être désactivé à l'aide de la variable d'environnement CGO_ENABLED
.
CGO_ENABLED=0 go build -o bootstrap main.go zip lambda-handler.zip bootstrap
Voir Utilisation de CGO
Les développeurs Windows peuvent avoir du mal à produire un fichier zip qui marque le binaire comme exécutable sous Linux. Pour créer un .zip qui fonctionnera sur AWS Lambda, l'outil build-lambda-zip
peut être utile.
Obtenez l'outil
go.exe installer github.com/aws/aws-lambda-go/cmd/build-lambda-zip@latest
Utilisez l'outil de votre GOPATH
. Si vous disposez d'une installation par défaut de Go, l'outil sera dans %USERPROFILE%Gobin
.
dans cmd.exe :
set GOOS=linuxset GOARCH=amd64set CGO_ENABLED=0go build -o bootstrap main.go%USERPROFILE%Gobinbuild-lambda-zip.exe -o lambda-handler.zip bootstrap
en PowerShell :
$env:GOOS = "linux"$env:GOARCH = "amd64"$env:CGO_ENABLED = "0"go build -o bootstrap main.go ~ GoBinbuild-lambda-zip.exe -o lambda-handler.zip bootstrap
Pour les applications qui nécessitent CGO, l'environnement de construction doit utiliser une version de la libc GNU installée de manière compatible avec le runtime Lambda cible. Sinon, l'exécution peut échouer avec des erreurs telles que /lib64/libc.so.6: version `GLIBC_X.YZ' not found
.
Exécution Lambda | Version GLIBC |
---|---|
provided.al2023 | 2.34 |
provided.al2 | 2.26 |
provided et go1.x | 2.17 |
Alternativement, Lambda prend en charge les images de conteneurs comme alternative de package de déploiement aux fichiers .zip. Pour plus d'informations, reportez-vous à la documentation officielle pour travailler avec des images de conteneur.
Pour déployer votre fonction, reportez-vous à la documentation officielle pour le déploiement à l'aide de l'AWS CLI, AWS Cloudformation et AWS SAM.
Les modèles d'événements peuvent être utilisés pour modéliser les sources d'événements AWS. La documentation officielle contient des procédures pas à pas détaillées.