

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Restrições da política de filtro no Amazon SNS
<a name="subscription-filter-policy-constraints"></a>

Ao configurar políticas de filtro no Amazon SNS, há algumas regras importantes que você deve ter em mente. Essas regras ajudam a garantir a aplicação efetiva das políticas de filtro, ao mesmo tempo mantendo o desempenho e a compatibilidade do sistema.

## Restrições da política de filtro
<a name="subscription-filter-policy-common-constraints"></a>

Ao configurar políticas de filtro no Amazon SNS, siga estas regras importantes para garantir que elas funcionem de forma eficaz, mantendo o desempenho e a compatibilidade do sistema:
+ **Correspondência de string**: para correspondência de strings na política de filtro, a comparação diferencia maiúsculas de minúsculas.
+ **Correspondência numérica**: para a correspondência numérica, o valor pode variar de -109 a 109 (-1 bilhão a 1 bilhão), com cinco dígitos de precisão após o separador decimal.
+ **Complexidade de política de filtro**: a combinação total de valores em uma política de filtro não deve exceder **150**. Para calcular a combinação total, multiplique o número de valores em cada matriz na política de filtro.
+ **Limitar o número de chaves**: uma política de filtro pode ter no máximo **cinco** chaves.

****Considerações adicionais****
+ O JSON da política de filtro pode conter o seguinte:
  + Strings entre aspas
  + Números
  + As palavras-chave `true`, `false` e `null`, sem aspas
+ Ao usar a API do Amazon SNS, é necessário enviar o JSON da política de filtro como uma string **UTF-8** válida.
+ O tamanho máximo de uma política de filtro é de **256 KB**.
+ Por padrão, você pode ter até **200** políticas de filtro por tópico e **10.000** políticas de filtro por AWS conta.

  Esse limite de política não impedirá a criação de assinaturas de filas do Amazon SQS com a API [https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html). No entanto, falhará quando você anexar a política de filtro à chamada de API `Subscribe` (ou na chamada de 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 essa cota, use [AWS Service Quotas](https://docs.aws.amazon.com/servicequotas/latest/userguide/intro.html).

## Restrições de política para filtragem baseada em atributo
<a name="subscription-filter-policy-attribute-constraints"></a>

A filtragem baseada em atributo é a opção padrão. [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) é definido como `MessageAttributes` na assinatura.
+ O Amazon SNS não aceita uma política de filtro aninhada para filtragem baseada em atributo.
+ O Amazon SNS compara as propriedades de política somente com atributos de mensagens que tenham os seguintes tipos de dados:
  + `String`
  + `String.Array`
**Importante**  
Ao usar filtragem baseada em atributos no Amazon SNS, você deve usar o escape duplo de certos caracteres especiais, especificamente:  
Aspas duplas (")
Barras invertidas ()
A falha no escape duplo desses caracteres fará com que a política de filtro não corresponda aos atributos de uma mensagem publicada, e a notificação não será entregue.

**Considerações adicionais**
+ Transmitir objetos em matrizes não é recomendado, pois pode gerar resultados inesperados devido ao aninhamento, o que não é compatível com a filtragem baseada em atributos. Usar filtragem baseada em carga para políticas aninhadas.
+ `Number` é compatível com valores de atributos numéricos.
+ O Amazon SNS ignora atributos de mensagens com o tipo de dados binário.

**Exemplo de política para complexidade:**

No exemplo de política a seguir, a primeira chave tem **três** operadores de correspondência, a segunda tem **um** operador de correspondência e a terceira tem **dois** operadores de correspondência.

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

A combinação total é calculada como o produto do número de operadores de correspondência para cada chave na política de filtro:

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

## Restrições de política para filtragem baseada em carga útil
<a name="subscription-filter-policy-payload-constraints"></a>

Para mudar da filtragem baseada em atributo (padrão) para a filtragem baseada em carga útil, defina [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DeprovisionIpamPoolCidr.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DeprovisionIpamPoolCidr.html) como `MessageBody` na assinatura.
+ O Amazon SNS aceita uma política de filtro aninhada para filtragem baseada em carga útil.
+ Para uma política aninhada, somente **chaves leaf** são contabilizadas no limite de **cinco** chaves.

**Exemplo de política para limite de chaves:**

No exemplo de política a seguir:
+ Existem duas chaves leaf: `key_c` e `key_e`.
+ `key_c` tem **quatro** operadores de correspondência com um nível aninhado de **três**, e `key_e` tem **três** operadores de correspondência com um nível aninhado de **dois**.

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

A combinação total é calculada como o produto do número de operadores de correspondência e do nível aninhado de cada chave na política de filtro:

```
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
```

## Diretrizes de uso do padrão de caracteres curinga
<a name="filter-policy-constraints-wildcard"></a>

 O Amazon SQS implementa proteções para quando você registra uma política de filtro contendo caracteres curinga, a fim de garantir que políticas de filtro muito complexas não sejam criadas, pois isso afetaria o desempenho da sua aplicação. 

**Estrutura do padrão**

Os campos contêm um ou mais padrões. O exemplo a seguir mostra um campo usando dois padrões:

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

**Regras de complexidade**
+  A complexidade total dos caracteres curinga em todos os campos não deve exceder 100 pontos 
+  Máximo de 3 caracteres curinga por padrão 

**Cálculo da complexidade**
+  Complexidade do campo = `(Sum of pattern points)` × `(Number of patterns)` 
+ Pontos do padrão:

   Curinga único: 1 ponto 

   Vários curingas: 3 pontos cada 

   Indicador de exceção: 1 ponto 

  Veja a seguir um exemplo do cálculo da complexidade:

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