Bibliotheken, Beispiele und Tools, die Go-Entwicklern bei der Entwicklung von AWS Lambda-Funktionen helfen.
Weitere Informationen zum Schreiben von AWS Lambda-Funktionen in Go finden Sie in der offiziellen Dokumentation
// main.gopackage mainimport ( "github.com/aws/aws-lambda-go/lambda")func hello() (string, error) { return "Hello λ!", nil}func main() { // Make der für Remote Procedure Call von AWS verfügbare Handler Lambdalambda.Start(hello) }
Um eine Binärdatei für die Bereitstellung in AWS Lambda vorzubereiten, muss sie für Linux kompiliert und in einer ZIP-Datei abgelegt werden. Bei Verwendung der Laufzeit provided
, provided.al2
oder provided.al2023
sollte die ausführbare Datei in der ZIP-Datei den Namen bootstrap
haben. Die Standardarchitektur von Lambda ist x86_64
. Beim Cross-Kompilieren aus einer Nicht-x86-Umgebung sollte die ausführbare Datei also mit GOARCH=amd64
erstellt werden. Wenn die Lambda-Funktion für die Verwendung von ARM konfiguriert wird, sollte die ausführbare Datei ebenfalls mit GOARCH=arm64
erstellt werden.
GOOS=linux GOARCH=amd64 go build -o bootstrap main.go zip lambda-handler.zip Bootstrap
Unter Linux besteht das Standardverhalten des Go-Compilers darin, die ausführbare Ausgabedatei für einige Standardbibliotheksfunktionen (z. B. DNS-Suchen) mit der Systembibliothek zu verknüpfen. Wenn die Build-Umgebung eine Linux-Distribution mit einer neueren GNU-libc-Version als die Bereitstellungsumgebung verwendet, schlägt die Anwendung bei der Bereitstellung in Lambda möglicherweise mit einem Fehler wie /lib64/libc.so.6: version `GLIBC_X.YZ' not found
fehl.
Die meisten Go-Anwendungen erfordern keine Verknüpfung mit der Systembibliothek. Dieses Verhalten kann mithilfe der Umgebungsvariablen CGO_ENABLED
deaktiviert werden.
CGO_ENABLED=0 go build -o bootstrap main.go zip lambda-handler.zip bootstrap
Siehe Verwenden von CGO
Windows-Entwickler haben möglicherweise Probleme beim Erstellen einer ZIP-Datei, die die Binärdatei unter Linux als ausführbar markiert. Um eine ZIP-Datei zu erstellen, die auf AWS Lambda funktioniert, kann das Tool build-lambda-zip
hilfreich sein.
Holen Sie sich das Werkzeug
go.exe installieren github.com/aws/aws-lambda-go/cmd/build-lambda-zip@latest
Verwenden Sie das Tool von Ihrem GOPATH
. Wenn Sie eine Standardinstallation von Go haben, befindet sich das Tool in %USERPROFILE%Gobin
.
in 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
in 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
Für Anwendungen, die CGO erfordern, muss die Build-Umgebung eine installierte GNU-libc-Version verwenden, die mit der Ziel-Lambda-Laufzeitumgebung kompatibel ist. Andernfalls kann die Ausführung mit Fehlern wie /lib64/libc.so.6: version `GLIBC_X.YZ' not found
fehlschlagen.
Lambda-Laufzeit | GLIBC-Version |
---|---|
provided.al2023 | 2.34 |
provided.al2 | 2.26 |
provided und go1.x | 2.17 |
Alternativ unterstützt Lambda Container-Images als Bereitstellungspaket-Alternative zu ZIP-Dateien. Weitere Informationen finden Sie in der offiziellen Dokumentation zum Arbeiten mit Container-Images.
Informationen zum Bereitstellen Ihrer Funktion finden Sie in der offiziellen Dokumentation zur Bereitstellung mithilfe der AWS CLI, AWS Cloudformation und AWS SAM.
Die Ereignismodelle können zur Modellierung von AWS-Ereignisquellen verwendet werden. Die offizielle Dokumentation enthält detaillierte Komplettlösungen.