

# Creación de funciones de Lambda con Go
<a name="lambda-golang"></a>

Go se implementa de manera distinta a otros tiempos de ejecución administrados. Como Go se compila de forma nativa en un archivo binario ejecutable, no requiere un tiempo de ejecución de lenguaje dedicado. Utilice un [tiempo de ejecución exclusivo para el sistema operativo](runtimes-provided.md) (la familia de tiempos de ejecución `provided`) para implementar las funciones de Go en Lambda.

**Topics**
+ [Compatibilidad del tiempo de ejecución de Go](#golang-al1)
+ [Herramientas y bibliotecas](#golang-libraries)
+ [Definición de controladores de funciones de Lambda en Go](golang-handler.md)
+ [Uso del objeto de contexto Lambda para recuperar la información de la función Go](golang-context.md)
+ [Implementar funciones de Lambda en Go con archivos .zip](golang-package.md)
+ [Implemente funciones Go Lambda con imágenes de contenedor](go-image.md)
+ [Uso de capas para funciones de Lambda en Go](golang-layers.md)
+ [Registro y supervisión de las funciones de Lambda en Go](golang-logging.md)
+ [Instrumentación del código Go en AWS Lambda](golang-tracing.md)

## Compatibilidad del tiempo de ejecución de Go
<a name="golang-al1"></a>

El tiempo de ejecución administrado de Go 1.x para Lambda ha quedado [obsoleto](lambda-runtimes.md#runtime-support-policy). Si tiene funciones que usan el tiempo de ejecución de Go 1.x, debe migrar sus funciones a `provided.al2023` o `provided.al2`. Los tiempos de ejecución `provided.al2023` y `provided.al2` ofrecen varias ventajas sobre `go1.x`, incluida la compatibilidad con la arquitectura arm64 (procesadores Graviton2 de AWS), binarios más pequeños y tiempos de invocación ligeramente más rápidos.

No se requieren cambios de código para esta migración. Los únicos cambios necesarios se refieren a la forma en que se compila el paquete de implementación y al tiempo de ejecución que se utiliza para crear la función. Para obtener más información, consulte [Migración de las funciones de AWS Lambda del tiempo de ejecución de Go1.x al tiempo de ejecución personalizado en 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/) en el *Blog de computación de AWS*.


| Nombre | Identificador | Sistema operativo | Fecha de baja | Bloqueo de la función Crear | Bloqueo de la función Actualizar | 
| --- | --- | --- | --- | --- | --- | 
|  Tiempo de ejecución exclusivo del sistema operativo  |  `provided.al2023`  |  Amazon Linux 2023  |   30 de junio de 2029   |   31 de julio de 2029   |   31 de agosto de 2029   | 
|  Tiempo de ejecución exclusivo del sistema operativo  |  `provided.al2`  |  Amazon Linux 2  |   31 de julio de 2026   |   31 de agosto de 2026   |   30 de septiembre de 2026   | 

## Herramientas y bibliotecas
<a name="golang-libraries"></a>

Lambda proporciona las siguientes herramientas y bibliotecas para el tiempo de ejecución Go:
+ [AWS SDK para Go v2](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2): el SDK oficial de AWS para el lenguaje de programación Go.
+ [github.com/aws/aws-lambda-go/lambda](https://github.com/aws/aws-lambda-go/tree/master/lambda): la implementación del modelo de programación de Lambda para Go. AWS Lambda utiliza este paquete para invocar su [controlador](golang-handler.md).
+ [github.com/aws/aws-lambda-go/lambdacontext](https://github.com/aws/aws-lambda-go/tree/master/lambdacontext): elementos auxiliares para obtener acceso a la información de contexto del [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 proporciona definiciones de tipos para las integraciones de orígenes de eventos comunes.
+ [github.com/aws/aws-lambda-go/cmd/build-lambda-zip](https://github.com/aws/aws-lambda-go/tree/master/cmd/build-lambda-zip): Esta herramienta se puede utilizar para crear un archivo.zip en Windows.

Para obtener más información, consulte [aws-lambda-go](https://github.com/aws/aws-lambda-go) en GitHub.

Lambda proporciona las siguientes aplicaciones de ejemplo para el tiempo de ejecución Go:

**Aplicaciones de ejemplo de Lambda en Go**
+ [go-al2](https://github.com/aws-samples/sessions-with-aws-sam/tree/master/go-al2): una función de “Hola, mundo” que devuelve la dirección IP pública. Esta aplicación utiliza el tiempo de ejecución personalizado `provided.al2`.
+ [blank-go](https://github.com/awsdocs/aws-lambda-developer-guide/tree/main/sample-apps/blank-go): una función Go que muestra el uso de las bibliotecas de Go de Lambda, el registro, las variables de entorno y el AWS SDK. Esta aplicación utiliza el tiempo de ejecución `go1.x`.