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
Requerido: 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ámetrocapacityProviderStrategy
.
Estrategia de proveedores de capacidad
capacityProviderStrategy
-
Tipo: matriz de objetos
Requerido: 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
yweight
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 estadoUPDATING
oACTIVE
.Si se especifica
capacityProviderStrategy
, se debe omitir el parámetrolaunchType
. Si no se especificacapacityProviderStrategy
olaunchType
, se utilizadefaultCapacityProviderStrategy
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
oFARGATE_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.
Requerido: 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.
Requerido: 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
yrevision
(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 unarevision
, se utiliza la última revisiónACTIVE
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
yWINDOWS_SERVER_2022_CORE
.El valor
platformFamily
para cada tarea que especifique para el servicio debe coincidir con el servicio del valorplatformFamily
. Por ejemplo, si configuró elplatformFamily
aWINDOWS_SERVER_2019_FULL
, el valorplatformFamily
para todas las tareas debe serWINDOWS_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
Requerido: 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
Requerido: 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 deDAEMON
, este parámetro es opcional.
Configuración de implementación
deploymentConfiguration
-
Tipo: objeto
Requerido: 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
Requerido: no
Si un servicio utiliza el tipo de implementación de actualización continua (
ECS
), el parámetromaximumPercent
representa un límite superior en el número de tareas de servicio que se permiten en el estadoRUNNING
,STOPPING
oPENDING
durante una implementación. Se expresa como un porcentaje dedesiredCount
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 serviciosREPLICA
y tiene undesiredCount
de cuatro tareas y un valormaximumPercent
de 200 %, el programador inicia 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 valormaximumPercent
predeterminado para un servicio que utiliza el programador de servicioREPLICA
es 200 %.El programador de Amazon ECS usa este parámetro para reemplazar las tareas en mal estado. Para ello, inicia primero las tareas de reemplazo y, luego, las detiene, siempre que haya recursos del clúster disponibles para iniciar las tareas de reemplazo. Para obtener más información sobre cómo el programador reemplaza las tareas en mal estado, consulte Servicios de Amazon ECS.
Si el servicio utiliza el tipo de programador de servicio
DAEMON
, elmaximumPercent
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 elmaximumPercent
/100, redondeado al valor del entero inferior más próximo.Si un servicio está utilizando el tipo de implementación blue/green (
CODE_DEPLOY
) oEXTERNAL
y tareas que usan el tipo de lanzamiento EC2, el valor de porcentaje máximo se establece en el valor predeterminado. El valor se usa para definir el límite superior del número de las tareas en el servicio que permanecen en el estadoRUNNING
al mismo tiempo que las instancias de contenedor se encuentran en el estadoDRAINING
.nota
No puede especificar un valor
maximumPercent
personalizado para un servicio que utilice los tipos azul/verde (CODE_DEPLOY
) o de implementaciónEXTERNAL
y que tenga tareas que utilicen el tipo de lanzamiento de EC2.Si el servicio utiliza los tipos de implementación azul/verde (
CODE_DEPLOY
) oEXTERNAL
, y las tareas del servicio utilizan el tipo de lanzamiento Fargate, no se utilizará el valor porcentual máximo. El valor aún se devuelve al describir el servicio. minimumHealthyPercent
-
Tipo: entero
Requerido: no
Si un servicio utiliza el tipo de implementación de actualización continua (
ECS
), el parámetrominimumHealthyPercent
representa un límite inferior en el número de tareas de servicio que permanecen en el estadoRUNNING
durante una implementación. Se expresa como un porcentaje dedesiredCount
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 parámetro
desiredCount
de cuatro tareas, un parámetrominimumHealthyPercent
del 50 % y un parámetromaximumPercent
del 100 %, el programador de servicio detiene dos tareas existentes para liberar capacidad de clúster antes de iniciar dos nuevas tareas.Si alguna tarea se encuentra en mal estado y
maximumPercent
no permite que el programador de Amazon ECS inicie tareas de reemplazo, el programador detiene las tareas en mal estado una por una (y utilizaminimumHealthyPercent
como una restricción) para liberar capacidad y lanzar tareas de reemplazo. Para obtener más información sobre cómo el programador reemplaza las tareas en mal estado, consulte Servicios de Amazon ECS.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 sí 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 valorminimumHealthyPercent
predeterminado para un servicio que utiliza el programador de serviciosDAEMON
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 elminimumHealthyPercent
/100, redondeado al valor del entero superior más próximo.Si un servicio utiliza el tipo de implementación “blue/green” (
CODE_DEPLOY
) oEXTERNAL
y ejecuta tareas que usan el tipo de lanzamiento de EC2, los valores de porcentaje mínimo en buen estado y porcentaje máximo se establecen en los valores predeterminados. El valor se usa para definir el límite inferior del número de las tareas en el servicio que permanecen en el estadoRUNNING
al mismo tiempo que las instancias de contenedor se encuentran en el estadoDRAINING
.nota
No puede especificar un valor
maximumPercent
personalizado para un servicio que utilice los tipos azul/verde (CODE_DEPLOY
) o de implementaciónEXTERNAL
y que tenga tareas que utilicen el tipo de lanzamiento de EC2.Si un servicio utiliza los tipos de implementación “blue/green” (
CODE_DEPLOY
) oEXTERNAL
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
Requerido: 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
Requerido: 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
. UtilicememberOf
para restringir la selección a un grupo de candidatos válidos. El valordistinctInstance
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
Requerido: 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
Requerido: 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ónspread
distribuye la ubicación entre los candidatos disponibles de manera uniforme en función del parámetrofield
. La estrategiabinpack
ubica las tareas en los candidatos disponibles que tengan la menor cantidad disponible del recurso que se especifica con el parámetrofield
. 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 soninstanceId
(ohost
, que tiene el mismo efecto) o cualquier plataforma o atributo personalizado que se aplique a una instancia de contenedor, como por ejemploattribute:ecs.availability-zone
. Para la estrategia de colocaciónbinpack
, los valores válidos soncpu
ymemory
. Para la estrategia de colocaciónrandom
, este campo no se utiliza.
Tags
-
Tipo: matriz de objetos
Requerido: 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.
Requerido: 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.
Requerido: 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).
-
Tipo: Booleano
Valores válidos:
true
|false
Requerido: 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
Requerido: 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
Requerido: 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 redawsvpc
. 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 Opciones de redes de tareas de Amazon ECS para el tipo de lanzamiento de Fargate.awsvpcConfiguration
-
Tipo: objeto
Requerido: 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
Requerido: 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
Requerido: 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
Requerido: 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
Requerido: 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
Requerido: 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 elhostPort
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ámetrorole
, también debe especificar un objeto de balanceador de carga con el parámetroloadBalancers
.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 nombrebar
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
Requerido: 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
Requerido: 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 elname
de una de lasportMappings
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
Requerido: 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 eldiscoveryName
no se especifica, se utiliza elportName
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, comomysql
oredis
.
ingressPortOverride
-
Tipo: entero
Requerido: 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 laportMapping
denominada de la definición de la tarea de esta aplicación. En el modobridge
, el valor predeterminado es el puerto efímero dinámico del proxy de Service Connect. logConfiguration
-
Tipo: objeto LogConfiguration
Requerido: 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
ofluentd
.
serviceRegistries
-
Tipo: matriz de objetos
Requerido: 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
Requerido: 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
ohost
, se debe especificar una combinación decontainerName
ycontainerPort
a partir de la definición de tarea. Si la definición de tarea especificada por la tarea de servicio usa el modo de redawsvpc
y se utiliza un registro DNS de tipo SRV, se debe especificar una combinación decontainerName
ycontainerPort
o un valorport
, pero no ambos. containerPort
-
Tipo: entero
Requerido: 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
ohost
, se debe especificar una combinación decontainerName
ycontainerPort
a partir de la definición de tarea. Si la definición de especificada por la tarea de servicio usa el modo de redawsvpc
y se utiliza un registro DNS de tipo SRV, se debe especificar una combinación decontainerName
ycontainerPort
o un valor deport
, 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
Requerido: 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
Requerido: 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
Requerido: 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 obtener más información acerca del cifrado de EBS de manera predeterminada, consulte Habilitación de cifrado de Amazon EBS de manera predeterminada en la Guía del usuario de Amazon EBS.
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 sertrue
.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 obtener más información acerca de los tipos de volúmenes, consulte Tipos de volúmenes de Amazon EBS en la Guía del usuario de Amazon EBS. 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
Requerido: 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
ygp3
, el rango válido es de 1 a 16 384.Para los tipos de volúmenes
io1
yio2
, el rango válido es de 4 a 16 384.Para los tipos de volúmenes
st1
ysc1
, 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
Requerido: no
Número de operaciones de E/S por segundo (IOPS). Para los volúmenes
gp3
,io1
yio2
, esto representa el número de IOPS aprovisionadas para el volumen. Para los volúmenesgp2
, 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úmenesio1
yio2
. Este parámetro no es compatible con los volúmenes degp2
,st1
,sc1
ostandard
.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
Requerido: 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
Requerido: 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.
-
Tipo: matriz de objetos
Requerido: 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
yAmazonECSManaged
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.
Requerido: 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.
Requerido: 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
Requerido: 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
|NTFS
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.
Los valores válidos para Linux son
xfs
, ext3, and ext4
. El valor predeterminado para los volúmenes adjuntos a las tareas de Linux esXFS
.Los valores válidos para Windows son
NTFS
. El valor predeterminado para los volúmenes adjuntos a las tareas de Windows esNTFS
.
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