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
MainO contêiner
Maindeve ter um único mapeamento de porta TCP com uma porta de contêiner e um nome de portaA definição da tarefa deve incluir
FARGATEem 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