Criar e atualizar grupos de ambientes do Elastic Beanstalk - AWS Elastic Beanstalk

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Criar e atualizar grupos de ambientes do Elastic Beanstalk

Com a API ComposeEnvironments do AWS Elastic Beanstalk, você pode criar e atualizar grupos de ambientes do Elastic Beanstalk dentro de uma única aplicação. Cada ambiente do grupo pode executar um componente separado de um aplicativo de arquitetura orientada a serviços. A API Compose Environments usa uma lista de versões do aplicativo e um nome de grupo opcional. O Elastic Beanstalk cria um ambiente para cada versão do aplicativo ou, se os ambientes já existem, implanta as versões do aplicativo neles.

Crie links entre os ambientes do Elastic Beanstalk para designar um ambiente como uma dependência do outro. Quando você cria um grupo de ambientes com a API Compose Environments, o Elastic Beanstalk cria ambientes dependentes somente depois que suas dependências estão em execução. Para obter mais informações sobre links de ambiente, consulte Criar links entre ambientes do Elastic Beanstalk.

A API Compose Environments usa um manifesto de ambiente para armazenar detalhes de configuração que são compartilhados por grupos de ambientes. Cada aplicativo do componente deve ter um arquivo de configuração env.yaml em seu pacote de origem do aplicativo que especifique os parâmetros usados para criar o ambiente.

Compose Environments requer que EnvironmentName e SolutionStack sejam especificados no manifesto de ambiente para cada aplicativo do componente.

Use a API Compose Environments com a Elastic Beanstalk Command Line Interface (EB CLI), a AWS CLI ou um SDK. Para ver as instruções da EB CLI, consulte Gerenciar vários ambientes do Elastic Beanstalk como um grupo com a CLI do EB.

Uso da API Compose Environments

Por exemplo, você pode criar uma aplicação chamada Media Library que permita aos usuários fazer upload e gerenciar imagens e vídeos armazenados no Amazon Simple Storage Service (Amazon S3). O aplicativo tem um ambiente de front-end, front, que executa um aplicativo Web. Isso permite aos usuários fazer upload e download de arquivos individuais, visualizar sua biblioteca e iniciar trabalhos de processamento em lote.

Em vez de processar os trabalhos diretamente, a aplicação de front-end adiciona trabalhos a uma fila do Amazon SQS. O segundo ambiente, worker, obtém trabalhos da fila e os processa. O worker usa um tipo de instância G2, que tem uma GPU de alta performance e, ao mesmo tempo, front pode ser executado em um tipo de instância genérico mais econômico.

Organize a pasta do projeto, Media Library, em diretórios separados para cada componente, com cada diretório contendo um arquivo de definição de ambiente (env.yaml) com o código-fonte de cada:

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

As seguintes listas mostram o arquivo env.yaml para cada aplicativo do componente.

~/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

Depois de criar uma versão do aplicativo para os componentes do aplicativo de front-end (front-v1) e operador (worker-v1), chame a API Compose Environments com os nomes de versão. Neste exemplo, usamos a AWS CLI para chamar a API.

# Create application versions for each component: ~$ aws elasticbeanstalk create-application-version --application-name media-library --version-label front-v1 --process --source-bundle S3Bucket="amzn-s3-demo-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": "amzn-s3-demo-bucket", "S3Key": "front-v1.zip" } } } ~$ aws elasticbeanstalk create-application-version --application-name media-library --version-label worker-v1 --process --source-bundle S3Bucket="amzn-s3-demo-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": "amzn-s3-demo-bucket", "S3Key": "worker-v1.zip" } } } # Create environments: ~$ aws elasticbeanstalk compose-environments --application-name media-library --group-name dev --version-labels front-v1 worker-v1

A terceira chamada cria dois ambientes, front-dev e worker-dev. A API cria os nomes dos ambientes ao concatenar o EnvironmentName especificado no arquivo env.yaml com a opção group name especificada na chamada Compose Environments, separados por um hífen. O tamanho total dessas duas opções e o hífen não deve exceder o máximo permitido de 23 caracteres do nome do ambiente.

A aplicação em execução no ambiente front-dev pode acessar o nome da fila do Amazon SQS anexada ao ambiente worker-dev lendo a variável WORKERQUEUE. Para obter mais informações sobre links de ambiente, consulte Criar links entre ambientes do Elastic Beanstalk.