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

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 Função do IAM de execução de tarefas do Amazon ECS.

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 \ --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

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