Bibliotecas, ejemplos y herramientas para ayudar a los desarrolladores de Go a desarrollar funciones de AWS Lambda.
Para obtener más información sobre cómo escribir funciones de AWS Lambda en Go, vaya a la documentación oficial.
// main.gopackage mainimport ( "github.com/aws/aws-lambda-go/lambda")func hello() (cadena, error) { return "¡Hola λ!", nil}func main() { // Hacer el controlador disponible para la llamada a procedimiento remoto mediante AWS Lambdalambda.Start (hola) }
La preparación de un binario para implementarlo en AWS Lambda requiere que esté compilado para Linux y colocado en un archivo .zip. Cuando se utiliza el tiempo de ejecución provided
, provided.al2
o provided.al2023
, el ejecutable dentro del archivo .zip debe llamarse bootstrap
. La arquitectura predeterminada de Lambda es x86_64
, por lo que cuando se realiza una compilación cruzada desde un entorno que no sea x86, el ejecutable debe compilarse con GOARCH=amd64
. Del mismo modo, si la función Lambda se configurará para usar ARM, el ejecutable debe compilarse con GOARCH=arm64
.
GOOS=linux GOARCH=amd64 go build -o bootstrap main.go zip lambda-handler.zip arranque
En Linux, el comportamiento predeterminado del compilador Go es vincular el ejecutable de salida a la libc del sistema para algunas funciones de biblioteca estándar (por ejemplo, búsquedas de DNS). Si el entorno de compilación utiliza una distribución de Linux con una versión de GNU libc más reciente que el entorno de implementación, la aplicación cuando se implementa en Lambda puede fallar con un error como /lib64/libc.so.6: version `GLIBC_X.YZ' not found
.
La mayoría de las aplicaciones Go no requieren vinculación a la libc del sistema. Este comportamiento se puede desactivar utilizando la variable de entorno CGO_ENABLED
.
CGO_ENABLED=0 go build -o bootstrap main.go zip lambda-handler.zip bootstrap
Ver Uso de CGO
Los desarrolladores de Windows pueden tener problemas para generar un archivo zip que marque el binario como ejecutable en Linux. Para crear un .zip que funcione en AWS Lambda, la herramienta build-lambda-zip
puede resultar útil.
Consigue la herramienta
go.exe instala github.com/aws/aws-lambda-go/cmd/build-lambda-zip@latest
Utilice la herramienta de su GOPATH
. Si tiene una instalación predeterminada de Go, la herramienta estará en %USERPROFILE%Gobin
.
en cmd.exe:
establecer 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 arranque lambda-handler.zip
Para las aplicaciones que requieren CGO, el entorno de compilación debe utilizar una versión de GNU libc instalada compatible con el tiempo de ejecución de Lambda de destino. De lo contrario, la ejecución puede fallar con errores como /lib64/libc.so.6: version `GLIBC_X.YZ' not found
.
tiempo de ejecución lambda | Versión GLIBC |
---|---|
provided.al2023 | 2.34 |
provided.al2 | 2.26 |
provided y go1.x | 2.17 |
Alternativamente, Lambda admite imágenes de contenedores como una alternativa de paquete de implementación a los archivos .zip. Para obtener más información, consulte la documentación oficial para trabajar con imágenes de contenedores.
Para implementar su función, consulte la documentación oficial para la implementación mediante AWS CLI, AWS Cloudformation y AWS SAM.
Los modelos de eventos se pueden utilizar para modelar orígenes de eventos de AWS. La documentación oficial tiene tutoriales detallados.