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
Una VPC predeterminada con subredes públicas en la región de AWS en la que se crea el servicio. Por defecto, el servicio de Express Mode crea un equilibrador de carga orientado a Internet en la VPC predeterminada y las subredes públicas de su cuenta. Si su cuenta de no tiene una VPC predeterminada o si desea crear una VPC adicional, siga las instrucciones para crear una VPC predeterminada. Para obtener más información, consulte VPC predeterminadas en la Guía del usuario de Amazon VPC.
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.
nota
Con el tiempo, los roles de IAM se vuelven coherentes, por lo que es posible que un rol recién creado no se pueda utilizar inmediatamente. Si la primera llamada create-express-gateway-service falla con Unable to assume the service linked role (o se produce un error similar al asumir un rol) justo después de crear dichos roles, espere un momento (aproximadamente un minuto) a que los roles se propaguen y luego vuelva a intentar ejecutar el comando.
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 \ --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
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
Cree un servicio de Express Mode con su propia definición de tareas
También puede crear un servicio de Express Mode con su propia definición de tareas. Con su propia definición de tareas, puede obtener control total sobre la configuración a nivel de tareas. Express Mode continúa administrando la infraestructura, como el equilibrador de carga, el escalado automático y las implementaciones canario.
El siguiente comando AWS Command Line Interface (AWS AWS CLI) crea un servicio de Express Mode con una definición de tarea 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
La definición de tareas debe cumplir los siguientes requisitos:
Un contenedor denominado
MainUn contenedor
Maincon una única asignación de puerto TCP con un puerto de contenedor y un nombre de puertoUna definición de tareas con
FARGATEen sus compatibilidades
nota
El parámetro taskDefinitionArn no se puede especificar con primaryContainer, executionRoleArn, taskRoleArn, cpu o memory en la misma llamada a la API. Express Mode obtiene estos valores de la definición de la tarea proporcionada.
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/default/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/default/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