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
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
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,falseynull, 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
Subscribe. Sin embargo, se producirá un error al asociar la política de filtro a la llamada a la APISubscribe(o a la llamada a la APISetSubscriptionAttributes).Para aumentar esta cuota, puede usar AWS Service Quotas.
Restricciones de la política para el filtrado basado en atributos
El filtrado basado en atributos es la opción predeterminada. FilterPolicyScope 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.
-
Numberse 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
Para cambiar del filtrado basado en atributos (predeterminado) al filtrado basado en cargas útiles, debe configurar FilterPolicyScope 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_cykey_e. -
key_ctiene cuatro operadores de coincidencia con un nivel anidado de tres ykey_etiene 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
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 }