View a markdown version of this page

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

  • 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 Main

  • Un contenedor Main con una única asignación de puerto TCP con un puerto de contenedor y un nombre de puerto

  • Una definición de tareas con FARGATE en 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