

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.

# Creación de imágenes de contenedores para entornos de Beanstalk Cluster
<a name="beanstalk-cluster-app-versions"></a>

Un entorno de Beanstalk Cluster ejecuta una aplicación desde una imagen de contenedor. Al igual que con Beanstalk Standard, se implementa una versión * de * la aplicación en el entorno. En un entorno de Beanstalk Cluster, la versión de la aplicación proporciona una imagen que Elastic Beanstalk ejecuta tal cual o una fuente que Elastic Beanstalk incorpora en una imagen. En este tema se describen los requisitos previos, tanto las rutas de creación como el estado de procesamiento y el comportamiento de eliminación específicos de los entornos de Beanstalk Cluster. La implementación, el etiquetado y las cuotas de versión funcionan de la misma manera en ambos modos, al igual que los procedimientos generales de creación y eliminación. Consulte [Administración de versiones de la aplicación](applications-versions.md) y [Etiquetado de versiones de la aplicación](applications-versions-tagging.md).

Para una implementación de Beanstalk Cluster, cree la versión de la aplicación con una `ImageConfiguration` que contenga exactamente uno de los dos miembros. `Source`identifica una imagen de contenedor que ya está compilada y `Build` especifica cómo Elastic Beanstalk crea una imagen a partir de un paquete fuente. Elastic Beanstalk rechaza una `CreateApplicationVersion` solicitud que `ImageConfiguration` proporciona ambos miembros o ninguno, una solicitud que proporciona ambos `ImageConfiguration.Source` y una solicitud que se combina `ImageConfiguration` con el `BuildConfiguration` parámetro`SourceBundle`, que configura AWS CodeBuild las versiones de la aplicación para Beanstalk Standard. En las siguientes secciones se describe cada ruta.

## Requisitos previos
<a name="beanstalk-cluster-app-versions-prerequisites"></a>

En los ejemplos de este tema se utiliza el AWS CLI. Instálelo y configúrelo antes de ejecutar los comandos; utilizan la cuenta y AWS la región de su AWS CLI configuración. Consulte [Antes de empezar](beanstalk-cluster-getting-started.md#beanstalk-cluster-getting-started-prerequisites).

Prepara los siguientes recursos y accesos:
+ Para una compilación fuente, el `CodeBuildServiceRole` requerido por`ImageConfiguration.Build`. Esta es la función de creación de * imágenes del entorno*, con la que se crea la consola de Elastic Beanstalk. `aws-elasticbeanstalk-eks-image-build-role` Para conocer sus políticas y servicios confiables, y para conocer el límite de funciones, consulte y. [Funciones que usted proporciona](beanstalk-cluster-permissions.md#beanstalk-cluster-permissions-customer-roles) [Permisos para Beanstalk Cluster](beanstalk-cluster-permissions.md)
+ En el caso de una`ImageConfiguration.Source`, una imagen de contenedor que ya se ha incorporado a su registro. El rol de nodo utilizado por el entorno debe poder extraer la imagen. Consulte [Funciones que usted proporciona](beanstalk-cluster-permissions.md#beanstalk-cluster-permissions-customer-roles).
+ En el caso de una compilación fuente`SourceBundle`, un objeto de Amazon S3 que contenga la fuente de la aplicación. Cree el archivo como se describe en[Creación de una agrupación de orígenes de aplicación en Elastic Beanstalk.](applications-sourcebundle.md), cárguelo en un bucket de Amazon S3 de su cuenta y pase el bucket y la clave del objeto como `S3Bucket` y`S3Key`. `Process``true`Configúralo para iniciar la compilación; de lo contrario, la versión permanece`UNPROCESSED`.

## Entrada de imagen de contenedor
<a name="beanstalk-cluster-app-versions-image"></a>

Proporcione un `ImageConfiguration` `Source` miembro para una imagen de contenedor que ya esté creada y enviada a un registro. Elastic Beanstalk ejecuta la imagen sin ningún paso de creación. Contiene `Source` un solo campo que apunta a la imagen. `Uri` La imagen puede estar en Amazon Elastic Container Registry (Amazon ECR) o en cualquier registro que permita una extracción sin autenticar. Para una imagen privada, utilice Amazon ECR: el rol de nodo del entorno se autentica en ella. Una versión de aplicación creada a partir de una imagen proporcionada no necesita compilarse, por lo que Elastic Beanstalk la registra con el estado `UNPROCESSED` y está lista para implementarse en un entorno de Beanstalk Cluster.

Elastic Beanstalk registra el URI exactamente como usted lo proporciona, ya sea que nombre una etiqueta o un resumen. Una imagen que Elastic Beanstalk crea se graba mediante resumen.

Utilice esta forma cuando una canalización independiente genere la imagen o cuando se implemente una imagen producida por una versión anterior de la aplicación. Para que Elastic Beanstalk cree la imagen, proporcione un paquete fuente y un `Build` miembro, tal y como se describe a continuación.

## Proporcione el código fuente para que Elastic Beanstalk lo construya
<a name="beanstalk-cluster-app-versions-source"></a>

Indique `SourceBundle` cuándo Elastic Beanstalk debe crear la imagen del contenedor a partir del código fuente de la aplicación. `SourceBundle`Identifica el archivo fuente en Amazon Simple Storage Service (Amazon S3) con dos campos y. `S3Bucket` `S3Key` Un paquete fuente también requiere un `Build` miembro `ImageConfiguration` cuyo miembro especifique cómo Elastic Beanstalk convierte el código fuente en una imagen. `Process`Establézcalo `true` en la `CreateApplicationVersion` solicitud para iniciar la compilación; con, use. AWS CLI`--process` Si omites esta configuración, la versión de la aplicación basada en el código fuente permanece `UNPROCESSED` y la compilación no se inicia. Cuando se inicia el procesamiento, Elastic Beanstalk crea la imagen y la envía al Amazon Elastic Container Registry de su cuenta. Para ver los tipos de compilación de Docker y buildpack y su configuración, consulte. [Configuración de compilación](#beanstalk-cluster-app-versions-buildconfig)

**nota**  
En macOS, crea el archivo fuente `zip -X -r ../my-app.zip .` desde el directorio fuente. El ** comando ** Comprimir del Finder agrega entradas de `__MACOSX` metadatos, y la compilación de un paquete de compilación puede fallar en una de esas entradas al asignar un nombre a un archivo que no hayas creado. `zip: not a valid zip file`

Mientras se ejecuta la compilación, la versión de la aplicación informa del estado. `BUILDING` Se desplaza al `PROCESSED` momento en que se crea y envía la imagen, o a `FAILED` si la creación no se realiza correctamente.

## Configuración de compilación
<a name="beanstalk-cluster-app-versions-buildconfig"></a>

El `Build` miembro de `ImageConfiguration` acompaña al paquete fuente y controla el modo en que Elastic Beanstalk crea la imagen. Incluye los siguientes campos junto con el tipo de compilación que se describe a continuación:
+ `CodeBuildServiceRole`, la función de IAM que AWS CodeBuild asume la ejecución de la compilación en tu cuenta. Este campo es obligatorio para una compilación de origen.
+ `ComputeType`, el tamaño opcional del cálculo de compilación:`BUILD_GENERAL1_SMALL`,`BUILD_GENERAL1_MEDIUM`, o`BUILD_GENERAL1_LARGE`. Si lo omite, Elastic Beanstalk lo usa. `BUILD_GENERAL1_MEDIUM`
+ `TimeoutInMinutes`, el número opcional de minutos tras los cuales Elastic Beanstalk detiene una compilación que no ha finalizado. El valor puede ser de principio a fin. `5` `480` Si lo omite, Elastic Beanstalk utiliza minutos. `60`

El `Build` miembro selecciona uno de los dos tipos de compilación en su `Type` campo, que es obligatorio:
+ `docker`, Elastic Beanstalk crea la imagen a partir de un Dockerfile de su fuente. `DockerfileLocation`Establézcalo en la ruta del Dockerfile; si lo omite, Elastic Beanstalk lo utilizará en la raíz del código fuente. `Dockerfile`
+ `buildpack`, Elastic Beanstalk crea la imagen con paquetes de compilación nativos de la nube. `Buildpack`Configúrala en la imagen del generador que usa la compilación, por ejemplo`paketobuildpacks/builder-jammy-base`; Elastic Beanstalk pasa el valor a la compilación literalmente. El generador es necesario para crear un paquete de compilación. Elastic Beanstalk no detecta ninguno automáticamente y se produce un error al compilar un paquete de compilación sin ningún conjunto de compiladores.

El `Architecture` campo establece la arquitectura de CPU de destino de la imagen, ya sea o. `amd64` `arm64` Si lo omite, Elastic Beanstalk compila para. `amd64` Cree para la misma arquitectura que la configuración del `arch` entorno, que también es la predeterminada. `amd64` Una imagen creada para una arquitectura no se ejecuta en la otra. Para `arch`, consulte [Opciones de configuración para entornos de Beanstalk Cluster](command-options-general-eks.md).

## Inspeccione y supervise el estado del procesamiento
<a name="beanstalk-cluster-app-versions-processing"></a>

Una versión basada en el código fuente informa `BUILDING` mientras Elastic Beanstalk crea su imagen. Impleméntela solo después de que genere informes. `PROCESSED` El estado de `FAILED` significa que la compilación no se realizó correctamente y que la versión no se puede implementar. Un estado de `UNPROCESSED` significa que el procesamiento no se inició, por ejemplo, cuando se omitió `Process` la `CreateApplicationVersion` solicitud. La versión de una aplicación creada a partir de una imagen proporcionada también `UNPROCESSED` genera informes, pero está lista para implementarse porque su imagen no requiere compilación.

La descripción de una versión de la aplicación indica el estado de su imagen en forma de dos miembros, `ImageSource` y`ImageBuildConfiguration`. En el caso de una versión basada en el código fuente, `ImageBuildConfiguration` se hace eco de la configuración de compilación y `ImageSource` está ausente mientras la versión informa. `BUILDING` Cuando la compilación se realiza correctamente, `ImageSource` devuelve el URI anclado en el resumen de la imagen que la compilación produjo y publicó.

Comprueba el estado de procesamiento de una versión basada en el código fuente con. `DescribeApplicationVersions` `operation_start`Establezca la marca de tiempo registrada inmediatamente antes de la `CreateApplicationVersion` solicitud; las consultas de eventos que siguen la utilizan para asignar los eventos a la compilación.

```
$ aws elasticbeanstalk describe-application-versions \
    --application-name my-app \
    --version-labels v1-build \
    --query 'ApplicationVersions[0].Status' \
    --output text
```

Repite este comando hasta que la versión alcance el estado de terminal. `BUILDING`significa que la compilación aún se está ejecutando. Implemente la versión solo después de que `PROCESSED` presente un informe; un estado `FAILED` igual o `UNPROCESSED` significa que la versión no se puede implementar.

En el caso de una versión basada en el código fuente, un `PROCESSED` estado y un evento de finalización de la creación de la imagen confirman que Elastic Beanstalk creó y grabó la imagen. Recupera los eventos de la versión específica para distinguir una falla de terminal de una compilación que aún se está ejecutando:

```
$ aws elasticbeanstalk describe-events \
    --application-name my-app \
    --version-label v1-build \
    --start-time "$operation_start" \
    --max-items 20
```

Si la versión llega`FAILED`, `--severity ERROR` agréguela para recuperar sus eventos de error. Los eventos distinguen errores como la descarga del código fuente, la asunción de roles, la autenticación de Amazon ECR y los errores de creación o envío de imágenes:

```
$ aws elasticbeanstalk describe-events \
    --application-name my-app \
    --version-label v1-build \
    --severity ERROR \
    --start-time "$operation_start" \
    --max-items 20
```

Los eventos identifican qué etapa falló. Para ver por qué falló la compilación en sí, utilice el `BuildArn` informe de una versión basada en el código fuente, que identifica la AWS CodeBuild ejecución que ejecutó la compilación. Pásalo al siguiente comando para obtener el estado de la compilación y la ubicación de sus registros:

```
$ aws codebuild batch-get-builds \
    --ids {{build-arn}} \
    --query 'builds[0].{status:buildStatus,logGroup:logs.groupName,logStream:logs.streamName}'
```

La respuesta también incluye una `logs.deepLink` que abre la secuencia de registros de la compilación en la CloudWatch consola de Amazon.

Corrija la ubicación de origen, la configuración de compilación o la configuración de rol identificadas por el evento. Cree una nueva versión de la aplicación con una etiqueta nueva, `Process` configúrela en y`true`, a continuación, sondéela en`PROCESSED`. No implemente una versión en`FAILED`. El procesamiento correcto solo demuestra que la imagen está disponible para la versión de la aplicación; no verifica la implementación de un entorno.

## La aplicación de ejemplo
<a name="beanstalk-cluster-app-versions-sample"></a>

La versión de la aplicación es opcional al crear un entorno de Beanstalk Cluster. Cuando `CreateEnvironment` se invoca sin una etiqueta de versión (o con una en blanco), Elastic Beanstalk implementa una aplicación de muestra para proporcionar un entorno en ejecución. Elastic Beanstalk respalda la muestra con una imagen de contenedor prediseñada, por lo que la implementación no requiere ningún paso de compilación. La aplicación de muestra no se puede seleccionar ni configurar como una aplicación de cliente; Elastic Beanstalk la implementa cuando no se especifica ninguna etiqueta de versión. Para implementar una aplicación, cree una versión de la aplicación como se describe en este tema y pase su etiqueta de versión a. `CreateEnvironment` Para la creación de entornos, consulte[Primeros pasos con Beanstalk Cluster](beanstalk-cluster-getting-started.md).

## Ejemplos
<a name="beanstalk-cluster-app-versions-example"></a>

La siguiente `CreateApplicationVersion` solicitud proporciona una imagen de contenedor existente. Elastic Beanstalk ejecuta la imagen tal cual, sin compilarla.

```
aws elasticbeanstalk create-application-version \
  --application-name my-app \
  --version-label v1-image \
  --image-configuration Source={Uri=111122223333.dkr.ecr.us-east-1.amazonaws.com/my-app:v1}
```

En cambio, la siguiente solicitud proporciona un paquete fuente en Amazon S3 y una configuración de compilación que crea la imagen a partir de un Dockerfile para la arquitectura. `arm64` Para ejecutar esta imagen, defina la `arch` opción del entorno `arm64` como también.

```
operation_start=$(date -u +%Y-%m-%dT%H:%M:%SZ)
aws elasticbeanstalk create-application-version \
  --application-name my-app \
  --version-label v1-build \
  --process \
  --source-bundle S3Bucket=my-source-bucket,S3Key=my-app/v1.zip \
  --image-configuration '{
    "Build": {
      "Type": "docker",
      "DockerfileLocation": "Dockerfile",
      "Architecture": "arm64",
      "CodeBuildServiceRole": "arn:aws:iam::111122223333:role/my-build-role",
      "ComputeType": "BUILD_GENERAL1_SMALL",
      "TimeoutInMinutes": 30
    }
  }'
```

La siguiente solicitud crea la imagen con paquetes de compilación nativos de la nube en lugar de con un Dockerfile. La fuente no necesita ningún Dockerfile y el generador determina cómo se ensambla la imagen. La solicitud omite`Architecture`, por lo que Elastic Beanstalk compila para. `amd64`

```
operation_start=$(date -u +%Y-%m-%dT%H:%M:%SZ)
aws elasticbeanstalk create-application-version \
  --application-name my-app \
  --version-label v1-buildpack \
  --process \
  --source-bundle S3Bucket=my-source-bucket,S3Key=my-app/v1.zip \
  --image-configuration '{
    "Build": {
      "Type": "buildpack",
      "Buildpack": "paketobuildpacks/builder-jammy-base",
      "CodeBuildServiceRole": "arn:aws:iam::111122223333:role/my-build-role"
    }
  }'
```

Cuando llegue la versión de un paquete fuente`PROCESSED`, implemente cualquiera de estas versiones en un entorno de Beanstalk Cluster pasando su etiqueta de versión a `CreateEnvironment` o`UpdateEnvironment`, como en el caso de una versión de aplicación Beanstalk Standard. Para configurar el entorno en el que se ejecuta, consulte. [Configuración de entornos de Elastic Beanstalk](customize-containers.md)

## Elimine y recupere las versiones de la aplicación
<a name="beanstalk-cluster-app-versions-delete"></a>

Las políticas del ciclo de vida de las versiones de las aplicaciones no eliminan las versiones de las aplicaciones de Beanstalk Cluster. Se utilizan `DeleteApplicationVersion` para eliminar un registro de versión de una aplicación. Elastic Beanstalk rechaza la solicitud mientras la versión esté en vigor`BUILDING`; espere a que el terminal esté procesando el estado antes de eliminarla.

En el caso de una versión de la aplicación Beanstalk Cluster, la `DeleteSourceBundle` opción no elimina el paquete fuente de Amazon S3. Source-object la retención se administra por separado.

`DeleteApplicationVersion`elimina el registro de la versión de la aplicación de Elastic Beanstalk. No elimina una imagen suministrada directamente`ImageConfiguration.Source`, una imagen producida por una compilación fuente ni el repositorio de Amazon ECR que contiene la imagen. Usted gestiona la retención de una imagen que ha suministrado. Cuando Elastic Beanstalk crea un repositorio de Amazon ECR para las compilaciones de código fuente, aplica una política de ciclo de vida a ese repositorio; al eliminar una versión de la aplicación, no se limpia inmediatamente la imagen o el repositorio.

No se puede implementar una versión basada en el código fuente que esté en ese estado. `FAILED` Corrija la configuración de origen o compilación y llame `CreateApplicationVersion` con una etiqueta de versión nueva y `Process` establecida en. `true` Para reutilizar la etiqueta de la versión fallida, primero borra el registro de la versión una vez que haya salido y`BUILDING`, a continuación, crea la versión corregida.