

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 las políticas de filtrado de Amazon SNS
<a name="subscription-filter-policy-constraints"></a>

Al configurar políticas de filtrado en Amazon SNS, debe tener en cuenta varias reglas. Estas reglas ayudan a garantizar la aplicación efectiva de las políticas de filtrado y, al mismo tiempo, a mantener el rendimiento y la compatibilidad del sistema.

## Restricciones de política comunes
<a name="subscription-filter-policy-common-constraints"></a>

Al configurar las políticas de filtrado en Amazon SNS, siga estas reglas importantes para garantizar que funcionen de manera eficaz, al mismo tiempo que se mantienen el rendimiento y la compatibilidad del sistema:
+ **Coincidencia de cadenas**: en la búsqueda de coincidencias de cadenas en la política de filtrado se distingue entre mayúsculas y minúsculas.
+ **Coincidencia numérica**: en la coincidencia numérica, el valor puede oscilar de -109 a 109 (de -1000 millones a 1000 millones), con cinco dígitos de precisión después de la coma decimal.
+ **Complejidad de las políticas de filtrado**: la combinación total de valores en una política de filtrado no debe superar los **150**. Para calcular la combinación total, multiplique el número de valores de cada matriz en la política de filtrado.
+ **Limite el número de claves**: una política de filtrado puede tener un máximo de **cinco** claves.

****Consideraciones adicionales****
+ El código JSON de la política de filtro puede contener lo siguiente:
  + Cadenas entre comillas
  + Números
  + Las palabras clave `true`, `false` y `null`, sin comillas
+ Cuando utilice la API de Amazon SNS, debe pasar el código JSON de la política de filtrado como una cadena **UTF-8 **válida.
+ El tamaño máximo de una política de filtrado es **256 KB**.
+ De forma predeterminada, puedes tener hasta **200** políticas de filtrado por tema y **10 000** políticas de filtrado por AWS cuenta.

  Este límite de la política no impedirá que las suscripciones en cola de Amazon SQS se creen con la API [https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html). Sin embargo, se producirá un error al asociar la política de filtro a la llamada a la API `Subscribe` (o a la llamada a la API [https://docs.aws.amazon.com/sns/latest/api/API_SetSubscriptionAttributes.html](https://docs.aws.amazon.com/sns/latest/api/API_SetSubscriptionAttributes.html)).

  Para aumentar esta cuota, puede usar [AWS Service Quotas](https://docs.aws.amazon.com/servicequotas/latest/userguide/intro.html).

## Restricciones de la política para el filtrado basado en atributos
<a name="subscription-filter-policy-attribute-constraints"></a>

El filtrado basado en atributos es la opción predeterminada. [https://docs.aws.amazon.com/sns/latest/api/API_SetSubscriptionAttributes.html#API_SetSubscriptionAttributes_RequestParameters](https://docs.aws.amazon.com/sns/latest/api/API_SetSubscriptionAttributes.html#API_SetSubscriptionAttributes_RequestParameters) está configurado en `MessageAttributes` en la suscripción.
+ Amazon SNS no acepta una política de filtrado anidado para el filtrado basado en atributos.
+ Amazon SNS compara las propiedades de la política solo con los atributos de mensaje que tienen los siguientes tipos de datos:
  + `String`
  + `String.Array`
**importante**  
Al utilizar el filtrado basado en atributos en Amazon SNS, debe evitar dos veces determinados caracteres especiales, en concreto:  
Comillas dobles (")
Barras invertidas ()
Si no se eliminan dos veces estos caracteres, la política de filtrado no coincidirá con los atributos de un mensaje publicado y la notificación no se entregará.

**Consideraciones adicionales**
+ No se recomienda pasar objetos a matrices porque puede producir resultados inesperados debido al anidamiento, que no es compatible con el filtrado basado en atributos. Use el filtrado basado en carga para políticas anidadas.
+ `Number` se admite para valores de atributos numéricos.
+ Amazon SNS ignora los atributos de mensaje con el tipo de datos binario.

**Ejemplo de política de complejidad:**

En el siguiente ejemplo de política, la primera clave tiene **tres** operadores de coincidencia, la segunda tiene **un** operador de coincidencia y la tercera tiene **dos** operadores de coincidencia.

```
{
   "key_a": ["value_one", "value_two", "value_three"],
   "key_b": ["value_one"],
   "key_c": ["value_one", "value_two"]
}
```

La combinación total se calcula como el producto del número de operadores de coincidencia de cada clave en la política de filtrado:

```
3(match operators of key_a) 
x 1(match operators of key_b) 
x 2(match operators of key_c) 
= 6
```

## Restricciones de la política para el filtrado basado en carga
<a name="subscription-filter-policy-payload-constraints"></a>

Para cambiar del filtrado basado en atributos (predeterminado) al filtrado basado en cargas útiles, debe configurar [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DeprovisionIpamPoolCidr.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DeprovisionIpamPoolCidr.html) en `MessageBody` en la suscripción.
+ Amazon SNS acepta una política de filtrado anidado para el filtrado basado en carga.
+ En el caso de una política anidada, solo las **claves de hoja** se tienen en cuenta para el límite de **cinco** claves.

**Ejemplo de política para el límite de claves:**

En el siguiente ejemplo de política:
+ Hay dos teclas de hoja: `key_c` y `key_e`.
+ `key_c` tiene **cuatro** operadores de coincidencia con un nivel anidado de **tres** y `key_e` tiene **tres** operadores de coincidencia con un nivel anidado de **dos**.

```
{
"key_a": {
    "key_b": {
        "key_c": ["value_one", "value_two", "value_three", "value_four"]
        }
    },
"key_d": {
    "key_e": ["value_one", "value_two", "value_three"]
    }
}
```

La combinación total se calcula como el producto del número de operadores de coincidencia y el nivel anidado de cada clave en la política de filtrado:

```
4(match operators of key_c) 
x 3(nested level of key_c) 
x 3(match operators of key_e) 
x 2(nested level of key_e) 
= 72
```

## Pautas de uso del patrón comodín
<a name="filter-policy-constraints-wildcard"></a>

 Amazon SQS implementa protecciones cuando registra una política de filtrado que contiene comodines para garantizar que no se creen políticas de filtro demasiado complejas, ya que esto afectaría al rendimiento de la aplicación. 

**Estructura de patrones**

Los campos contienen uno o más patrones. En el siguiente ejemplo, se muestra un campo con dos patrones:

```
{
    "greeting": [
      {"anything-but": {"prefix": "Hello"}},
      {"wildcard": "H*"}
    ] // 2 patterns
  }
```

**Reglas de complejidad**
+  La complejidad total de los comodines en todos los campos no debe superar los 100 puntos 
+  Máximo de 3 comodines por patrón 

**Cálculo de complejidad**
+  Complejidad de campo = `(Sum of pattern points)` × `(Number of patterns)` 
+ Puntos del patrón:

   Comodín único: 1 punto 

   Varios comodines: 3 puntos cada uno 

   Coincidencia anything-but: 1 punto 

  A continuación se muestra un ejemplo del cálculo de complejidad:

  ```
  {
    "filename": [
      {"wildcard": "*.txt"},     // 1 point
      {"wildcard": "log*"}      // 1 point
    ]                           // Total: (1 + 1) × 2 = 4 points
  }
  ```