

# Criar funções do Lambda com Go
<a name="lambda-golang"></a>

O Go é implementado de forma diferente de outros runtimes gerenciados. Como o Go é compilado nativamente com um binário executável, ele não requer um runtime de linguagem dedicado. Use um [runtime somente de sistema operacional](runtimes-provided.md) (a família de runtime `provided`) para implantar funções do Go no Lambda.

**Topics**
+ [Suporte do runtime do Go](#golang-al1)
+ [Ferramentas e bibliotecas](#golang-libraries)
+ [Definição dos manipuladores de função do Lambda em Go](golang-handler.md)
+ [Usar o objeto de contexto do Lambda para recuperar informações das funções em Go](golang-context.md)
+ [Implantar funções do Lambda em Go com arquivos .zip](golang-package.md)
+ [Implantar funções do Lambda em Go com imagens de contêiner](go-image.md)
+ [Como trabalhar com camadas para funções do Lambda em Go](golang-layers.md)
+ [Registrar em log e monitorar funções do Lambda em Go](golang-logging.md)
+ [Instrumentação do código Go no AWS Lambda](golang-tracing.md)

## Suporte do runtime do Go
<a name="golang-al1"></a>

O runtime gerenciado do Go 1.x para Lambda foi [descontinuado](lambda-runtimes.md#runtime-support-policy). Se tiver funções que usem o runtime do Go 1.x, você deverá migrar suas funções para `provided.al2023` ou `provided.al2`. Os runtimes `provided.al2023` e `provided.al2` oferecem várias vantagens em comparação ao `go1.x`, incluindo compatibilidade com a arquitetura arm64 (processadores AWS Graviton2), binários menores e tempos de invocação um pouco mais rápidos.

Nenhuma alteração de código é necessária para essa migração. As únicas alterações necessárias estão relacionadas à forma como você cria seu pacote de implantação e ao runtime que você usa para criar sua função. Para obter mais informações, consulte [Migrating AWS Lambda functions from the Go1.x runtime to the custom runtime on Amazon Linux 2](https://aws.amazon.com/blogs/compute/migrating-aws-lambda-functions-from-the-go1-x-runtime-to-the-custom-runtime-on-amazon-linux-2/) no *AWS Compute Blog*.


| Nome | Identificador | Sistema operacional | Data da substituição | Bloquear a criação de funções | Bloquear a atualização de funções | 
| --- | --- | --- | --- | --- | --- | 
| Runtime somente para sistema operacional | `provided.al2023` | Amazon Linux 2023 |  30 de junho de 2029  |  31 de julho de 2029  |  31 de agosto de 2029  | 
| Runtime somente para sistema operacional | `provided.al2` | Amazon Linux 2 |  31 de julho de 2026  |  31 de agosto de 2026  |  30 de setembro de 2026  | 

## Ferramentas e bibliotecas
<a name="golang-libraries"></a>

O Lambda fornece as seguintes ferramentas e bibliotecas para o runtime do Go:
+ [AWS SDK para Go v2](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2): o SDK oficial da AWS para a linguagem de programação Go.
+ [github.com/aws/aws-lambda-go/lambda](https://github.com/aws/aws-lambda-go/tree/master/lambda): a implementação do modelo de programação do Lambda para Go. Esse pacote é usado pelo AWS Lambda para invocar o [handler](golang-handler.md).
+ [github.com/aws/aws-lambda-go/lambdacontext](https://github.com/aws/aws-lambda-go/tree/master/lambdacontext): auxiliares para acesso a informações do [objeto de contexto](golang-context.md).
+ [github.com/aws/aws-lambda-go/events](https://github.com/aws/aws-lambda-go/tree/master/events): esta biblioteca fornece definições de tipos para integrações comuns de origens de eventos.
+ [github.com/aws/aws-lambda-go/cmd/build-lambda-zip](https://github.com/aws/aws-lambda-go/tree/master/cmd/build-lambda-zip): Esta ferramenta pode ser usada para criar um archive com arquivo .zip no Windows.

Para obter mais informações, consulte [aws-lambda-go](https://github.com/aws/aws-lambda-go) no GitHub.

O Lambda fornece as seguintes aplicações de exemplo para o runtime do Go:

**Aplicativos do Lambda de exemplo do em Go**
+ [go-al2](https://github.com/aws-samples/sessions-with-aws-sam/tree/master/go-al2): uma função olá, mundo que retorna o endereço IP público. Esta aplicação usa o runtime `provided.al2` personalizado.
+ [blank-go](https://github.com/awsdocs/aws-lambda-developer-guide/tree/main/sample-apps/blank-go): uma função do Go que mostra o uso das bibliotecas do Go do Lambda, o registro em log, as variáveis de ambiente e o AWS SDK. Esta aplicação usa o runtime `go1.x`.