Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Restricciones de ubicación de tareas deAmazon ECS
Una restricción de ubicación de tareas es una regla que se tiene en cuenta durante la ubicación de tareas. Las restricciones de ubicación de tareas se pueden especificar al ejecutar una tarea o al crear un nuevo servicio. Las restricciones de ubicación de tareas también se pueden actualizar para los servicios existentes. Para obtener más información, consulte ubicación de tareas deAmazon ECS.
Tipos de restricción
Amazon ECS admite los siguientes tipos de restricciones de ubicación de tareas:
distinctInstance
-
Colocar cada tarea en una instancia de contenedor distinta. Esta restricción de ubicación de tareas se puede especificar al ejecutar una tarea o al crear un nuevo servicio.
memberOf
-
Colocar tareas en instancias de contenedor que satisfacen una expresión. Para obtener más información sobre la sintaxis de las expresiones para las restricciones, consulte Lenguaje de consulta de clúster.
La restricción de ubicación de tareas
memberOf
se puede especificar con las acciones siguientes:-
Ejecución de una tarea
-
Creación de un servicio nuevo
-
Creación de una definición de tarea nueva
-
Creación de una revisión nueva de una definición de tarea existente.
-
Attributes
Puede añadir metadatos personalizados a sus instancias de contenedor, conocidas como atributos. Cada atributo tiene un nombre y un valor de cadena opcional. Puede utilizar los atributos integrados que ofrece Amazon ECS o definir atributos personalizados.
Atributos integrados
Amazon ECS aplica automáticamente los siguientes atributos a sus instancias de contenedor.
ecs.ami-id
-
El ID de la AMI utilizada para lanzar la instancia. Un valor de ejemplo para este atributo es
ami-1234abcd
. ecs.availability-zone
-
La zona de disponibilidad de la instancia. Un valor de ejemplo para este atributo es
us-east-1a
. ecs.instance-type
-
El tipo de instancia de la instancia. Un valor de ejemplo para este atributo es
g2.2xlarge
. ecs.os-type
-
El sistema operativo de la instancia. Los valores posibles para este atributo son
linux
ywindows
. ecs.cpu-architecture
-
La arquitectura de CPU de la instancia. Los valores posibles para este atributo son
x86_64
yarm64
. ecs.vpc-id
-
La VPC en la que se lanzó la instancia. Un valor de ejemplo para este atributo es
vpc-1234abcd
. ecs.subnet-id
-
La subred que está utilizando la instancia. Un valor de ejemplo para este atributo es
subnet-1234abcd
.
Atributos opcionales
Amazon ECS puede añadir los siguientes atributos a sus instancias de contenedor.
ecs.awsvpc-trunk-id
-
Si este atributo existe, la instancia tiene una interfaz de red troncal. Para obtener más información, consulte Elastic network interface trunking (Enrutamiento troncal de interfaz de red elástica).
ecs.outpost-arn
-
Si este atributo existe, contiene el Amazon Resource Name (ARN) de Outpost. Para obtener más información, consulte Amazon Elastic Container Service del AWS Outposts.
Custom attributes (Atributos personalizados)
Puede aplicar atributos personalizados a sus instancias de contenedor. Por ejemplo, puede definir un atributo con el nombre "stack" y un valor "prod".
Al especificar atributos personalizados, se debe tener en cuenta lo siguiente.
-
El
name
debe contener entre 1 y 128 caracteres y el nombre puede contener letras (mayúsculas y minúsculas), números, guiones, guiones bajos, barras diagonales, barras diagonales invertidas o puntos. -
El
value
debe contener entre 1 y 128 caracteres y puede contener letras (mayúsculas y minúsculas), números, guiones, guiones bajos, puntos, arroba (@), barras diagonales, barras diagonales invertidas, dos puntos o espacios. El valor no puede contener espacios en blanco a la izquierda ni a la derecha.
Adición de un atributo
Puede agregar atributos personalizados en el momento del registro de la instancia utilizando el agente de contenedor o manualmente, mediante la Consola de administración de AWS. Para obtener más información sobre el uso del agente de contenedor, consulte Parámetros de configuración de agente de contenedor de Amazon ECS.
Para añadir atributos personalizados utilizando la consola
-
Abra la consola de Amazon ECS en https://console.aws.amazon.com/ecs/
. -
En el panel de navegación, elija Clusters (Clústeres) y seleccione un clúster.
-
En la pestaña ECS Instances, seleccione la casilla de verificación de la instancia de contenedor.
-
Elija Actions, View/Edit Attributes.
-
Para cada atributo, haga lo siguiente:
-
Elija Add attribute.
-
Escriba un nombre y un valor para el atributo y elija el icono de marca de verificación.
-
-
Cuando haya terminado de añadir atributos, elija Close.
Adición de atributos personalizados mediante AWS CLI
Los siguientes ejemplos muestran cómo añadir atributos personalizados utilizando el comando put-attributes.
Ejemplo: atributo único
El siguiente ejemplo agrega el atributo personalizado "stack=prod" a la instancia de contenedor especificada en el clúster predeterminado.
aws ecs put-attributes --attributes name=stack,value=prod,targetId=
arn
Ejemplo: atributos múltiples
El siguiente ejemplo agrega los atributos personalizados "stack=prod" y "project=a" a la instancia de contenedor especificada en el clúster predeterminado.
aws ecs put-attributes --attributes name=stack,value=prod,targetId=
arn
name=project,value=a,targetId=arn
Filtrado por atributo
Puede aplicar un filtro a sus instancias de contenedor que le permiten ver atributos personalizados.
Filtrar instancias de contenedor por atributo utilizando la consola
-
Abra la consola de Amazon ECS en https://console.aws.amazon.com/ecs/
. -
Elija un clúster que tenga instancias de contenedor.
-
Elija ECS Instances.
-
Para definir las preferencias de visibilidad de las columnas, elija el icono del engranaje (
) y seleccione los atributos que desea mostrar. Esta configuración se aplica a todos los clústeres de contenedores asociados a su cuenta.
-
Con el campo de texto Filter by attributes, escriba o seleccione los atributos que desea utilizar para filtrar. El formato debe ser AttributeName: AttributeValue.
Para Filter by attributes, escriba o seleccione los atributos por los que desea filtrar. Después de seleccionar el nombre de atributo, se le solicitará que indique el valor del atributo.
-
Puede añadir atributos adicionales al filtro según sea necesario. Elija la X junto a un atributo para eliminarlo.
Filtrar instancias de contenedor por atributo utilizando la AWS CLI
Los siguientes ejemplos muestran cómo filtrar instancias de contenedor por atributo utilizando el comando list-consteader-instances. Para obtener más información acerca de la sintaxis del filtro, consulte Lenguaje de consulta de clúster.
Ejemplo: atributo integrado
En el ejemplo siguiente se utilizan atributos integrados para mostrar una lista de las instancias g2.2xlarge.
aws ecs list-container-instances --filter "attribute:ecs.instance-type == g2.2xlarge"
Ejemplo: atributo personalizado
En el ejemplo siguiente se muestra una lista de las instancias con el atributo personalizado "stack=prod".
aws ecs list-container-instances --filter "attribute:stack == prod"
Ejemplo: excluir un valor de atributo
En el ejemplo siguiente se muestra una lista de las instancias con el atributo personalizado "stack" a menos que el valor de atributo sea "prod".
aws ecs list-container-instances --filter "attribute:stack != prod"
Ejemplo: varios valores de atributos
En el siguiente ejemplo, se utilizan atributos integrados para mostrar una lista de
las instancias de tipo t2.small
o t2.medium
.
aws ecs list-container-instances --filter "attribute:ecs.instance-type in [t2.small, t2.medium]"
Ejemplo: varios atributos
En el siguiente ejemplo, se utilizan atributos integrados para mostrar una lista de las instancias T2 en la zona de disponibilidad us-east-1a.
aws ecs list-container-instances --filter "attribute:ecs.instance-type =~ t2.* and attribute:ecs.availability-zone == us-east-1a"
Grupos de tareas
Puede identificar un conjunto de tareas relacionadas como grupo de tareas. Todas las tareas con el mismo nombre de grupo de tareas se consideran un conjunto al realizar la ubicación distribuida. Por ejemplo, suponga que está ejecutando distintas aplicaciones en un clúster, tales como bases de datos y servidores web. Para asegurarse de que las bases de datos están equilibradas en zonas de disponibilidad, agréguelas a un grupo de tareas denominado "databases" y, a continuación, use este grupo de tareas como restricción para la ubicación de tareas.
Cuando se lanza una tarea utilizando la acción RunTask
o StartTask
, puede especificar el nombre del grupo de tareas para la tarea. Si no especifica
un grupo de tareas para la tarea, el nombre predeterminado es el nombre de la familia
de la definición de tarea (por ejemplo, family:my-task-definition
).
Para las tareas lanzadas por el programador de servicio, el nombre del grupo de tareas
es el nombre del servicio (por ejemplo, service:my-service-name
).
Limits
-
Un nombre de grupo de tareas debe tener 255 caracteres o menos.
-
Cada tarea puede estar exactamente en un grupo.
-
Después de lanzar una tarea, no puede modificar su grupo de tarea.
Restricciones de ejemplo
A continuación, se muestran ejemplos de restricción de ubicación de tareas.
En este ejemplo, se utiliza la restricción memberOf
para ubicar tareas en instancias T2. Se puede especificar con las acciones siguientes:
CreateService, UpdateService, RegisterTaskDefinition y RunTask.
"placementConstraints": [ { "expression": "attribute:ecs.instance-type =~ t2.*", "type": "memberOf" } ]
El ejemplo utiliza la restricción memberOf
para ubicar tareas en instancias con otras tareas del grupo de tareas databases
, teniendo en cuenta también las estrategias de ubicación de tareas que se especifiquen.
Se puede especificar con las acciones siguientes: CreateService, UpdateService, RegisterTaskDefinition y RunTask.
"placementConstraints": [ { "expression": "task:group == databases", "type": "memberOf" } ]
La restricción distinctInstance
ubica cada tarea del grupo en una instancia diferente. Se puede especificar con las
siguientes acciones: CreateService, UpdateService y RunTask.
"placementConstraints": [ { "type": "distinctInstance" } ]