Parámetros de definición de servicio de Amazon ECS - Amazon Elastic Container Service

Parámetros de definición de servicio de Amazon ECS

Una definición de servicio define cómo ejecutar el servicio de Amazon ECS. Los siguientes parámetros se pueden especificar en una definición de servicio.

Tipo de lanzamiento

launchType

Tipo: cadena

Valores válidos: EC2 | FARGATE | EXTERNAL

Obligatorio: no

El tipo de lanzamiento en el que ejecutar su servicio. Si no se especifica ningún tipo de lanzamiento, se usará capacityProviderStrategy de forma predeterminada. Para obtener más información, consulte Tipos de lanzamiento de Amazon ECS.

Si se especifica launchType, se debe omitir el parámetro capacityProviderStrategy.

Estrategia de proveedores de capacidad

capacityProviderStrategy

Tipo: matriz de objetos

Obligatorio: no

La estrategia de proveedores de capacidad que se utilizará para el servicio.

Una estrategia de proveedores de capacidad consiste en uno o más proveedores de capacidad junto con la base y weight que se les asigne. Un proveedor de capacidad debe estar asociado con el clúster que se utilizará en una estrategia de proveedores de capacidad. La API PutClusterCapacityProviders se utiliza para asociar un proveedor de capacidad a un clúster. Solo se pueden utilizar los proveedores de capacidad con un estado UPDATING o ACTIVE.

Si se especifica capacityProviderStrategy, se debe omitir el parámetro launchType. Si no se especifica capacityProviderStrategy o launchType, se utiliza defaultCapacityProviderStrategy para el clúster.

Si desea especificar un proveedor de capacidad que utiliza un grupo de escalado automático, el proveedor de capacidad debe estar ya creado. Se pueden crear nuevos proveedores de capacidad con la operación CreateCapacityProvider de la API.

Para utilizar un proveedor de capacidad de Fargate de AWS, especifique los proveedores de capacidad FARGATE o FARGATE_SPOT. Los proveedores de capacidad de AWS Fargate están disponibles para todas las cuentas y solo necesitan estar asociados al clúster que se va a utilizar.

La operación PutClusterCapacityProviders de la API se utiliza para actualizar la lista de proveedores de capacidad disponibles para un clúster después de que se haya creado el clúster.

capacityProvider

Tipo: cadena

Obligatorio: sí

El apodo o el nombre de recurso de Amazon (ARN) del proveedor de capacidad.

weight

Tipo: entero

Rango válido: números enteros entre 0 y 1000.

Obligatorio: no

El valor peso designa el porcentaje relativo del número total de tareas lanzadas que utiliza el proveedor de capacidad especificado.

Por ejemplo, suponga que tiene una estrategia que contiene dos proveedores de capacidad y ambos tienen una ponderación de uno. Cuando se completa la base, las tareas se dividen en partes iguales entre los dos proveedores de capacidad. Con la misma lógica, suponga que especifica un peso de 1 para capacityProviderA y un peso de 4 para capacityProviderB. Luego, para cada tarea que se ejecute con capacityProviderA, cuatro tareas utilizan capacityProviderB.

base

Tipo: entero

Rango válido: números enteros entre 0 y 100 000.

Obligatorio: no

El valor de base designa cuántas tareas, como mínimo, se ejecutarán en el proveedor de capacidad especificado. Solo un proveedor de capacidad en una estrategia de proveedor de capacidad puede tener una base definida.

Definición de tarea

taskDefinition

Tipo: cadena

Requerido: no

La family y revision (family:revision) o el nombre de recurso de Amazon (ARN) completo de la definición de tareas que se va a ejecutar en el servicio. Si no se especifica una revision, se utiliza la última revisión ACTIVE de la familia especificada.

Debe especificarse una definición de tarea cuando se utiliza el controlador de implementación de actualización continua (ECS).

Sistema operativo de la plataforma

platformFamily

Tipo: String

Obligatorio: condicional

Predeterminado: Linux

Este parámetro es necesario para los servicios de Amazon ECS alojados en Fargate.

Este parámetro se ignora para los servicios de Amazon ECS alojados en Amazon EC2.

El sistema operativo de los contenedores que ejecuta el servicio. Los valores válidos son LINUX, WINDOWS_SERVER_2019_FULL, WINDOWS_SERVER_2019_CORE, WINDOWS_SERVER_2022_FULL y WINDOWS_SERVER_2022_CORE.

El valor platformFamily para cada tarea que especifique para el servicio debe coincidir con el servicio del valor platformFamily. Por ejemplo, si configuró el platformFamily a WINDOWS_SERVER_2019_FULL, el valor platformFamily para todas las tareas debe ser WINDOWS_SERVER_2019_FULL.

Versión de la plataforma

platformVersion

Tipo: cadena

Requerido: no

La versión de la plataforma en la que se ejecutan sus tareas en el servicio. La versión de la plataforma solo se especifica para las tareas que utilizan el tipo de lanzamiento de Fargate. Si no se especifica ninguna, se usará la versión más reciente (LATEST) de forma predeterminada.

Las versiones de la plataforma de AWS Fargate se utilizan para hacer referencia a un entorno en tiempo de ejecución específico para la infraestructura de tareas de Fargate. Cuando se especifica la versión de la plataforma LATEST al ejecutar una tarea o crear un servicio, se obtiene la versión más actual de la plataforma disponible para las tareas. Cuando se escala un servicio, esas tareas reciben la versión de la plataforma especificada en la implementación actual del servicio. Para obtener más información, consulte Versiones de la plataforma Fargate para Amazon ECS.

nota

No se especifican las versiones de la plataforma para las tareas que utilizan el tipo de lanzamiento de EC2.

Clúster

cluster

Tipo: cadena

Requerido: no

El nombre abreviado o nombre de recurso de Amazon (ARN) completo del clúster en el que ejecutar el servicio. Si no especifica un clúster, se supone el clúster default.

Nombre del servicio

serviceName

Tipo: cadena

Obligatorio: sí

El nombre de su servicio. Se admiten hasta 255 letras (mayúsculas y minúsculas), números, guiones y caracteres de subrayado. Los nombres de servicio deben ser únicos dentro de un clúster, pero puede tener servicios con el mismo nombre en varios clústeres dentro de una región o en varias regiones.

Estrategia de programación

schedulingStrategy

Tipo: cadena

Valores válidos: REPLICA | DAEMON

Obligatorio: no

La estrategia de programación que se va a utilizar. Si no se especifica ninguna estrategia de programación, se utiliza la estrategia de REPLICA. Para obtener más información, consulte Servicios de Amazon ECS.

Existen dos estrategias del programador de servicio:

  • REPLICA: la estrategia de programación de réplicas sitúa y mantiene en el clúster el número de tareas deseado. De forma predeterminada, el programador de servicio distribuye las tareas en zonas de disponibilidad. Puede utilizar estrategias y restricciones de ubicación de tareas para personalizar las decisiones de ubicación de las tareas. Para obtener más información, consulte Estrategia de réplica.

  • DAEMON: la estrategia de programación del daemon implementa exactamente una tarea en cada instancia de contenedor activa que cumpla todas las restricciones de ubicación de tareas que se especifiquen para el clúster. Cuando se utiliza esta estrategia, no es necesario especificar un número deseado de tareas, ni una estrategia de ubicación de tareas ni utilizar políticas de Auto Scaling de servicios. Para obtener más información, consulte Estrategia de daemon.

    nota

    Las tareas de Fargate no admiten la estrategia de programación de DAEMON.

Recuento deseado

desiredCount

Tipo: entero

Obligatorio: no

El número de instancias de la definición de tarea especificada para ubicar y seguir ejecutando en el servicio.

Este parámetro es necesario si se utiliza la estrategia de programación de REPLICA. Si el servicio utiliza la estrategia de programación de DAEMON, este parámetro es opcional.

Configuración de implementación

deploymentConfiguration

Tipo: objeto

Obligatorio: no

Parámetros de implementación opcionales que controlan cuántas tareas se ejecutan durante la implementación y la ordenación de tareas de parada e inicio.

maximumPercent

Tipo: entero

Obligatorio: no

Si un servicio utiliza el tipo de implementación de actualización continua (ECS), el parámetro maximumPercent representa un límite superior en el número de tareas de servicio que se permiten en el estado RUNNING, STOPPING o PENDING durante una implementación. Se expresa como un porcentaje de desiredCount que se redondea al número entero más cercano. Puede utilizar este parámetro para definir el tamaño del lote de implementación. Por ejemplo, si el servicio utiliza el programador de servicios REPLICA y tiene un desiredCount de cuatro tareas y un valor maximumPercent de 200 %, el programador podría iniciar cuatro nuevas tareas antes de detener las cuatro tareas más antiguas. Esto es siempre que los recursos del clúster requeridos para hacer esto estén disponibles. El valor maximumPercent predeterminado para un servicio que utiliza el programador de servicio REPLICA es 200 %.

Si el servicio utiliza el tipo de programador de servicio DAEMON, el maximumPercent debería permanecer al 100 %. Este es el valor predeterminado.

El número máximo de tareas durante una implementación es el desiredCount multiplicado por el maximumPercent/100, redondeado al valor del entero inferior más próximo.

Si un servicio utiliza los tipos de implementación “blue/green” (CODE_DEPLOY) o EXTERNAL y tareas que utilizan el tipo de lanzamiento de EC2, el valor de porcentaje máximo se establece en el valor predeterminado y se utiliza para definir el límite máximo de número de tareas que permanecen en el estado RUNNING en el servicio mientras las instancias de contenedor están en el estado DRAINING. Si las tareas en el servicio utilizan el tipo de lanzamiento Fargate, el valor de porcentaje máximo no se utiliza, aunque se devuelve al describir el servicio.

minimumHealthyPercent

Tipo: entero

Obligatorio: no

Si un servicio utiliza el tipo de implementación de actualización continua (ECS), el parámetro minimumHealthyPercent representa un límite inferior en el número de tareas de servicio que permanecen en el estado RUNNING durante una implementación. Se expresa como un porcentaje de desiredCount que se redondea al número entero más cercano. Puede utilizar este parámetro para implementar sin utilizar capacidad de clúster adicional. Por ejemplo, si el servicio tiene un desiredCount de cuatro tareas y un minimumHealthyPercent del 50 %, el programador de servicio podría parar dos tareas existentes para liberar capacidad de clúster antes de iniciar dos nuevas tareas.

Para los servicios que no utilizan un equilibrador de carga, tenga en cuenta lo siguiente:

  • Se considera que un servicio está en buen estado si todos los contenedores esenciales dentro de las tareas del servicio superan sus comprobaciones de estado.

  • Si una tarea no tiene contenedores esenciales con una comprobación de estado definida, el programador de servicios esperará 40 segundos después de que una tarea alcance un estado de RUNNING antes de que la tarea se cuente hacia el porcentaje total mínimo de buen estado.

  • Si una tarea tiene uno o más contenedores esenciales con una comprobación de estado definida, el programador de servicios esperará a que la tarea alcance un buen estado antes de contarla hacia el porcentaje total mínimo de buen estado. Se considera que una tarea está en buen estado cuando todos los contenedores esenciales de la tarea han superado sus comprobaciones de estado. El tiempo que puede esperar el programador de servicios viene determinado por la configuración de comprobación de estado del contenedor. Para obtener más información, consulte Comprobación de estado.

Para los servicios que utilizan un equilibrador de carga, tenga en cuenta lo siguiente:

  • Si una tarea no tiene contenedores esenciales con una comprobación de estado definida, el programador de servicios esperará a que la comprobación de estado del grupo de destino del equilibrador de carga devuelva un “buen estado” antes de contar la tarea hacia el porcentaje total mínimo del estado correcto.

  • Si una tarea tiene un contenedor esencial con una comprobación de estado definida, el programador de servicios esperará a que la tarea alcance un buen estado y a que la comprobación de estado del grupo de destino del equilibrador de carga devuelva un “buen estado” antes de contar la tarea hacia el porcentaje total mínimo del estado correcto.

El valor predeterminado para un servicio de réplica de minimumHealthyPercent es del 100%. El valor minimumHealthyPercent predeterminado para un servicio que utiliza el programador de servicios DAEMON es del 0 % para la AWS CLI, los SDK de AWS y las API, y del 50 % para la AWS Management Console.

El número mínimo de tareas en buen estado durante una implementación es el desiredCount multiplicado por el minimumHealthyPercent/100, redondeado al valor del entero superior más próximo.

Si un servicio utiliza los tipos de implementación “blue/green” (CODE_DEPLOY) o EXTERNAL y tareas que utilizan el tipo de lanzamiento de EC2, el valor de porcentaje mínimo con estado correcto se establece en el valor predeterminado y se utiliza para definir el límite mínimo de número de tareas que permanecen en el estado RUNNING en el servicio mientras las instancias de contenedor están en el estado DRAINING. Si un servicio utiliza los tipos de implementación “blue/green” (CODE_DEPLOY) o EXTERNAL y ejecuta tareas que utilizan el tipo de lanzamiento de Fargate, el valor de porcentaje mínimo de estado correcto no se utiliza, aunque se devuelva al describir el servicio.

Controlador de implementación

deploymentController

Tipo: objeto

Obligatorio: no

El controlador de implementación que utilizar para el servicio. Si no se especifica ningún controlador de implementación, se utiliza el controlador ECS. Para obtener más información, consulte Servicios de Amazon ECS.

type

Tipo: cadena

Valores válidos: ECS | CODE_DEPLOY | EXTERNAL

Obligatorio: sí

El tipo de controlador de implementación que se va a utilizar. Existen tres tipos de controlador de implementación disponibles:

ECS

El tipo de implementación de actualización acumulativa (ECS) implica la sustitución de la versión de ejecución actual del contenedor por la versión más reciente. Para controlar el número de contenedores que Amazon ECS agrega o elimina del servicio durante una actualización acumulativa, se ajusta el número mínimo y máximo de tareas en estado correcto permitidas durante una implementación de servicio, tal y como se especifica en deploymentConfiguration.

CODE_DEPLOY

El tipo de implementación “blue/green” (CODE_DEPLOY) utiliza el modelo de implementación “blue/green” (azul/verde) con tecnología de CodeDeploy, que le permite verificar una nueva implementación de un servicio antes de enviarle tráfico de producción.

EXTERNAL

Utilice el tipo de implementación externa cuando quiera usar cualquier controlador de implementación de terceros para tener un control completo del proceso de implementación de un servicio de Amazon ECS.

Ubicación de tareas

placementConstraints

Tipo: matriz de objetos

Obligatorio: no

Una matriz de objetos de restricción de colocación que utilizar para tareas en su servicio. Puede especificar 10 restricciones como máximo por tarea. Este límite incluye restricciones en la definición de tareas y las especificadas en tiempo de ejecución. Si utiliza el tipo de lanzamiento de Fargate, no se admiten las restricciones de ubicación de tareas.

type

Tipo: cadena

Requerido: no

El tipo de restricción. Para garantizar que cada tarea de un determinado grupo se ejecute en una instancia de contenedor diferente, utilice distinctInstance. Utilice memberOf para restringir la selección a un grupo de candidatos válidos. El valor distinctInstance no se admite en las definiciones de tareas.

expression

Tipo: cadena

Requerido: no

Una expresión de lenguaje de consulte de clúster que aplicar a la restricción. No puede especificar una expresión si el tipo de restricción es distinctInstance. Para obtener más información, consulte Creación de expresiones para definir instancias de contenedor para las tareas de Amazon ECS.

placementStrategy

Tipo: matriz de objetos

Obligatorio: no

Los objetos de estrategia colocación que utilizar para tareas en su servicio. Puede especificar un máximo de cuatro reglas de estrategia por servicio.

type

Tipo: cadena

Valores válidos: random | spread | binpack

Obligatorio: no

Es el tipo de estrategia de colocación. La estrategia de colocación random coloca las tareas aleatoriamente en los candidatos disponibles. La estrategia de ubicación spread distribuye la ubicación entre los candidatos disponibles de manera uniforme en función del parámetro field. La estrategia binpack ubica las tareas en los candidatos disponibles que tengan la menor cantidad disponible del recurso que se especifica con el parámetro field. Por ejemplo, si aplica dicha estrategia en la memoria, se coloca una tarea en la instancia con la menor cantidad de memoria restante, pero suficiente para ejecutar la tarea.

field

Tipo: cadena

Requerido: no

El campo en el que aplicar la estrategia de ubicación. Para la estrategia de ubicación spread, los valores válidos son instanceId (o host, que tiene el mismo efecto) o cualquier plataforma o atributo personalizado que se aplique a una instancia de contenedor, como por ejemplo attribute:ecs.availability-zone. Para la estrategia de colocación binpack, los valores válidos son cpu y memory. Para la estrategia de colocación random, este campo no se utiliza.

Etiquetas

tags

Tipo: matriz de objetos

Obligatorio: no

Los metadatos que se aplican al servicio para ayudarle a categorizarlas y organizarlas. Cada etiqueta está formada por una clave y un valor opcional, ambos definidos por el usuario. Cuando se elimina un servicio, también se eliminan las etiquetas. Se puede aplicar un máximo de 50 etiquetas al servicio. Para obtener más información, consulte Etiquetado de los recursos de Amazon ECS.

key

Tipo: cadena

Limitaciones de longitud: longitud mínima de 1. Longitud máxima de 128.

Obligatorio: no

Una parte de un par clave-valor que compone una etiqueta. Un clave es una etiqueta general que actúa como una categoría para valores de etiqueta más específicos.

value

Tipo: cadena

Limitaciones de longitud: longitud mínima de 0. La longitud máxima es de 256 caracteres.

Obligatorio: no

La parte opcional de un par clave-valor que compone una etiqueta. Un valor actúa como un descriptor en una categoría de etiquetas (clave).

enableECSManagedTags

Tipo: Booleano

Valores válidos: true | false

Obligatorio: no

Especifica si se deben usar etiquetas administradas por Amazon ECS para las tareas del servicio. El valor predeterminado es false si no se especifica ningún valor. Para obtener más información, consulte Uso de etiquetas para facturación.

propagateTags

Tipo: cadena

Valores válidos: TASK_DEFINITION | SERVICE

Obligatorio: no

Especifica si se deben copiar las etiquetas de la definición de tareas o el servicio en las tareas del servicio. Si no se especifica ningún valor, las etiquetas no se copian. Solo se pueden copiar las etiquetas en las tareas del servicio durante la creación del servicio. Para agregar etiquetas a una tarea tras la creación del servicio, utilice la acción de la API TagResource.

Configuración de red

networkConfiguration

Tipo: objeto

Obligatorio: no

La configuración de red del servicio. Este parámetro es necesario para definiciones de tareas que usan el modo de red awsvpc para recibir su propia interfaz de red elástica y no se admite para otros modos de red. Si se usa el tipo de lanzamiento Fargate, es necesario el modo de red awsvpc. Para obtener más información acerca de las redes para el tipo de lanzamiento de Amazon EC2, consulte Opciones de redes de tareas de Amazon ECS para el tipo de lanzamiento de EC2. Para obtener más información acerca de las redes para el tipo de lanzamiento de Fargate, consulte Fargate Task Networking.

awsvpcConfiguration

Tipo: objeto

Obligatorio: no

Un objeto que representa las subredes y los grupos de seguridad para una tarea o servicio.

subnets

Tipo: matriz de cadenas

Obligatorio: sí

Las subredes asociadas a la tarea o servicio. Existe un límite de 16 subredes que se pueden especificar según awsvpcConfiguration.

securityGroups

Tipo: matriz de cadenas

Obligatorio: no

Los grupos de seguridad asociados a la tarea o servicio. Si no se especifica un grupo de seguridad, se usará el grupo de seguridad predeterminado para la VPC. Existe un límite de cinco grupos de seguridad que se puede especificar en función de awsvpcConfiguration.

assignPublicIP

Tipo: cadena

Valores válidos: ENABLED | DISABLED

Obligatorio: no

Indica si la interfaz de red elástica de la tarea recibe una dirección IP pública. Si no se especifica ningún valor, se utiliza el valor predeterminado DISABLED.

healthCheckGracePeriodSeconds

Tipo: entero

Obligatorio: no

El período de tiempo, en segundos, durante el cual el programador de servicios de Amazon ECS debe hacer caso omiso de las comprobaciones de estado de los destinos de Elastic Load Balancing, de contenedores y de Route 53 en mal estado después de que una tarea cambie al estado RUNNING. Esto solo es válido si el servicio está configurado para utilizar un balanceador de carga. Si el servicio tiene definido un balanceador de carga y no se especifica ningún valor para el período de gracia de comprobación de estado, se utiliza el valor predeterminado: 0.

Si las tareas de servicio tardan bastante en iniciarse y en responder a las comprobaciones de estado, puede especificar un periodo de gracia para la comprobación de estado de hasta 2 147 483 647 segundos durante el cual el programador de servicio de ECS hará caso omiso del resultado de las comprobaciones de estado. Este periodo de gracia puede evitar que el programador de servicio de ECS interprete que las tareas están en mal estado y las detenga antes de que tengan tiempo de iniciarse.

Si no utiliza un Elastic Load Balancing, le recomendamos que utilice el startPeriod en los parámetros de comprobación de estado de definición de tareas. Para obtener más información, consulte Determinar el estado de las tareas de Amazon ECS mediante comprobaciones de estado de los contenedores.

loadBalancers

Tipo: matriz de objetos

Obligatorio: no

Un objeto de balanceador de carga que representa los balanceadores de carga que utilizar con su servicio. En el caso de los servicios que utilizan un equilibrador de carga de aplicación o un equilibrador de carga de red, existe un límite de cinco grupos de destino que puede asociar a un servicio.

Después de crear un servicio, la configuración del equilibrador de carga no se puede cambiar desde la AWS Management Console. Puede usar el Copiloto de AWS, AWS CloudFormation, AWS CLI o SDK para modificar la configuración del equilibrador de carga solo del controlador de implementación progresiva ECS, no AWS CodeDeploy azul/verde o exterior. Cuando agrega, actualiza o elimina una configuración de equilibrador de carga, Amazon ECS inicia una nueva implementación con la configuración actualizada de Elastic Load Balancing. Esto hace que las tareas se registren y eliminen el registro de los equilibradores de carga. Le recomendamos que lo verifique en un entorno de prueba antes de actualizar la configuración de Elastic Load Balancing. Para obtener más información acerca de cómo modificar la configuración, consulte UpdateService en la Referencia de la API de Amazon Elastic Container Service.

En el caso de los balanceadores de carga de aplicacione y los balanceadores de carga de red, este objeto debe contener el ARN del grupo de destino del balanceador de carga, el nombre del contenedor (tal como aparece en la definición de contenedor) y el puerto del contenedor para obtener acceso desde el balanceador de carga. Cuando una tarea de este servicio se ubica en la instancia de contenedor, la combinación de instancia y puerto se registran como un destino en el grupo de destino especificado.

targetGroupArn

Tipo: cadena

Requerido: no

El nombre de recurso de Amazon (ARN) completo del grupo o grupos de destino del equilibrador de carga elástico asociados a un servicio.

Un ARN del grupo de destino solo se especifica cuando se utiliza un Application Load Balancer o un Network Load Balancer.

loadBalancerName

Tipo: cadena

Requerido: no

El nombre del balanceador de carga que se va a asociar con el servicio.

Si utiliza un equilibrador de carga de aplicación o un equilibrador de carga de red, se debe omitir el parámetro del nombre del equilibrador de carga.

containerName

Tipo: cadena

Requerido: no

El nombre del contenedor (tal como aparece en una definición de contenedor) para asociar al balanceador de carga.

containerPort

Tipo: entero

Obligatorio: no

El puerto en el contenedor para asociar al balanceador de carga. Este puerto debe corresponderse con un containerPort en la definición de tarea que utilizan las tareas del servicio. En el caso de las tareas que utilizan el tipo de lanzamiento de EC2, la instancia de contenedor debe permitir el tráfico de entrada en el hostPort de asignación de puertos.

role

Tipo: cadena

Requerido: no

El nombre abreviado o el ARN completo del rol de IAM que permite a Amazon ECS realizar llamadas al balanceador de carga en su nombre. Este parámetro solo se permite si utiliza un balanceador de carga con un solo grupo de destino para el servicio y su definición de tareas no utiliza el modo de red awsvpc. Si especifica el parámetro role, también debe especificar un objeto de balanceador de carga con el parámetro loadBalancers.

Si el rol especificado tiene una ruta distinta de /, entonces debe especificar el ARN de rol completo (se recomienda esto) o prefijar el nombre del rol con la ruta. Por ejemplo, si un rol con el nombre bar tiene una ruta /foo/ debería especificar /foo/bar como nombre del rol. Para obtener más información, consulte Nombres fáciles de recordar y rutas en la Guía del usuario de IAM.

importante

Si su cuenta ya ha creado el rol vinculado al servicio Amazon ECS, se usa ese rol de forma predeterminada para su servicio, a menos que especifique un rol aquí. El rol vinculado al servicio es necesario si su definición de tarea usa el modo de red awsvpc, en cuyo caso no debe especificar un rol aquí. Para obtener más información, consulte Uso de roles vinculados al servicio para Amazon ECS.

serviceConnectConfiguration

Tipo: objeto

Obligatorio: no

La configuración para que este servicio detecte otros servicios y se conecte a ellos, y para que otros servicios dentro de un espacio de nombres lo detecten y se conecten a él.

Para obtener más información, consulte Uso de Service Connect para conectar los servicios de Amazon ECS con nombres abreviados.

enabled

Tipo: Booleano

Obligatorio: sí

Especifica si se debe utilizar Service Connect con este servicio.

namespace

Tipo: cadena

Requerido: no

El nombre corto o el nombre de recurso de Amazon (ARN) completo del espacio de nombres de AWS Cloud Map para su uso con Service Connect. El espacio de nombres debe estar en la misma Región de AWS que el servicio y el clúster de Amazon ECS. El tipo de espacio de nombres no afecta a Service Connect. Para obtener más información acerca de AWS Cloud Map, consulte Trabajo con los servicios en la Guía para desarrolladores de AWS Cloud Map.

services

Tipo: matriz de objetos

Obligatorio: no

Una serie de objetos de servicio de Service Connect. Se trata de nombres y alias (también conocidos como puntos de conexión) que utilizan otros servicios de Amazon ECS para conectarse a este servicio.

Este campo no es obligatorio para que un servicio de “cliente” de Amazon ECS, miembro de un espacio de nombres, solo se conecte a otros servicios dentro del espacio de nombres. Un ejemplo es una aplicación frontend que acepta solicitudes entrantes de un equilibrador de carga que está asociado al servicio o por otros medios.

Un objeto selecciona un puerto de la definición de tarea, asigna un nombre para el servicio de AWS Cloud Map y una serie de alias (también conocidos como puntos de conexión) y puertos para que las aplicaciones de cliente hagan referencia a este servicio.

portName

Tipo: cadena

Obligatorio: sí

El portName debe coincidir con el name de una de las portMappings de todos los contenedores en la definición de tareas de este servicio de Amazon ECS.

discoveryName

Tipo: cadena

Requerido: no

discoveryName es el nombre del servicio nuevo de AWS Cloud Map que Amazon ECS crea para este servicio de Amazon ECS. Debe ser único dentro del espacio de nombres de AWS Cloud Map.

Si este campo no está especificado, se utiliza portName.

clientAliases

Tipo: matriz de objetos

Obligatorio: no

La lista de alias de clientes para este servicio de Service Connect. Se utilizan para asignar nombres que pueden utilizar las aplicaciones de cliente. El número máximo de alias de cliente que puede tener en esta lista es 1.

Cada alias (“punto de conexión”) es un nombre de DNS y un número de puerto que otros servicios de Amazon ECS (“clientes”) pueden usar para conectarse a este servicio.

Cada combinación de nombre y de puerto debe ser única en el espacio de nombres.

Estos nombres se configuran dentro de cada tarea del servicio de cliente, no en AWS Cloud Map. Las solicitudes de DNS para resolver estos nombres no abandonan la tarea y no se cuentan para la cuota de solicitudes de DNS por segundo por interfaz de red elástica.

port

Tipo: entero

Obligatorio: sí

El número de puerto de escucha para el proxy de Service Connect. Este puerto está disponible dentro de todas las tareas del mismo espacio de nombres.

Para evitar cambiar las aplicaciones en los servicios de cliente de Amazon ECS, configúrelo con el mismo puerto que la aplicación de cliente utiliza de forma predeterminada.

dnsName

Tipo: cadena

Requerido: no

dnsName es el nombre que se utiliza en las aplicaciones de tareas del cliente para conectarse al servicio. El nombre debe ser una etiqueta de DNS válida.

Si no se especifica este campo, el valor se establece de forma predeterminada en discoveryName.namespace. Si el discoveryName no se especifica, se utiliza el portName de la definición de la tarea.

Para evitar cambiar las aplicaciones en los servicios de cliente de Amazon ECS, configúrelo con el mismo nombre que la aplicación de cliente utiliza de forma predeterminada. Por ejemplo, algunos nombres comunes son database, db o el nombre en minúsculas de una base de datos, como mysql o redis.

ingressPortOverride

Tipo: entero

Obligatorio: no

(Opcional) El número de puerto en el que se escuchará el proxy de Service Connect.

Utilice el valor de este campo para omitir el proxy para el tráfico en el número de puerto especificado en la portMapping denominada en la definición de tarea de esta aplicación y luego utilícelo en los grupos de seguridad de Amazon VPC para permitir el tráfico en el proxy para este servicio de Amazon ECS.

En el modo awsvpc, el valor predeterminado es el número de puerto del contenedor que se especifica en la portMapping denominada de la definición de la tarea de esta aplicación. En el modo bridge, el valor predeterminado es el puerto efímero dinámico del proxy de Service Connect.

logConfiguration

Tipo: objeto LogConfiguration

Obligatorio: no

Esto define dónde se publican los registros de proxy de Service Connect. Utilice los registros para depurar errores durante eventos inesperados. Esta configuración establece el parámetro logConfiguration en el contenedor del proxy de Service Connect en cada tarea de este servicio de Amazon ECS. El contenedor del proxy no se especifica en la definición de tarea.

Le recomendamos que utilice la misma configuración de registro que los contenedores de aplicaciones de la definición de tareas para este servicio de Amazon ECS. Para FireLens, esta es la configuración de registro del contenedor de la aplicación. No es el contenedor del enrutador de registro de FireLens el que usa la imagen del contenedor fluent-bit o fluentd .

serviceRegistries

Tipo: matriz de objetos

Obligatorio: no

Los detalles de la configuración de detección de servicios para el servicio. Para obtener más información, consulte Uso de la detección de servicios para conectar los servicios de Amazon ECS con nombres de DNS.

registryArn

Tipo: string

Requerido: no

El nombre de recurso de Amazon (ARN) del registro de servicios. El registro de servicios compatible actualmente es AWS Cloud Map. Para obtener más información, consulte Utilización de servicios en la Guía para desarrolladores de AWS Cloud Map.

port

Tipo: entero

Obligatorio: no

El valor del puerto utilizado si el servicio de detección de servicios se especifica en un registro de SRV. Este campo es obligatorio si se utilizan el modo de red awsvpc y los registros SRV.

containerName

Tipo: cadena

Requerido: no

El valor del nombre del contenedor que se va a utilizar para el servicio de detección de servicios. Este valor se especifica en la definición de tarea. Si la definición de tarea especificada por la tarea de servicio utiliza el modo de red bridge o host, se debe especificar una combinación de containerName y containerPort a partir de la definición de tarea. Si la definición de tarea especificada por la tarea de servicio usa el modo de red awsvpc y se utiliza un registro DNS de tipo SRV, se debe especificar una combinación de containerName y containerPort o un valor port, pero no ambos.

containerPort

Tipo: entero

Obligatorio: no

El valor del puerto que se va a utilizar para el servicio de detección de servicios. Este valor se especifica en la definición de tarea. Si la definición de tarea especificada por la tarea de servicio utiliza el modo de red bridge o host, se debe especificar una combinación de containerName y containerPort a partir de la definición de tarea. Si la definición de especificada por la tarea de servicio usa el modo de red awsvpc y se utiliza un registro DNS de tipo SRV, se debe especificar una combinación de containerName y containerPort o un valor de port, pero no ambos.

Token de cliente

clientToken

Tipo: cadena

Requerido: no

Identificador único con distinción entre mayúsculas y minúsculas que se proporciona para garantizar la idempotencia de la solicitud. Puede tener hasta 32 caracteres ASCII.

Configuraciones de volúmenes

volumeConfigurations

Tipo: objeto

Obligatorio: no

Configuración que se utilizará para crear volúmenes para las tareas que administra el servicio. Se crea un volumen para cada tarea del servicio. Con este objeto, solo se pueden configurar los volúmenes marcados como configuredAtLaunch en la definición de la tarea. Este objeto es necesario para adjuntar volúmenes de datos de Amazon EBS a las tareas que administra un servicio. Para obtener más información, consulte Volúmenes de Amazon EBS.

name

Tipo: cadena

Obligatorio: sí

Nombre de un volumen que se configura al crear o actualizar un servicio. Se permiten hasta 255 letras (mayúsculas y minúsculas), números, símbolos de subrayado (_) y guiones (-). Este valor debe coincidir con el nombre del volumen que se especifica en la definición de la tarea.

managedEBSVolume

Tipo: objeto

Obligatorio: no

Configuración de volúmenes de Amazon EBS que se adjuntan a las tareas que administra un servicio cuando se crea o actualiza un servicio.

encrypted

Tipo: Booleano

Obligatorio: no

Valores válidos: true|false

Indica si se cifrará el volumen de Amazon EBS adjunto a las tareas que administra un servicio. Si activó el cifrado de Amazon EBS de manera predeterminada en su cuenta, esta configuración se anulará y el volumen se cifrará. Para más información acerca del cifrado de EBS de manera predeterminada, consulte Encryption by default en la Guía del usuario de Amazon EC2.

kmsKeyId

Tipo: cadena

Requerido: no

El identificador de AWS Key Management Service (AWS KMS) para utilizar el cifrado de Amazon EBS. Si no se indica este parámetro, se utiliza su AWS KMS key para Amazon EBS. Si se especifica KmsKeyId, el estado de cifrado debe ser true.

Puede indicar la clave de KMS mediante alguno de los métodos siguientes:

  • Id. de la clave: por ejemplo, 1234abcd-12ab-34cd-56ef-1234567890ab.

  • Alias de la clave: por ejemplo, alias/ExampleAlias.

  • ARN de la clave: por ejemplo, arn:aws:kms:us-east-1:012345678910:key/1234abcd-12ab-34cd-56ef-1234567890ab.

  • ARN del alias: por ejemplo, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias.

importante

AWS autentica la clave de KMS de manera asíncrona. Por lo tanto, si indica un id., alias o ARN que no es válido, puede parecer que la acción es correcta, pero eventualmente produce un error. Para más información, consulte Troubleshooting Amazon EBS volume attachment issues.

volumeType

Tipo: cadena

Requerido: no

Valores válidos: gp2|gp3|io1|io2|sc1|st1|standard

El tipo de volumen EBS. Para más información, consulte Amazon EBS volume types en Amazon EC2 User Guide. El tipo de volumen predeterminado es gp3.

nota

El tipo de volumen standard no es compatible con los volúmenes de Amazon EBS configurados para adjuntarlos a las tareas de Fargate.

sizeInGiB

Tipo: entero

Obligatorio: no

Rango válido: números enteros entre 1 y 16 384

El tamaño del volumen de EBS en gibibytes (GiB). Si no proporciona un id. de instantánea para configurar un volumen para adjuntarlo, debe proporcionar un valor de tamaño. Si configura un volumen para adjuntarlo mediante una instantánea, el valor predeterminado es el tamaño de la instantánea. Puede indicar un tamaño superior o igual al tamaño de la instantánea.

Para los tipos de volúmenes gp2 y gp3, el rango válido es de 1 a 16 384.

Para los tipos de volúmenes io1 y io2, el rango válido es de 4 a 16 384.

Para los tipos de volúmenes st1 y sc1, el rango válido es de 125 a 16 384.

Para el tipo de volúmenes standard, el rango válido es de 1 a 1024.

snapshotId

Tipo: cadena

Requerido: no

El id. de la instantánea de un volumen de EBS existente que se utiliza para crear un volumen nuevo que se adjunta a la tarea de ECS.

iops

Tipo: entero

Obligatorio: no

Número de operaciones de E/S por segundo (IOPS). Para los volúmenes gp3, io1 y io2, esto representa el número de IOPS aprovisionadas para el volumen. Para los volúmenes gp2, este valor representa el rendimiento de referencia del volumen y la velocidad a la que el volumen acumula créditos de E/S para ráfaga. Este parámetro es obligatorio para los volúmenes io1 y io2. Este parámetro no es compatible con los volúmenes de gp2, st1, sc1 o standard.

Para los volúmenes de gp3, el rango de valores válido es de 3000 a 16 000.

Para los volúmenes de io1, el rango de valores válido es de 100 a 64 000.

Para los volúmenes de io2, el rango de valores válido es de 100 a 64 000.

throughput

Tipo: entero

Obligatorio: no

El rendimiento necesario para aprovisionar los volúmenes adjuntos a tareas que gestiona un servicio.

importante

Este parámetro solo es compatible solo con los volúmenes de gp3.

roleArn

Tipo: cadena

Obligatorio: sí

El ARN de recursos de Amazon (ARN) del rol de AWS Identity and Access Management (IAM) de la infraestructura que proporciona los permisos de Amazon ECS para administrar los recursos de Amazon EBS para las tareas. Para obtener más información, consulte Rol de IAM de infraestructura de Amazon ECS.

tagSpecifications

Tipo: objeto

Obligatorio: no

Indicación para que las etiquetas se apliquen a los volúmenes de Amazon EBS que gestiona el servicio.

resourceType

Tipo: cadena

Obligatorio: sí

Valores válidos: volume

El tipo de recurso que se debe etiquetar en la creación.

tags

Tipo: matriz de objetos

Obligatorio: no

Los metadatos que se aplican a los volúmenes para categorizarlos y organizarlos. Cada etiqueta está formada por una clave y un valor opcional, ambos definidos por el usuario. AmazonECSCreated y AmazonECSManaged son etiquetas reservadas que Amazon ECS agrega en su nombre, por lo que puede indicar un máximo de 48 etiquetas propias. Cuando se elimina un volumen, también se eliminan las etiquetas. Para obtener más información, consulte Etiquetado de los recursos de Amazon ECS.

key

Tipo: cadena

Limitaciones de longitud: longitud mínima de 1. Longitud máxima de 128.

Obligatorio: no

Una parte de un par clave-valor que compone una etiqueta. Un clave es una etiqueta general que actúa como una categoría para valores de etiqueta más específicos.

value

Tipo: cadena

Limitaciones de longitud: longitud mínima de 0. La longitud máxima es de 256 caracteres.

Obligatorio: no

La parte opcional de un par clave-valor que compone una etiqueta. Un valor actúa como un descriptor en una categoría de etiquetas (clave).

propagateTags

Tipo: cadena

Valores válidos: TASK_DEFINITION | SERVICE | NONE

Obligatorio: no

Indica si se deben copiar las etiquetas de la definición de tareas o el servicio en un volumen. Si se indica NONE o no se indica ningún valor, las etiquetas no se copian.

fileSystemType

Tipo: cadena

Requerido: no

Valores válidos: xfs|ext3|ext4

Tipo de sistema de archivos de un volumen. El tipo de sistema de archivos del volumen determina cómo se almacenan y recuperan los datos en el volumen. En el caso de los volúmenes creados a partir de una instantánea, debe especificar el mismo tipo de sistema de archivos que utilizaba el volumen cuando se creó la instantánea. Si hay un error de coincidencia con el tipo de sistema de archivos, la tarea no podrá iniciarse. El valor predeterminado para los volúmenes adjuntos a las tareas de Linux es XFS.

Plantilla de definición de servicio

A continuación, se muestra la representación JSON de una definición de servicio de Amazon ECS.

Tipo de lanzamiento de Amazon EC2

{ "cluster": "", "serviceName": "", "taskDefinition": "", "loadBalancers": [ { "targetGroupArn": "", "loadBalancerName": "", "containerName": "", "containerPort": 0 } ], "serviceRegistries": [ { "registryArn": "", "port": 0, "containerName": "", "containerPort": 0 } ], "desiredCount": 0, "clientToken": "", "launchType": "EC2", "capacityProviderStrategy": [ { "capacityProvider": "", "weight": 0, "base": 0 } ], "platformVersion": "", "role": "", "deploymentConfiguration": { "deploymentCircuitBreaker": { "enable": true, "rollback": true }, "maximumPercent": 0, "minimumHealthyPercent": 0, "alarms": { "alarmNames": [ "" ], "enable": true, "rollback": true } }, "placementConstraints": [ { "type": "distinctInstance", "expression": "" } ], "placementStrategy": [ { "type": "binpack", "field": "" } ], "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "" ], "securityGroups": [ "" ], "assignPublicIp": "DISABLED" } }, "healthCheckGracePeriodSeconds": 0, "schedulingStrategy": "REPLICA", "deploymentController": { "type": "EXTERNAL" }, "tags": [ { "key": "", "value": "" } ], "enableECSManagedTags": true, "propagateTags": "TASK_DEFINITION", "enableExecuteCommand": true, "serviceConnectConfiguration": { "enabled": true, "namespace": "", "services": [ { "portName": "", "discoveryName": "", "clientAliases": [ { "port": 0, "dnsName": "" } ], "ingressPortOverride": 0 } ], "logConfiguration": { "logDriver": "journald", "options": { "KeyName": "" }, "secretOptions": [ { "name": "", "valueFrom": "" } ] } }, "volumeConfigurations": [ { "name": "", "managedEBSVolume": { "encrypted": true, "kmsKeyId": "", "volumeType": "", "sizeInGiB": 0, "snapshotId": "", "iops": 0, "throughput": 0, "tagSpecifications": [ { "resourceType": "volume", "tags": [ { "key": "", "value": "" } ], "propagateTags": "NONE" } ], "roleArn": "", "filesystemType": "" } } ] }

Tipo de lanzamiento de Fargate

{ "cluster": "", "serviceName": "", "taskDefinition": "", "loadBalancers": [ { "targetGroupArn": "", "loadBalancerName": "", "containerName": "", "containerPort": 0 } ], "serviceRegistries": [ { "registryArn": "", "port": 0, "containerName": "", "containerPort": 0 } ], "desiredCount": 0, "clientToken": "", "launchType": "FARGATE", "capacityProviderStrategy": [ { "capacityProvider": "", "weight": 0, "base": 0 } ], "platformVersion": "", "platformFamily": "", "role": "", "deploymentConfiguration": { "deploymentCircuitBreaker": { "enable": true, "rollback": true }, "maximumPercent": 0, "minimumHealthyPercent": 0, "alarms": { "alarmNames": [ "" ], "enable": true, "rollback": true } }, "placementStrategy": [ { "type": "binpack", "field": "" } ], "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "" ], "securityGroups": [ "" ], "assignPublicIp": "DISABLED" } }, "healthCheckGracePeriodSeconds": 0, "schedulingStrategy": "REPLICA", "deploymentController": { "type": "EXTERNAL" }, "tags": [ { "key": "", "value": "" } ], "enableECSManagedTags": true, "propagateTags": "TASK_DEFINITION", "enableExecuteCommand": true, "serviceConnectConfiguration": { "enabled": true, "namespace": "", "services": [ { "portName": "", "discoveryName": "", "clientAliases": [ { "port": 0, "dnsName": "" } ], "ingressPortOverride": 0 } ], "logConfiguration": { "logDriver": "journald", "options": { "KeyName": "" }, "secretOptions": [ { "name": "", "valueFrom": "" } ] } }, "volumeConfigurations": [ { "name": "", "managedEBSVolume": { "encrypted": true, "kmsKeyId": "", "volumeType": "", "sizeInGiB": 0, "snapshotId": "", "iops": 0, "throughput": 0, "tagSpecifications": [ { "resourceType": "volume", "tags": [ { "key": "", "value": "" } ], "propagateTags": "NONE" } ], "roleArn": "", "filesystemType": "" } } ] }

Puede crear esta plantilla de definición de servicio mediante el siguiente comando de la AWS CLI.

aws ecs create-service --generate-cli-skeleton