

# Creación de expresiones para definir instancias de contenedor para las tareas de Amazon ECS
<a name="cluster-query-language"></a>

Las consultas de clúster son expresiones que permiten agrupar objetos. Por ejemplo, puede agrupar instancias de contenedor por atributos tales como zona de disponibilidad, tipo de instancia o metadatos personalizados. Para obtener más información, consulte [Atributos de instancias de contenedor de Amazon ECS](task-placement-constraints.md#attributes).

Después de haber definido un grupo de instancias de contenedor, puede personalizar Amazon ECS para que ubique tareas en instancias de contenedor basadas en grupo. Para obtener más información, consulte [Ejecución de una aplicación como tarea de Amazon ECS](standalone-task-create.md) y [Creación de una implementación de actualización continua de Amazon ECS](create-service-console-v2.md). También puede aplicar un filtro de grupo al mostrar una lista de instancias de contenedor.

## Sintaxis de expresiones
<a name="expression-syntax"></a>

Las expresiones tienen la siguiente sintaxis:

```
subject operator [argument]
```

**Asunto**  
El atributo o campo que se va a evaluar.

`agentConnected`  
Seleccione instancias de contenedor por el estado de conexión del agente de contenedor de Amazon ECS. Puede utilizar este filtro para buscar las instancias cuyos agentes de contenedor están desconectados.  
Los operadores válidos son: equals (==), not\$1equals (\$1=), in, not\$1in (\$1in), matches (=\$1), not\$1matches (\$1\$1)

`agentVersion`  
Seleccione instancias de contenedor según la versión del agente de contenedor de Amazon ECS. Puede utilizar este filtro para buscar las instancias que ejecutan versiones obsoletas del agente de contenedor de Amazon ECS.  
Los operadores válidos son: equals (==), not\$1equals (\$1=), greater\$1than (>), greater\$1than\$1equal (>=), less\$1than (<), less\$1than\$1equal (<=)

`attribute:attribute-name`  
Selecciona instancias de contenedor según el atributo. Para obtener más información, consulte [Atributos de instancias de contenedor de Amazon ECS](task-placement-constraints.md#attributes).

`ec2InstanceId`  
Seleccione instancias de contenedor por el ID de las instancias de Amazon EC2.  
Los operadores válidos son: equals (==), not\$1equals (\$1=), in, not\$1in (\$1in), matches (=\$1), not\$1matches (\$1\$1)

`registeredAt`  
Selecciona instancias de contenedor por la fecha de registro de la instancia de contenedor. Puede utilizar este filtro para encontrar las instancias que se acaban de registrar o las instancias que son muy antiguas.  
Los operadores válidos son: equals (==), not\$1equals (\$1=), greater\$1than (>), greater\$1than\$1equal (>=), less\$1than (<), less\$1than\$1equal (<=)  
Los formatos de fecha válidos son: 2018-06-18T22:28:28\$100:00, 2018-06-18T22:28:28Z, 2018-06-18T22:28:28, 2018-06-18

`runningTasksCount`  
Selecciona instancias de contenedor según el número de tareas en ejecución. Puede utilizar este filtro para encontrar las instancias que estén vacías o casi vacías (con pocas tareas en ejecución).  
Los operadores válidos son: equals (==), not\$1equals (\$1=), greater\$1than (>), greater\$1than\$1equal (>=), less\$1than (<), less\$1than\$1equal (<=)

`task:group`  
Selecciona instancias de contenedor según el grupo de tareas. Para obtener más información, consulte [Agrupación de tareas relacionadas con Amazon ECS](task-groups.md).

**Operador**  
El operador de comparación. Se admiten los siguientes operadores.


|  Operador  |  Descripción  | 
| --- | --- | 
|  ==, equals  |  Igualdad de cadena  | 
|  \$1=, not\$1equals  |  Desigualdad de cadena  | 
|  >, greater\$1than  |  Mayor que  | 
|  >=, greater\$1than\$1equal  |  Mayor o igual que  | 
|  <, less\$1than  |  Menor que  | 
|  <=, less\$1than\$1equal  |  Menor o igual que  | 
|  exists  |  El asunto existe  | 
|  \$1exists, not\$1exists  |  El asunto no existe  | 
|  in  |  El valor está en la lista de argumentos  | 
|  \$1in, not\$1in  |  El valor no está en la lista de argumentos  | 
|  =\$1, matches  |  Coincidencia de patrón  | 
|  \$1\$1, not\$1matches  |  No hay coincidencia de patrón  | 

**nota**  
Una expresión única no puede contener paréntesis. Sin embargo, se pueden utilizar paréntesis para especificar la prioridad en las expresiones compuestas.

**Argumento**  
Para muchos operadores, el argumento es un valor literal.

Los operadores `in` y `not_in` esperan una lista de argumentos como argumento. Una lista de argumentos se especifica del siguiente modo:

```
[argument1, argument2, ..., argumentN]
```

Los operadores matches y not\$1matches esperan un argumento que se ajuste a la sintaxis de la expresión regular Java. Para obtener más información, consulte [java.util.regex.Pattern](http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html).

**Expresiones compuestas**

Puede combinar expresiones utilizando los siguientes operadores booleanos:
+ &&, y
+ \$1\$1, o bien
+ \$1, not

Puede especificar prioridad utilizando paréntesis:

```
(expression1 or expression2) and expression3
```

## Expresiones de ejemplo
<a name="expression-examples"></a>

A continuación se incluyen expresiones de ejemplo.

**Ejemplo: igualdad de cadena**  
La expresión siguiente selecciona las instancias con el tipo de instancia especificado.

```
attribute:ecs.instance-type == t2.small
```

**Ejemplo: lista de argumentos**  
La expresión siguiente selecciona las instancias en la zona de disponibilidad us-east-1a o us-east-1b.

```
attribute:ecs.availability-zone in [us-east-1a, us-east-1b]
```

**Ejemplo: expresiones compuestas**  
La siguiente expresión selecciona las instancias G2 que no están en la zona de disponibilidad us-east-1d.

```
attribute:ecs.instance-type =~ g2.* and attribute:ecs.availability-zone != us-east-1d
```

**Ejemplo: afinidad de tareas**  
La expresión siguiente selecciona las instancias que alojan tareas en el grupo `service:production`.

```
task:group == service:production
```

**Ejemplo: antiafinidad de tareas**  
La siguiente expresión selecciona las instancias que no alojan tareas en el grupo de base de datos.

```
not(task:group == database)
```

**Ejemplo: Recuento de tareas en ejecución**  
La expresión siguiente selecciona las instancias que solo están ejecutando una tarea.

```
runningTasksCount == 1
```

**Ejemplo: versión del agente de contenedor de Amazon ECS**  
La expresión siguiente selecciona las instancias que están ejecutando una versión del agente de contenedor anterior a la 1.14.5.

```
agentVersion < 1.14.5
```

**Ejemplo: Hora de registro de las instancias**  
La expresión siguiente selecciona las instancias que se han registrado antes del 13 de febrero de 2018.

```
registeredAt < 2018-02-13
```

**Ejemplo: ID de instancias de Amazon EC2**  
Esta expresión selecciona las instancias con los siguientes ID de instancias de Amazon EC2.

```
ec2InstanceId in ['i-abcd1234', 'i-wxyx7890']
```