View a markdown version of this page

Criar seu primeiro serviço Express Mode usando a AWS CLI - Amazon Elastic Container Service

Criar seu primeiro serviço Express Mode usando a AWS CLI

Este tutorial mostra como criar uma aplicação de serviço Express Mode usando a AWS AWS CLI. Você implantará uma aplicação web simples que demonstra os principais recursos do serviço Express Mode.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Uma conta da AWS com permissões apropriadas

  • A AWS AWS CLI instalada e configurada

  • Uma imagem de contêiner armazenada no Amazon ECR ou em um registro privado

  • Uma VPC padrão com sub-redes públicas na região AWS em que você cria o serviço. Por padrão, o serviço Express Mode cria um balanceador de carga voltado para a Internet na VPC padrão da sua conta e nas sub-redes públicas. Se sua conta não tiver uma VPC padrão, crie uma antes de começar ou especifique suas próprias sub-redes ao criar o serviço. Para obter mais informações, consulte a seção VPCs padrão no Guia do usuário da Amazon VPC.

Etapa 1: criar perfis do IAM

Um serviço Express Mode exige dois perfis do IAM. O perfil de execução de tarefa permite que o Amazon ECS extraia imagens de contêineres e grave logs em seu nome. Crie um perfil de execução de tarefa e um perfil de infraestrutura com as seguintes políticas:

#Create the roles with ECS trust policies aws iam create-role --role-name ecsTaskExecutionRole \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }' aws iam create-role --role-name ecsInfrastructureRoleForExpressServices \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccessInfrastructureForECSExpressServices", "Effect": "Allow", "Principal": { "Service": "ecs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'
#Attach the AWS managed policies aws iam attach-role-policy --role-name ecsTaskExecutionRole \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy aws iam attach-role-policy --role-name ecsInfrastructureRoleForExpressServices \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSInfrastructureRoleforExpressGatewayServices

Para obter mais informações, consulte Perfil do IAM de execução de tarefas do Amazon ECS.

nota

Os perfis do IAM são consistentemente eventuais; portanto, um perfil recém-criado pode não estar disponível para uso imediatamente. Se sua primeira chamada create-express-gateway-service falhar com Unable to assume the service linked role (ou um erro semelhante relacionado à atribuição de perfis) logo após a criação desses perfis, aguarde um pouco (cerca de um minuto) para que os perfis sejam propagados e, em seguida, tente executar o comando novamente.

Etapa 2: criar a primeira aplicação de serviço Express Mode

Crie uma aplicação de serviço Express Mode com os parâmetros mínimos necessários:

aws ecs create-express-gateway-service \ --primary-container "image"="public.ecr.aws/nginx/nginx:latest" \ --execution-role-arn arn:aws:iam::123456789012:role/ecsTaskExecutionRole \ --infrastructure-role-arn arn:aws:iam::123456789012:role/ecsInfrastructureRoleForExpressServices \ --monitor-resources

Esse comando cria uma aplicação de serviço Express Mode com:

  • Um nome de serviço exclusivo gerado com base no nome da imagem

  • 1 vCPU e 2 GB de memória

  • Porta 80 para tráfego HTTPS

  • Ajuste de escala automático com base na utilização de CPU

  • Um Application Load Balancer voltado para a Internet na VPC padrão e nas sub-redes públicas

  • Um URL exclusivo para esse serviço no formato servicename.ecs.region.on.aws

O comando monitora continuamente os recursos à medida que eles estão sendo provisionados e retorna o status. Quando a implantação estiver concluída, o URL da aplicação estará pronto para receber tráfego. Quando você interrompe o monitoramento, as informações sobre o serviço criado são retornadas, incluindo o ARN e o URL do serviço:

{ "service": { "cluster": "arn:aws:ecs:region:123456789012:cluster/default", "serviceName": "nginx-1234", "serviceArn": "arn:aws:ecs:region:123456789012:service/default/nginx-1234", "infrastructureRoleArn": "arn:aws:iam::123456789012:role/ecsInfrastructureRoleForExpressServices", "status": { "statusCode": "ACTIVE" }, "createdAt": "UNIXTIMESTAMP" } }

Etapa 3: criar uma aplicação de serviço Express Mode com configurações personalizadas

Você pode personalizar sua aplicação de serviço Express Mode especificando parâmetros adicionais:

aws ecs create-express-gateway-service \ --execution-role-arn arn:aws:iam::123456789012:role/ecsTaskExecutionRole \ --infrastructure-role-arn arn:aws:iam::123456789012:role/ecsInfrastructureRoleForExpressServices \ --primary-container '{"image":"123456789012.dkr.ecr.region.amazonaws.com/my-app:latest","containerPort":8080,"environment":[{"name":"ENV","value":"production"},{"name":"DEBUG","value":"false"}]}' \ --service-name "my-web-app" \ --cpu 2 \ --memory 4 \ --health-check-path "/health" \ --scaling-target '{"minTaskCount":3,"maxTaskCount":100}' \ --monitor-resources

Isso cria uma aplicação com:

  • Um nome personalizado “my-web-app”

  • 2 vCPU e 4 GB de memória

  • Porta 8080 para tráfego da aplicação

  • Endpoint de verificação de integridade personalizado

  • Variáveis de ambiente

  • No mínimo três tarefas e no máximo 100 para ajuste de escala automático

Crie um serviço no Modo Expresso com sua própria definição de tarefa

Você também pode criar um serviço no Modo Expresso com sua própria definição de tarefa. Com sua própria definição de tarefa, você tem controle total sobre a configuração no nível da tarefa. O Modo Expresso continua a gerenciar a infraestrutura, incluindo balanceamento de carga, escalabilidade automática e implantações canárias.

O comando a seguir AWS Command Line Interface (AWSAWS CLI) cria um serviço Modo Expresso com uma definição de tarefa personalizada:

aws ecs create-express-gateway-service \ --infrastructure-role-arn arn:aws:iam::123456789012:role/ecsInfrastructureRoleForExpressServices \ --task-definition-arn arn:aws:ecs:us-west-2:123456789012:task-definition/my-td:3 \ --health-check-path "/health" \ --monitor-resources

A definição da sua tarefa deve atender aos seguintes requisitos:

  • Um contêiner chamado Main

  • O contêiner Main deve ter um único mapeamento de porta TCP com uma porta de contêiner e um nome de porta

  • A definição da tarefa deve incluir FARGATE em suas compatibilidades.

nota

O parâmetro taskDefinitionArn não pode ser especificado com primaryContainer, executionRoleArn, taskRoleArn, cpu, ou memory na mesma chamada de API. O Modo Expresso obtém esses valores a partir da definição da tarefa fornecida.

Etapa 4: monitorar a implantação

Um sinalizador --monitor-resources funciona em qualquer chamada Criar, Atualizar ou Excluir para seus serviços Express Mode. Mas, além disso, você pode monitorar os recursos em um serviço a qualquer momento, independentemente de uma ação mutante. O tempo de implantação pode variar dependendo dos recursos que precisam ser provisionados. Quando o status muda para ACTIVE, sua aplicação está pronta para receber tráfego.

aws ecs monitor-express-gateway-service --service-arn arn:aws:ecs:region:123456789012:service/default/app-23d97h88

Você também pode encontrar a configuração e o status atuais da sua aplicação de serviço Express Mode:

aws ecs describe-express-gateway-service --service-arn arn:aws:ecs:region:123456789012:service/default/app-23d97h88

Etapa 5: acessar sua aplicação

Acesse a aplicação de serviço Express Mode usando o URL fornecido quando ele se tornar ativo. O formato do URL é:

https://<service-name>.ecs.<region>.on.aws/

Por exemplo:

https://app-23d97h88.ecs.us-west-2.on.aws/

Sua aplicação agora está sendo executado com:

  • Encerramento automático de SSL/TLS

  • Balanceamento de carga em várias zonas de disponibilidade

  • Ajuste de escala automático com base na utilização de CPU

  • Log e monitoramento do CloudWatch

  • Alarmes de reversão 5XX e implantações canário para futuras atualizações