

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Uso de la plataforma Elastic Beanstalk Go
<a name="go-environment"></a>

En este tema se describe cómo configurar, crear y ejecutar las aplicaciones Go en Elastic Beanstalk.

AWS Elastic Beanstalk admite varias ramas de plataforma para diferentes versiones del lenguaje de programación Go. Consulte [Go](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.go) en el documento *Plataformas de AWS Elastic Beanstalk * para ver una lista completa.

Existen dos formas de implementar aplicaciones sencillas de Go:
+ Puede proporcionar un paquete de código fuente con un archivo en la raíz llamado `application.go` que contenga el paquete principal de la aplicación. Elastic Beanstalk crea el binario con el siguiente comando:

  ```
  go build -o bin/application application.go
  ```

  Después de compilar la aplicación, Elastic Beanstalk la inicia en el puerto 5000.
+ Puede proporcionar un paquete de código fuente con un archivo binario llamado `application`. El archivo binario puede estar ubicado en la raíz o en el directorio `bin/` del paquete de código fuente. Si sitúa el archivo binario `application` en las dos ubicaciones, Elastic Beanstalk utiliza el archivo del directorio `bin/`.

  Elastic Beanstalk lanza esta aplicación en el puerto 5000.

En ambos casos, con las ramificaciones de la plataforma de Go compatibles, también puede proporcionar requisitos de módulo en un archivo llamado `go.mod`. Para obtener más información, consulte [Migración a módulos Go](https://blog.golang.org/migrating-to-go-modules) en el blog Go.

Existen dos modos de implementar aplicaciones complejas de Go:
+ Puede proporcionar un paquete de código fuente que incluya los archivos de código fuente de la aplicación junto con un archivo [Buildfile](go-buildfile.md) y un archivo [Procfile](go-procfile.md). El archivo Buildfile contiene un comando para crear la aplicación y el archivo Procfile incluye instrucciones para ejecutar la aplicación.
+ Puede proporcionar un paquete de código fuente que incluya los archivos binarios de la aplicación junto con un archivo Procfile. El archivo Procfile contiene instrucciones para ejecutar la aplicación.

La plataforma Go incluye un servidor proxy para servir recursos estáticos, reenviar el tráfico a la aplicación y comprimir las respuestas. Puede [ampliar o invalidar la configuración del proxy predeterminada](go-nginx.md) para escenarios avanzados.

Para obtener más información sobre las diversas formas en las que puede ampliar una plataforma Elastic Beanstalk basada en Linux, consulte [Ampliación de las plataformas Linux de Elastic Beanstalk](platforms-linux-extend.md).

## Configuración del entorno de Go
<a name="go-options"></a>

La configuración de la plataforma Go te permite ajustar el comportamiento de tus instancias de Amazon EC2 . Puede editar la configuración de instancias de Amazon del entorno de Elastic Beanstalk mediante EC2 la consola de Elastic Beanstalk.

Utilice la consola de Elastic Beanstalk para habilitar la rotación de registros en Amazon S3 y configurar variables que la aplicación pueda leer desde el entorno.

**Para configurar el entorno Go en la consola de Elastic Beanstalk**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

1. En el panel de navegación, elija **Environments** (Entornos) y, a continuación, elija el nombre del entorno en la lista.

1. En el panel de navegación, elija **Configuración**.

1. En la categoría de configuración **Actualizaciones, supervisión y registro**, seleccione **Edición de**.

### Log Options (Opciones de registro)
<a name="go-options-logs"></a>

La sección Log Options tiene dos valores:
+ **Instance profile (Perfil de instancia)**: especifica el perfil de instancia que tiene permiso para obtener acceso al bucket de Amazon S3 asociado con la aplicación.
+ **Habilite la rotación de archivos de registro a Amazon S3**: especifica si los archivos de registro de las EC2 instancias de Amazon de su aplicación se copian en el bucket de Amazon S3 asociado a su aplicación.

### Archivos estáticos
<a name="go-options-staticfiles"></a>

Para mejorar el rendimiento, puede utilizar la sección **Static files** (Archivos estáticos) para configurar el servidor proxy para entregar archivos estáticos de servidor (por ejemplo, HTML o imágenes) desde un conjunto de directorios dentro de su aplicación web. Para cada directorio, se establece la ruta virtual para la asignación de directorios. Cuando el servidor proxy recibe una solicitud de un archivo en la ruta especificada, proporciona directamente el archivo en lugar de direccionar la solicitud la aplicación.

Para obtener más información sobre la configuración de archivos estáticos mediante archivos de configuración o la consola de Elastic Beanstalk, consulte [Distribución de archivos estáticos](environment-cfg-staticfiles.md).

### Propiedades del entorno
<a name="go-options-properties"></a>

La sección **Propiedades del entorno** le permite especificar los ajustes de configuración del entorno en las EC2 instancias de Amazon que ejecutan su aplicación. Las propiedades del entorno se pasan como pares de clave-valor a la aplicación.

Dentro del entorno de Go que se ejecuta en Elastic Beanstalk, es posible acceder a las variables de entorno mediante la función `os.Getenv`. Por ejemplo, podría leer una propiedad denominada `API_ENDPOINT` en una variable con el siguiente código:

```
endpoint := os.Getenv("API_ENDPOINT")
```

Para obtener más información, consulte [Configuración de las variables de entorno y otras opciones de software](environments-cfg-softwaresettings.md).

## Espacios de nombres de configuración de Go
<a name="go-namespaces"></a>

Puede usar un [archivo de configuración](ebextensions.md) para definir opciones de configuración y realizar otras tareas de configuración en las instancias durante las implementaciones. Las opciones de configuración pueden ser [específicas de la plataforma](command-options-specific.md) o aplicarse a [todas las plataformas](command-options-general.md) del servicio de Elastic Beanstalk en su conjunto. Las opciones de configuración se organizan en *espacios de nombres*.

La plataforma Go no define ningún espacio de nombres específico de la plataforma. Puede configurar el proxy para que sirva archivos estáticos mediante el espacio de nombres `aws:elasticbeanstalk:environment:proxy:staticfiles`. Para obtener información detallada y un ejemplo, consulte [Distribución de archivos estáticos](environment-cfg-staticfiles.md).

Elastic Beanstalk cuenta con numerosas opciones de configuración para personalizar el entorno. Además de los archivos de configuración, también puede definir opciones en la consola, configuraciones guardadas, la CLI de EB o la AWS CLI. Para obtener más información, consulte [Opciones de configuración](command-options.md).

## Plataforma Go de la AMI de Amazon Linux (anterior a Amazon Linux 2)
<a name="go.alami"></a>

Si su entorno Elastic Beanstalk Go utiliza una versión de la plataforma AMI de Amazon Linux (anterior a Amazon Linux 2), lea la información adicional de esta sección.

**Notas**  
La información de este tema solo se aplica a las ramas de plataforma basadas en la AMI de Amazon Linux (AL1). AL2Las ramas de la AL2 plataforma 023/ no son compatibles con las versiones anteriores de la plataforma AMI (AL1) de Amazon Linux y *requieren ajustes de configuración diferentes*.
 [El 18 de julio de 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **Elastic Beanstalk estableció el estado de todas las ramas de plataforma basadas en la AMI AL1 de Amazon Linux () como retiradas.** Para obtener más información sobre la migración a una ramificación de la plataforma Amazon Linux 2023 actual y totalmente compatible, consulte [Migración de su aplicación de Linux de Elastic Beanstalk a Amazon Linux 2023 o Amazon Linux 2](using-features.migration-al.md).

### Espacios de nombres de configuración de Go: AMI de Amazon Linux () AL1
<a name="go.alami.namespaces"></a>

Puede usar un [archivo de configuración](ebextensions.md) para definir opciones de configuración y realizar otras tareas de configuración en las instancias durante las implementaciones. Las opciones de configuración pueden ser [específicas de la plataforma](command-options-specific.md) o aplicarse a [todas las plataformas](command-options-general.md) del servicio de Elastic Beanstalk en su conjunto. Las opciones de configuración se organizan en *espacios de nombres*.

**nota**  
La información de este tema solo se aplica a las ramas de plataforma basadas en la AMI de Amazon Linux (AL1). AL2Las ramas de la AL2 plataforma 023/ no son compatibles con las versiones anteriores de la plataforma AMI (AL1) de Amazon Linux y *requieren ajustes de configuración diferentes*.

La plataforma Go AMI de Amazon admite un espacio de nombres de configuración específico de la plataforma, además de los [espacios de nombre compatibles con todas las plataformas](command-options-general.md). El espacio de nombres `aws:elasticbeanstalk:container:golang:staticfiles` le permite definir opciones que asignen las rutas de su aplicación web a carpetas del paquete de código fuente de la aplicación que incluyen contenido estático.

Por ejemplo, este [archivo de configuración](ebextensions.md) le indica el servidor proxy que proporcione los archivos en la carpeta `staticimages` de la ruta `/images`:

**Example .ebextensions/go-settings.config**  

```
option_settings:
  aws:elasticbeanstalk:container:golang:staticfiles:
    /html: statichtml
    /images: staticimages
```

Elastic Beanstalk cuenta con numerosas opciones de configuración para personalizar el entorno. Además de los archivos de configuración, también puede definir opciones en la consola, configuraciones guardadas, la CLI de EB o la AWS CLI. Para obtener más información, consulte [Opciones de configuración](command-options.md).

# Configuración de comandos de inicio personalizados con Procfile en Elastic Beanstalk
<a name="go-procfile"></a>

Si desea especificar un comando personalizado que inicie una aplicación de Go, incluya un archivo llamado `Procfile` en la raíz del paquete de código fuente.

Para obtener más información sobre cómo escribir y usar un `Procfile`, consulte[Buildfile y Procfile](platforms-linux-extend.build-proc.md).

**Example Procfile**  

```
web: bin/server
queue_process: bin/queue_processor
foo: bin/fooapp
```

Debe llamar a la aplicación `web`, principal y enumerarla como el primer comando en su `Procfile`. Elastic Beanstalk expone la aplicación `web` principal en la raíz de la URL entorno; por ejemplo, `http://my-go-env.elasticbeanstalk.com`.

Elastic Beanstalk también ejecuta todas las aplicaciones cuyo nombre no contiene el prefijo `web_`, aunque estas aplicaciones no están disponibles desde el exterior de la instancia.

Elastic Beanstalk espera que los procesos del archivo `Procfile` se ejecuten de forma continua. Elastic Beanstalk supervisa estas aplicaciones y reinicia todos los procesos que terminan. En los procesos de corta ejecución, utilice un comando [Buildfile](go-buildfile.md).

## Uso de un archivo Procfile en la AMI de Amazon Linux (anterior a Amazon Linux 2)
<a name="go-procfile.alami"></a>

Si su entorno Elastic Beanstalk Go utiliza una versión de la plataforma AMI de Amazon Linux (anterior a Amazon Linux 2), lea la información adicional de esta sección.

**Notas**  
La información de este tema solo se aplica a las ramas de plataforma basadas en la AMI de Amazon Linux (AL1). AL2Las ramas de la AL2 plataforma 023/ no son compatibles con las versiones anteriores de la plataforma AMI (AL1) de Amazon Linux y *requieren ajustes de configuración diferentes*.
 [El 18 de julio de 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **Elastic Beanstalk estableció el estado de todas las ramas de plataforma basadas en la AMI AL1 de Amazon Linux () como retiradas.** Para obtener más información sobre la migración a una ramificación de la plataforma Amazon Linux 2023 actual y totalmente compatible, consulte [Migración de su aplicación de Linux de Elastic Beanstalk a Amazon Linux 2023 o Amazon Linux 2](using-features.migration-al.md).

### Transferencia de puertos: AMI de Amazon Linux (AL1)
<a name="go-procfile.alami.ports"></a>

**nota**  
La información de este tema solo se aplica a las ramas de plataforma basadas en la AMI de Amazon Linux (AL1). AL2Las ramas de la AL2 plataforma 023/ no son compatibles con las versiones anteriores de la plataforma AMI (AL1) de Amazon Linux y *requieren ajustes de configuración diferentes*.

Elastic Beanstalk configura el proxy nginx para redirigir solicitudes a la aplicación en el número de puerto especificado en la `PORT` [propiedad del entorno](go-environment.md#go-options) de la aplicación. La aplicación siempre debe usar ese puerto como escucha. Para obtener acceso a esta variable dentro de la aplicación, llame al método `os.Getenv("PORT")`.

Elastic Beanstalk utiliza el número de puerto especificado en la propiedad del entorno `PORT` como puerto de la primera aplicación de `Procfile` y después va a aumentando el número de puerto de las siguientes aplicaciones de `Procfile` en incrementos de 100. Si no se establece la propiedad del entorno `PORT`, Elastic Beanstalk utiliza 5000 para el puerto inicial.

En el ejemplo anterior, la propiedad de entorno `PORT` de la aplicación `web` es 5000, la variable de la aplicación `queue_process` es 5100 y la variable de la aplicación `foo` es 5200. 

Puede especificar el puerto inicial utilizando la opción `PORT` con el espacio de nombres [aws:elasticbeanstalk:application:environment](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment), tal y como se muestra en el ejemplo siguiente. 

```
option_settings:
  - namespace:  aws:elasticbeanstalk:application:environment
    option_name:  PORT
    value:  <first_port_number>
```

Para obtener más información sobre cómo configurar las propiedades de la aplicación, consulte [Opciones de configuración](ebextensions-optionsettings.md).

# Compilación y configuración personalizadas con un archivo de compilación en Elastic Beanstalk
<a name="go-buildfile"></a>

Si desea especificar un comando personalizado de configuración y compilación para la aplicación de Go, incluya un archivo llamado `Buildfile` en la raíz del paquete de código fuente. El nombre de archivo distingue entre mayúsculas y minúsculas. Utilice el formato siguiente en el archivo `Buildfile`: 

```
<process_name>: <command>
```

El comando del archivo `Buildfile` debe ajustarse a la siguiente expresión regular: `^[A-Za-z0-9_]+:\s*.+$`.

Elastic Beanstalk no supervisa la aplicación que se ejecuta con un `Buildfile`. Utilice un archivo `Buildfile` con comandos que se ejecuten durante cortos periodos de tiempo y terminen después de completar las tareas. Para procesos de larga educación que no deben terminar, utilice en su lugar el archivo [Procfile](go-procfile.md).

En el siguiente ejemplo de `Buildfile`, `build.sh` es un script de shell que se encuentra en la raíz del paquete de código fuente:

```
make: ./build.sh
```

Todas las rutas de `Buildfile` son rutas relativas que hacen referencia a la raíz del paquete de código fuente. Si sabe con antelación dónde se van a situar los archivos en la instancia, puede incluir rutas absolutas en `Buildfile`.

# Configuración del servidor proxy
<a name="go-nginx"></a>

Elastic Beanstalk utiliza nginx como proxy inverso para asignar su aplicación al equilibrador de carga de Elastic Load Balancing en el puerto 80. Elastic Beanstalk proporciona una configuración de nginx predeterminada que puede ampliar o anular por completo con su propia configuración.

De forma predeterminada, Elastic Beanstalk configura el proxy nginx para reenviar las solicitudes a la aplicación en el puerto 5000. Puede invalidar el puerto predeterminado estableciendo la [propiedad del entorno](go-environment.md#go-options) `PORT` en el puerto en el que desea que la aplicación principal esté a la escucha.

**nota**  
El puerto en que su aplicación está a la escucha no afecta al puerto en el que el servidor nginx está a la escucha para recibir las solicitudes del equilibrador de carga.

**Configuración del servidor proxy en la versión de su plataforma**  
Todas las AL2 plataformas AL2 023/ admiten una función de configuración de proxy uniforme. Para obtener más información sobre la configuración del servidor proxy en las versiones de su plataforma que ejecutan AL2 AL2 023/, consulte. [Configuración del proxy inverso](platforms-linux-extend.proxy.md) 

## Configuración del proxy en la AMI de Amazon Linux (anterior a Amazon Linux 2)
<a name="go-nginx.alami"></a>

**Notas**  
La información de este tema solo se aplica a las ramas de plataforma basadas en la AMI de Amazon Linux (AL1). AL2Las ramas de la AL2 plataforma 023/ no son compatibles con las versiones anteriores de la plataforma AMI (AL1) de Amazon Linux y *requieren ajustes de configuración diferentes*.
 [El 18 de julio de 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **Elastic Beanstalk estableció el estado de todas las ramas de plataforma basadas en la AMI AL1 de Amazon Linux () como retiradas.** Para obtener más información sobre la migración a una ramificación de la plataforma Amazon Linux 2023 actual y totalmente compatible, consulte [Migración de su aplicación de Linux de Elastic Beanstalk a Amazon Linux 2023 o Amazon Linux 2](using-features.migration-al.md).

Si su entorno Elastic Beanstalk Go utiliza una versión de la plataforma AMI de Amazon Linux (anterior a Amazon Linux 2), lea la información de esta sección.

### Ampliación y anulación de la configuración de proxy predeterminada: AMI de Amazon Linux () AL1
<a name="go-nginx.alami.extending"></a>

Elastic Beanstalk utiliza nginx como proxy inverso para asignar la aplicación al equilibrador de carga del puerto 80. Si desea proporcionar su propia configuración nginx, puede anular la configuración predeterminada proporcionada por Elastic Beanstalk agregando el archivo `.ebextensions/nginx/nginx.conf` en el paquete de código fuente. Si este archivo está presente, Elastic Beanstalk lo utiliza en lugar del archivo de configuración nginx predeterminado.

Si también desea incluir directivas en el bloque `nginx.conf` `http`, puede proporcionar otros archivos de configuración en el directorio `.ebextensions/nginx/conf.d/` del paquete de código fuente. Todos los archivos de este directorio debe tener la extensión `.conf`. 

Para aprovechar la funcionalidad proporcionada por Elastic Beanstalk, como [Informes y monitoreo de estado mejorados de Elastic Beanstalk](health-enhanced.md), las asignaciones automáticos de aplicaciones y los archivos estáticos, debe incluir la línea siguiente en el bloque `server` del archivo de configuración nginx:

```
include conf.d/elasticbeanstalk/*.conf;
```