

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Filtra i vincoli delle policy in Amazon SNS
<a name="subscription-filter-policy-constraints"></a>

Quando configuri le politiche di filtro in Amazon SNS, ci sono alcune regole importanti da tenere a mente. Queste regole aiutano a garantire l'applicazione efficace delle politiche di filtro mantenendo al contempo le prestazioni e la compatibilità del sistema.

## Vincoli comuni delle policy
<a name="subscription-filter-policy-common-constraints"></a>

Quando configuri le politiche di filtro in Amazon SNS, segui queste importanti regole per assicurarti che funzionino in modo efficace mantenendo le prestazioni e la compatibilità del sistema:
+ **Corrispondenza delle stringhe**: per la corrispondenza delle stringhe nella politica di filtro, il confronto fa distinzione tra maiuscole e minuscole.
+ **Corrispondenza numerica**: per la corrispondenza numerica, il valore può variare da -10 9 a 10 9 (da -1 miliardo a 1 miliardo), con una precisione di cinque cifre dopo la virgola decimale.
+ **Complessità della politica di filtro****: la combinazione totale di valori in una politica di filtro non deve superare 150.** Per calcolare la combinazione totale, moltiplica il numero di valori in ogni array nella politica di filtro.
+ **Limita il numero di chiavi**: una politica di filtro può avere un massimo di **cinque** chiavi.

****Considerazioni aggiuntive****
+ Il JSON della policy di filtro può contenere quanto segue:
  + Stringhe tra virgolette
  + Numeri
  + Le parole chiave `true`, `false` e `null` senza virgolette
+ **Quando usi l'API Amazon SNS, devi passare il codice JSON della policy di filtro come stringa UTF-8 valida.**
+ **La dimensione massima di una policy di filtro è 256 KB.**
+ Per impostazione predefinita, puoi avere fino a **200** politiche di filtro per argomento e **10.000** politiche di filtro per AWS account.

  Questo limite di policy non impedirà la creazione di abbonamenti alla coda Amazon SQS con l'API. [https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html) Tuttavia, l'operazione avrebbe esito negativo quando si collega la policy di filtro alla chiamata API `Subscribe` (o alla chiamata API [https://docs.aws.amazon.com/sns/latest/api/API_SetSubscriptionAttributes.html](https://docs.aws.amazon.com/sns/latest/api/API_SetSubscriptionAttributes.html)).

  Per richiedere un aumento della quota, è possibile utilizzare [AWS Service Quotas](https://docs.aws.amazon.com/servicequotas/latest/userguide/intro.html).

## Vincoli delle policy per il filtro basato sugli attributi
<a name="subscription-filter-policy-attribute-constraints"></a>

Il filtro basato sugli attributi è l'opzione predefinita. [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) è impostato su `MessageAttributes` nella sottoscrizione.
+ Amazon SNS non accetta una policy di filtri annidati per il filtro basato su attributi.
+ Amazon SNS confronta le proprietà della policy solo con gli attributi di messaggio che hanno i seguenti tipi di dati:
  + `String`
  + `String.Array`
**Importante**  
Quando si utilizza il filtro basato sugli attributi in Amazon SNS, è necessario eseguire il doppio escape di determinati caratteri speciali, in particolare:  
Virgolette doppie («)
Barre rovesciate ()
Se non si esegue il double escape di questi caratteri, la politica di filtro non corrisponderà agli attributi di un messaggio pubblicato e la notifica non verrà recapitata.

**Considerazioni aggiuntive**
+ Il passaggio di oggetti negli array non è consigliato perché potrebbe produrre risultati imprevisti a causa della nidificazione, che non è supportata dal filtraggio basato sugli attributi. Utilizzo del filtraggio basato sul payload per le policy nidificate.
+ `Number`è supportato per i valori degli attributi numerici.
+ Amazon SNS ignora gli attributi dei messaggi con il tipo di dati binario.

**Esempio di politica di complessità:**

Nel seguente esempio di policy, la prima chiave ha **tre** operatori di corrispondenza, la seconda ha **un** operatore di corrispondenza e la terza ha **due** operatori di corrispondenza.

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

La combinazione totale viene calcolata come il prodotto del numero di operatori di corrispondenza per ogni chiave nella politica di filtro:

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

## Vincoli delle policy per il filtro basato su payload
<a name="subscription-filter-policy-payload-constraints"></a>

Per passare dal filtro basato sugli attributi (predefinito) al filtro basato sul payload, è necessario impostare [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DeprovisionIpamPoolCidr.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DeprovisionIpamPoolCidr.html) su `MessageBody` nella sottoscrizione.
+ Amazon SNS accetta una policy di filtri annidati per il filtro basato su payload.
+ Per una politica annidata, solo **le chiavi a foglia** vengono conteggiate per il limite di **cinque** chiavi.

**Esempio di politica per il limite delle chiavi:**

Nel seguente esempio di politica:
+ Ci sono due tasti a forma di foglia: `key_c` e`key_e`.
+ `key_c`**ha **quattro** operatori di corrispondenza con un livello nidificato di **tre** e `key_e` dispone di **tre** operatori di corrispondenza con un livello nidificato di due.**

```
{
"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 combinazione totale viene calcolata come il prodotto del numero di operatori di corrispondenza e del livello annidato per ciascuna chiave nella politica di 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
```

## Linee guida per l'utilizzo del pattern Wildcard
<a name="filter-policy-constraints-wildcard"></a>

 Amazon SQS implementa protezioni quando registri una policy di filtro contenente wildcard per garantire che non vengano create policy di filtro troppo complesse, poiché ciò influirebbe sulle prestazioni dell'applicazione. 

**Struttura del pattern**

I campi contengono uno o più motivi. L'esempio seguente mostra un campo che utilizza due modelli:

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

**Regole di complessità**
+  La complessità totale dei caratteri jolly in tutti i campi non deve superare i 100 punti 
+  Massimo 3 caratteri jolly per pattern 

**Calcolo della complessità**
+  Complessità del campo = `(Sum of pattern points)` × `(Number of patterns)` 
+ Punti del modello:

   Wild card singola: 1 punto 

   jolly multipli: 3 punti ciascuno 

   Tutto tranne: 1 punto 

  Di seguito è riportato un esempio di calcolo della complessità:

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