Bibliotecas, exemplos e ferramentas para ajudar os desenvolvedores Go a desenvolver funções do AWS Lambda.
Para saber mais sobre como escrever funções AWS Lambda em Go, acesse a documentação oficial
// main.gopackage mainimport ( "github.com/aws/aws-lambda-go/lambda")func hello() (string, error) { return "Hello λ!", nil}func main() { // Make o manipulador disponível para chamada de procedimento remoto pelo AWS Lambdalambda.Start (hello) }
A preparação de um binário para implantação no AWS Lambda requer que ele seja compilado para Linux e colocado em um arquivo .zip. Ao usar o tempo de execução provided
, provided.al2
ou provided.al2023
, o executável no arquivo .zip deve ser denominado bootstrap
. A arquitetura padrão do Lambda é x86_64
, portanto, durante a compilação cruzada de um ambiente não x86, o executável deve ser compilado com GOARCH=amd64
. Da mesma forma, se a função Lambda for configurada para usar ARM, o executável deverá ser compilado com GOARCH=arm64
.
GOOS=linux GOARCH=amd64 go build -o bootstrap main.go zip lambda-handler.zip inicialização
No Linux, o comportamento padrão do compilador Go é vincular o executável de saída à libc do sistema para obter algumas funcionalidades da biblioteca padrão (por exemplo, pesquisas de DNS). Se o ambiente de compilação estiver usando uma distribuição Linux com uma versão GNU libc mais recente que o ambiente de implantação, o aplicativo quando implantado no Lambda poderá falhar com um erro como /lib64/libc.so.6: version `GLIBC_X.YZ' not found
.
A maioria dos aplicativos Go não requer vinculação ao sistema libc. Este comportamento pode ser desabilitado usando a variável de ambiente CGO_ENABLED
.
CGO_ENABLED=0 go build -o bootstrap main.go zip lambda-handler.zip bootstrap
Consulte Usando CGO
Os desenvolvedores do Windows podem ter problemas para produzir um arquivo zip que marque o binário como executável no Linux. Para criar um .zip que funcione no AWS Lambda, a ferramenta build-lambda-zip
pode ser útil.
Obtenha a ferramenta
go.exe instale github.com/aws/aws-lambda-go/cmd/build-lambda-zip@latest
Use a ferramenta do seu GOPATH
. Se você tiver uma instalação padrão do Go, a ferramenta estará em %USERPROFILE%Gobin
.
em 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
no 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 inicialização
Para aplicativos que exigem CGO, o ambiente de construção deve usar uma versão GNU libc instalada compatível com o tempo de execução do Lambda de destino. Caso contrário, a execução poderá falhar com erros como /lib64/libc.so.6: version `GLIBC_X.YZ' not found
.
Tempo de execução do Lambda | Versão GLIBC |
---|---|
provided.al2023 | 2,34 |
provided.al2 | 2.26 |
provided e go1.x | 2.17 |
Como alternativa, o Lambda oferece suporte a imagens de contêiner como uma alternativa de pacote de implantação aos arquivos .zip. Para obter mais informações, consulte a documentação oficial para trabalhar com imagens de contêiner.
Para implantar sua função, consulte a documentação oficial para implantação usando AWS CLI, AWS Cloudformation e AWS SAM.
Os modelos de eventos podem ser usados para modelar fontes de eventos da AWS. A documentação oficial contém orientações detalhadas.