

# Criar seu primeiro serviço Express Mode usando a AWS CLI
<a name="express-service-getting-started"></a>

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
<a name="express-service-prerequisites"></a>

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
<a name="express-service-create-execution-role"></a>

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](task_execution_IAM_role.md).

## Etapa 2: criar a primeira aplicação de serviço Express Mode
<a name="express-service-create-basic"></a>

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
<a name="express-service-create-custom"></a>

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
<a name="express-service-monitor-deployment"></a>

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
<a name="express-service-access-application"></a>

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 