Creación de su primer servicio de Express Mode con AWS CLI - Amazon Elastic Container Service

Creación de su primer servicio de Express Mode con AWS CLI

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

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

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.

Paso 2: cree la primera aplicación de servicio de Express Mode

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

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

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

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

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

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