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
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 y Etiquetado de versiones de la aplicación.
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. Sourceidentifica 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ámetroSourceBundle, que configura AWS CodeBuild las versiones de la aplicación para Beanstalk Standard. En las siguientes secciones se describe cada ruta.
Requisitos previos
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.
Prepara los siguientes recursos y accesos:
-
Para una compilación fuente, el
CodeBuildServiceRolerequerido porImageConfiguration.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-rolePara conocer sus políticas y servicios confiables, y para conocer el límite de funciones, consulte y. Funciones que usted proporciona Permisos para Beanstalk Cluster -
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. -
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 enCreación de una agrupación de orígenes de aplicación en Elastic Beanstalk., cárguelo en un bucket de Amazon S3 de su cuenta y pase el bucket y la clave del objeto comoS3BucketyS3Key.ProcesstrueConfigúralo para iniciar la compilación; de lo contrario, la versión permaneceUNPROCESSED.
Entrada de imagen de contenedor
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
Indique SourceBundle cuándo Elastic Beanstalk debe crear la imagen del contenedor a partir del código fuente de la aplicación. SourceBundleIdentifica 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. ProcessEstablé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
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
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, oBUILD_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.5480Si 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.DockerfileLocationEstablé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.BuildpackConfigúrala en la imagen del generador que usa la compilación, por ejemplopaketobuildpacks/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.
Inspeccione y supervise el estado del procesamiento
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 yImageBuildConfiguration. 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_startEstablezca 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. BUILDINGsignifica 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 llegaFAILED, --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 ytrue, a continuación, sondéela enPROCESSED. No implemente una versión enFAILED. 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
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, consultePrimeros pasos con Beanstalk Cluster.
Ejemplos
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 omiteArchitecture, 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 fuentePROCESSED, implemente cualquiera de estas versiones en un entorno de Beanstalk Cluster pasando su etiqueta de versión a CreateEnvironment oUpdateEnvironment, 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
Elimine y recupere las versiones de la aplicación
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 vigorBUILDING; 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.
DeleteApplicationVersionelimina el registro de la versión de la aplicación de Elastic Beanstalk. No elimina una imagen suministrada directamenteImageConfiguration.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 yBUILDING, a continuación, crea la versión corregida.