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