Creación y actualización de grupos de entornos de Elastic Beanstalk - AWS Elastic Beanstalk

Creación y actualización de grupos de entornos de Elastic Beanstalk

Con la API de AWS Elastic Beanstalk Compose Environments , puede crear y actualizar grupos de entornos de Elastic Beanstalk dentro de una aplicación. Cada entorno del grupo puede ejecutar un componente independiente de una aplicación que tenga una arquitectura orientada a servicios. La API Compose Environments toma una lista de las versiones de la aplicación y un nombre de grupo opcional. Elastic Beanstalk crea un entorno para cada versión de la aplicación o, si los entornos ya existen, implementa las versiones de la aplicación en ellos.

Cree enlaces entre los entornos de Elastic Beanstalk para definir un entorno como una dependencia de otro. Cuando se genera un grupo de entornos con la API Compose Environments, Elastic Beanstalk solamente crea entornos dependientes una vez que sus dependencias están listas y en ejecución. Para obtener más información acerca de los enlaces del entorno, consulte Creación de enlaces entre entornos de Elastic Beanstalk.

La API Compose Environments utiliza un manifiesto de entorno para guardar los detalles de la configuración que comparten los grupos de entornos. Cada aplicación integrante debe tener un archivo de configuración env.yaml en el paquete de código fuente que especifique los parámetros utilizados para crear el entorno.

Compose Environments requiere que se especifique EnvironmentName y SolutionStack en el manifiesto del entorno de cada aplicación integrante.

Puede utilizar la API Compose Environments con la interfaz de línea de comandos de Elastic Beanstalk (CLI de EB), la AWS CLI o un SDK. Consulte Administración de múltiples entornos Elastic Beanstalk como un grupo con la CLI de EB para obtener instrucciones sobre la CLI de EB.

Uso de la API Compose Environments

Por ejemplo, puede crear una aplicación llamada Media Library que permita a los usuarios cargar y administrar las imágenes y los vídeos guardados en Amazon Simple Storage Service (Amazon S3). La aplicación tendrá un entorno front-end, front, donde se ejecutará una aplicación web que permitirá a los usuarios cargar y descargar archivos individuales, consultar la biblioteca e iniciar trabajos de procesamiento por lotes.

En lugar de procesar los trabajos directamente, la aplicación front-end los agregará a una cola de Amazon SQS. El segundo entorno, worker, extraerá los trabajos de la cola y los procesará. worker utilizará un tipo de instancia G2 que tenga una GPU de alto rendimiento, mientras que front puede ejecutarse en un tipo de instancia genérica más rentable.

La carpeta del proyecto, Media Library, debe organizarse en diferentes directorios para cada componente, donde cada directorio tendrá un archivo de definición del entorno (env.yaml) con su código fuente:

~/workspace/media-library |-- front | `-- env.yaml `-- worker `-- env.yaml

A continuación se muestra el archivo env.yaml de cada aplicación integrante.

~/workspace/media-library/front/env.yaml

EnvironmentName: front+ EnvironmentLinks: "WORKERQUEUE" : "worker+" AWSConfigurationTemplateVersion: 1.1.0.0 EnvironmentTier: Name: WebServer Type: Standard SolutionStack: 64bit Amazon Linux 2015.09 v2.0.4 running Java 8 OptionSettings: aws:autoscaling:launchconfiguration: InstanceType: m4.large

~/workspace/media-library/worker/env.yaml

EnvironmentName: worker+ AWSConfigurationTemplateVersion: 1.1.0.0 EnvironmentTier: Name: Worker Type: SQS/HTTP SolutionStack: 64bit Amazon Linux 2015.09 v2.0.4 running Java 8 OptionSettings: aws:autoscaling:launchconfiguration: InstanceType: g2.2xlarge

Después de crear una versión de la aplicación para los componentes de aplicación front-end (front-v1) y de trabajo (worker-v1), llame a la API Compose Environments con los nombres de las versiones. En este ejemplo, utilizaremos la AWS CLI para llamar a la API.

# Create application versions for each component: ~$ aws elasticbeanstalk create-application-version --application-name media-library --version-label front-v1 --process --source-bundle S3Bucket="DOC-EXAMPLE-BUCKET",S3Key="front-v1.zip" { "ApplicationVersion": { "ApplicationName": "media-library", "VersionLabel": "front-v1", "Description": "", "DateCreated": "2015-11-03T23:01:25.412Z", "DateUpdated": "2015-11-03T23:01:25.412Z", "SourceBundle": { "S3Bucket": "DOC-EXAMPLE-BUCKET", "S3Key": "front-v1.zip" } } } ~$ aws elasticbeanstalk create-application-version --application-name media-library --version-label worker-v1 --process --source-bundle S3Bucket="DOC-EXAMPLE-BUCKET",S3Key="worker-v1.zip" { "ApplicationVersion": { "ApplicationName": "media-library", "VersionLabel": "worker-v1", "Description": "", "DateCreated": "2015-11-03T23:01:48.151Z", "DateUpdated": "2015-11-03T23:01:48.151Z", "SourceBundle": { "S3Bucket": "DOC-EXAMPLE-BUCKET", "S3Key": "worker-v1.zip" } } } # Create environments: ~$ aws elasticbeanstalk compose-environments --application-name media-library --group-name dev --version-labels front-v1 worker-v1

La tercera llamada crea dos entornos: front-dev y worker-dev. La API crea los nombres de los entornos concatenando el valor de EnvironmentName especificado en el archivo env.yaml con la opción group name especificada en la llamada a Compose Environments, separados por un guion. La longitud total de estas dos opciones y el guion no debe superar el máximo permitido para el nombre del entorno, que es de 23 caracteres.

La aplicación que se ejecuta en el entorno front-dev puede obtener acceso al nombre de la cola de Amazon SQS asociada al entorno worker-dev a través de la variable WORKERQUEUE. Para obtener más información acerca de los enlaces del entorno, consulte Creación de enlaces entre entornos de Elastic Beanstalk.