

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Memfilter batasan kebijakan di Amazon SNS
<a name="subscription-filter-policy-constraints"></a>

Saat Anda menyiapkan kebijakan filter di Amazon SNS, ada beberapa aturan penting yang perlu diingat. Aturan ini membantu memastikan penerapan kebijakan filter yang efektif sambil mempertahankan kinerja dan kompatibilitas sistem.

## Kendala kebijakan umum
<a name="subscription-filter-policy-common-constraints"></a>

Saat mengonfigurasi kebijakan filter di Amazon SNS, ikuti aturan penting ini untuk memastikannya bekerja secara efektif sambil mempertahankan kinerja dan kompatibilitas sistem:
+ **Pencocokan string** - Untuk pencocokan string dalam kebijakan filter, perbandingannya peka huruf besar/kecil.
+ **Pencocokan numerik** — Untuk pencocokan numerik, nilainya dapat berkisar dari -10 9 hingga 10 9 (-1 miliar hingga 1 miliar), dengan lima digit akurasi setelah titik desimal.
+ **Kompleksitas kebijakan filter** — Kombinasi total nilai dalam kebijakan filter tidak boleh melebihi **150**. Untuk menghitung kombinasi total, kalikan jumlah nilai di setiap array dalam kebijakan filter.
+ **Batasi jumlah kunci** — Kebijakan filter dapat memiliki maksimal **lima** kunci.

****Pertimbangan tambahan****
+ JSON kebijakan filter dapat berisi:
  + String terlampir dalam tanda kutip
  + Nomor
  + Kata kunci`true`,`false`, dan`null`, tanpa tanda kutip
+ **Saat menggunakan Amazon SNS API, Anda harus meneruskan JSON kebijakan filter sebagai string UTF-8 yang valid.**
+ Ukuran maksimum kebijakan filter adalah **256 KB**.
+ Secara default, Anda dapat memiliki hingga **200** kebijakan filter per topik, dan **10.000** kebijakan filter per AWS akun.

  Batas kebijakan ini tidak akan menghentikan langganan antrian Amazon SQS dibuat dengan API. [https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html) Namun, itu akan gagal saat Anda melampirkan kebijakan filter dalam panggilan `Subscribe` API (atau panggilan [https://docs.aws.amazon.com/sns/latest/api/API_SetSubscriptionAttributes.html](https://docs.aws.amazon.com/sns/latest/api/API_SetSubscriptionAttributes.html)API).

  Untuk meningkatkan kuota ini, Anda dapat menggunakan [AWS Service](https://docs.aws.amazon.com/servicequotas/latest/userguide/intro.html) Quotas.

## Kendala kebijakan untuk penyaringan berbasis atribut
<a name="subscription-filter-policy-attribute-constraints"></a>

Pemfilteran berbasis atribut adalah opsi default. [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)diatur ke `MessageAttributes` dalam langganan.
+ Amazon SNS tidak menerima kebijakan filter bersarang untuk pemfilteran berbasis atribut.
+ Amazon SNS membandingkan properti kebijakan hanya dengan atribut pesan yang memiliki tipe data berikut:
  + `String`
  + `String.Array`
**penting**  
Saat menggunakan pemfilteran berbasis atribut di Amazon SNS, Anda harus melarikan diri dari karakter khusus tertentu, khususnya:  
Kutipan ganda (“)
Backslashes ()
Kegagalan untuk melarikan diri dari karakter ini akan mengakibatkan kebijakan filter tidak cocok dengan atribut pesan yang dipublikasikan, dan notifikasi tidak akan dikirimkan.

**Pertimbangan tambahan**
+ Melewati objek dalam array tidak disarankan karena dapat menghasilkan hasil yang tidak terduga karena penyaringan, yang tidak didukung oleh pemfilteran berbasis atribut. Gunakan pemfilteran berbasis muatan untuk kebijakan bersarang.
+ `Number`didukung untuk nilai atribut numerik.
+ Amazon SNS mengabaikan atribut pesan dengan tipe data Biner.

**Contoh kebijakan untuk kompleksitas:**

Dalam contoh kebijakan berikut, kunci pertama memiliki **tiga** operator kecocokan, yang kedua memiliki **satu** operator kecocokan, dan yang ketiga memiliki **dua** operator kecocokan.

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

Kombinasi total dihitung sebagai produk dari jumlah operator kecocokan untuk setiap kunci dalam kebijakan filter:

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

## Kendala kebijakan untuk penyaringan berbasis muatan
<a name="subscription-filter-policy-payload-constraints"></a>

Untuk beralih dari pemfilteran berbasis atribut (default) ke pemfilteran berbasis muatan, Anda harus menyetel ke dalam [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DeprovisionIpamPoolCidr.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DeprovisionIpamPoolCidr.html)langganan. `MessageBody`
+ Amazon SNS menerima kebijakan filter bersarang untuk pemfilteran berbasis muatan.
+ Untuk kebijakan bersarang, hanya **kunci daun** yang dihitung menuju batas **lima** kunci.

**Contoh kebijakan untuk batas kunci:**

Dalam contoh kebijakan berikut:
+ Ada dua kunci daun: `key_c` dan`key_e`.
+ `key_c`**memiliki **empat** operator pertandingan dengan level bersarang **tiga**, dan `key_e` memiliki **tiga** operator pertandingan dengan level bersarang dua.**

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

Kombinasi total dihitung sebagai produk dari jumlah operator kecocokan dan level bersarang untuk setiap kunci dalam kebijakan filter:

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

## Pedoman penggunaan pola wildcard
<a name="filter-policy-constraints-wildcard"></a>

 Amazon SQS mengimplementasikan perlindungan saat Anda mendaftarkan kebijakan filter yang berisi wildcard untuk memastikan bahwa kebijakan filter yang terlalu rumit tidak dibuat, karena hal ini akan memengaruhi kinerja aplikasi Anda. 

**Struktur pola**

Bidang berisi satu atau lebih pola. Contoh berikut menunjukkan bidang menggunakan dua pola:

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

**Aturan kompleksitas**
+  Kompleksitas wildcard total di semua bidang tidak boleh melebihi 100 poin 
+  Maksimal 3 wildcard per pola 

**Perhitungan kompleksitas**
+  Kompleksitas bidang = `(Sum of pattern points)` × `(Number of patterns)` 
+ Poin pola:

   Wildcard tunggal: 1 poin 

   Beberapa wildcard: masing-masing 3 poin 

   Apa saja-tapi: 1 poin 

  Berikut ini adalah contoh perhitungan kompleksitas:

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