

# Creación de su primer servicio de Express Mode con AWS CLI
<a name="express-service-getting-started"></a>

En este tutorial se muestra cómo crear una aplicación de servicio de Express Mode mediante AWS AWS CLI. Implementará una aplicación web sencilla que demuestra las funcionalidades principales del servicio de Express Mode.

## Requisitos previos
<a name="express-service-prerequisites"></a>

Antes de comenzar, asegúrese de que dispone de lo siguiente:
+ Una cuenta de AWS con los permisos adecuados
+ AWS AWS CLI debe estar instalada y configurada
+ Una imagen de contenedor almacenada en Amazon ECR o en un registro privado

## Paso 1: cree roles de IAM
<a name="express-service-create-execution-role"></a>

Un servicio de Express Mode requiere dos roles de IAM. El rol de ejecución de tareas permite a Amazon ECS extraer imágenes de contenedores y escribir registros en su nombre. Cree un rol de ejecución de tareas y un rol de infraestructura con las políticas siguientes:

```
#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 obtener más información, consulte [Rol de IAM de ejecución de tareas de Amazon ECS](task_execution_IAM_role.md).

## Paso 2: cree la primera aplicación de servicio de Express Mode
<a name="express-service-create-basic"></a>

Cree una aplicación de servicio de Express Mode con los parámetros mínimos requeridos:

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

Este comando crea una aplicación de servicio de Express Mode con:
+ Un nombre de servicio único generado a partir del nombre de la imagen
+ 1 vCPU y 2 GB de memoria
+ Puerto 80 para tráfico HTTPS
+ Escalado automático basado en el uso de la CPU
+ Un equilibrador de carga de aplicación con acceso a Internet en las subredes públicas y de VPC predeterminadas
+ Una URL exclusiva de este servicio en el formato `servicename.ecs.region.on.aws`

El comando supervisa continuamente los recursos a medida que se aprovisionan y devuelve el estado. Una vez completada la implementación del servicio, la URL de la aplicación está lista para recibir tráfico. Al interrumpir la supervisión, se devuelve la información acerca del servicio creado, como el ARN y la URL del servicio:

```
{
    "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"
    }
}
```

## Paso 3: cree una aplicación de servicio de Express Mode con configuración personalizada
<a name="express-service-create-custom"></a>

Puede personalizar la aplicación de servicio de Express Mode al especificar parámetros adicionales:

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

De este modo, se crea una aplicación con:
+ Un nombre personalizado: “mi-app-web”
+ 2 vCPU y 4 GB de memoria
+ Puerto 8080 para el tráfico de aplicaciones
+ Punto de conexión de comprobación de estado personalizado
+ Variables de entorno
+ Mínimo 3 tareas, máximo 100 tareas para el escalado automático

## Paso 4: supervise la implementación
<a name="express-service-monitor-deployment"></a>

El indicador `--monitor-resources` funciona en cualquier llamada de creación, actualización o eliminación a los servicios de Express Mode. Además, puede supervisar los recursos de un servicio en cualquier momento, independientemente de si se trata de una acción mutante. El tiempo de implementación puede variar según los recursos que se deban aprovisionar. Una vez que el estado cambie a `ACTIVE`, la aplicación estará lista para recibir tráfico.

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

También puede encontrar la configuración y el estado actuales de la aplicación de servicio de Express Mode:

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

## Paso 5: acceda a la aplicación
<a name="express-service-access-application"></a>

Acceda a la aplicación del servicio de Express Mode con la URL proporcionada cuando se active. El formato de la dirección URL es:

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

Por ejemplo:

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

La aplicación ahora se pone en marcha con:
+ Finalización de SSL/TLS automática
+ Equilibrio de carga en varias zonas de disponibilidad
+ Escalado automático basado en el uso de la CPU
+ Registro y supervisión de CloudWatch
+ Alarmas de reversión 5XX e implementaciones canario para actualizaciones futuras 