

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

# Memahami aturan bendera fitur multi-varian
<a name="appconfig-creating-multi-variant-feature-flags-rules"></a>

Saat Anda membuat varian bendera fitur, Anda menentukan aturan untuk itu. Aturan adalah ekspresi yang mengambil nilai konteks sebagai input dan menghasilkan hasil boolean sebagai output. Misalnya, Anda dapat menentukan aturan untuk memilih varian bendera untuk pengguna beta, yang diidentifikasi oleh ID akun mereka, menguji penyegaran antarmuka pengguna. Untuk skenario ini, Anda melakukan hal berikut:

1. Buat profil konfigurasi flag fitur baru yang disebut *UI Refresh*.

1. Buat flag fitur baru yang disebut *ui\$1refresh*.

1. Edit bendera fitur setelah Anda membuatnya untuk menambahkan varian.

1. Buat dan aktifkan varian baru yang disebut *BetaUsers*.

1. Tentukan aturan untuk *BetaUsers*memilih varian jika ID akun dari konteks permintaan ada dalam daftar akun yang IDs disetujui untuk melihat pengalaman beta baru.

1. Konfirmasikan bahwa status varian default disetel ke **Dinonaktifkan**.

**catatan**  
Varian dievaluasi sebagai daftar berurutan berdasarkan urutan yang ditentukan di konsol. Varian di bagian atas daftar dievaluasi terlebih dahulu. Jika tidak ada aturan yang cocok dengan konteks yang disediakan, AWS AppConfig mengembalikan varian Default.

Saat AWS AppConfig memproses permintaan flag fitur, ia membandingkan konteks yang disediakan, yang menyertakan accountID (untuk contoh ini) dengan varian terlebih dahulu. BetaUsers Jika konteksnya cocok dengan aturan untuk BetaUsers, AWS AppConfig mengembalikan data konfigurasi untuk pengalaman beta. Jika konteks tidak menyertakan ID akun atau jika ID akun berakhir dengan apa pun selain 123, AWS AppConfig mengembalikan data konfigurasi untuk aturan Default, yang berarti pengguna melihat pengalaman saat ini dalam produksi.

**catatan**  
Untuk informasi tentang mengambil flag fitur multi-varian, lihat. [Mengambil flag fitur dasar dan multi-varian](appconfig-integration-retrieving-feature-flags.md)

# Mendefinisikan aturan untuk flag fitur multi-varian
<a name="appconfig-creating-multi-variant-feature-flags-rules-operators"></a>

Aturan varian adalah ekspresi yang terdiri dari satu atau lebih operan dan operator. Operan adalah nilai spesifik yang digunakan selama evaluasi aturan. Nilai operan dapat berupa statis, seperti angka literal atau string, atau variabel, seperti nilai yang ditemukan dalam konteks atau hasil ekspresi lain. Operator, seperti “lebih besar dari”, adalah tes atau tindakan yang diterapkan pada operannya yang menghasilkan nilai. Ekspresi aturan varian harus menghasilkan “true” atau “false” agar valid.

**Operan**


****  

| Tipe | Deskripsi | Contoh | 
| --- | --- | --- | 
|  String  |  Urutan karakter UTF-8, terlampir dalam tanda kutip ganda.  |  <pre>"apple", "Ḽơᶉëᶆ ȋṕšᶙṁ"</pre>  | 
|  Bilangan Bulat  |  Nilai integer 64-bit.  |  <pre>-7, 42 </pre>  | 
|  Desimal  |  Nilai floating-point 64-bit IEEE-754.  |  <pre>3.14, 1.234e-5</pre>  | 
|  Stempel waktu  |  Momen tertentu dalam waktu seperti yang dijelaskan oleh [catatan W3C pada format tanggal dan waktu](https://www.w3.org/TR/NOTE-datetime).  |  <pre>2012-03-04T05:06:07-08:00, 2024-01</pre>  | 
|  Boolean  |  Nilai benar atau salah.  |  <pre>true, false</pre>  | 
|  Nilai konteks  |  Nilai parameter dalam bentuk \$1 *key* yang diambil dari konteks selama evaluasi aturan.  |  <pre>$country, $userId</pre>  | 

**Operator perbandingan**


****  

| Operator | Deskripsi | Contoh | 
| --- | --- | --- | 
|  persamaan  |  Menentukan apakah nilai konteks sama dengan nilai yang diberikan.  |  <pre>(eq $state "Virginia")</pre>  | 
|  gt  |  Menentukan apakah nilai konteks lebih besar dari nilai yang diberikan.  |  <pre>(gt $age 65)</pre>  | 
|  gte  |  Menentukan apakah nilai konteks lebih besar dari atau sama dengan nilai yang diberikan.  |  <pre>(gte $age 65)</pre>  | 
|  lt  |  Menentukan apakah nilai konteks kurang dari nilai yang diberikan.  |  <pre>(lt $age 65)</pre>  | 
|  lte  |  Menentukan apakah nilai konteks kurang dari atau sama dengan nilai yang diberikan.  |  <pre>(lte $age 65)</pre>  | 

**Operator logis**


****  

| Operator | Deskripsi | Contoh | 
| --- | --- | --- | 
|  and  |  Menentukan apakah kedua operan benar.  |  <pre>(and <br />    (eq $state "Virginia") <br />    (gt $age 65)<br />)</pre>  | 
|  atau  |  Menentukan apakah setidaknya salah satu operan benar.  |  <pre>(or<br />    (eq $state "Virginia") <br />    (gt $age 65)<br />)</pre>  | 
|  tidak  |  Membalikkan nilai ekspresi.  |  <pre>(not (eq $state "Virginia"))</pre>  | 

**Operator kustom**


****  

| Operator | Deskripsi | Contoh | 
| --- | --- | --- | 
|  mulai\$1dengan  |  Menentukan apakah nilai konteks dimulai dengan awalan yang diberikan.  |  <pre>(begins_with $state "A")</pre>  | 
|  berakhir\$1dengan  |  Menentukan apakah nilai konteks berakhir dengan awalan yang diberikan.  |  <pre>(ends_with $email "amazon.com")</pre>  | 
|  mengandung  |  Menentukan apakah nilai konteks berisi substring yang diberikan.  |  <pre>(contains $promoCode "WIN")</pre>  | 
|  in  |  Menentukan apakah nilai konteks terkandung dalam daftar konstanta.  |  <pre>(in $userId ["123", "456"])</pre>  | 
|  korek api  |  Menentukan apakah nilai konteks cocok dengan pola regex yang diberikan.  |  <pre>(matches in::$greeting pattern::"h.*y")</pre>  | 
|  exists  |  Menentukan apakah ada nilai yang disediakan untuk kunci konteks.  |  <pre>(exists key::"country")</pre>  | 
|  terbelah  |  Mengevaluasi `true` untuk persentase lalu lintas tertentu berdasarkan hash yang konsisten dari nilai konteks yang disediakan. Untuk penjelasan rinci tentang cara `split` kerja, lihat bagian selanjutnya dalam topik ini,[Memahami operator split](appconfig-creating-multi-variant-feature-flags-rules.md#appconfig-creating-multi-variant-feature-flags-rules-operators-split). Perhatikan bahwa `seed` ini adalah properti opsional. Jika Anda tidak menentukan`seed`, hash konsisten *secara lokal*, yang berarti lalu lintas akan dibagi secara konsisten untuk flag itu, tetapi flag lain yang menerima nilai konteks yang sama dapat membagi lalu lintas secara berbeda. Jika `seed` disediakan, setiap nilai unik dijamin untuk membagi lalu lintas secara konsisten di seluruh bendera fitur, profil konfigurasi, dan Akun AWS.  |  <pre>(split pct::10 by::$userId seed::"abc")</pre>  | 

## Memahami operator split
<a name="appconfig-creating-multi-variant-feature-flags-rules-operators-split"></a>

Bagian berikut menjelaskan bagaimana `split` operator berperilaku ketika digunakan dalam skenario yang berbeda. Sebagai pengingat, `split` evaluasi `true` untuk persentase lalu lintas tertentu berdasarkan hash yang konsisten dari nilai konteks yang disediakan. Untuk memahami hal ini dengan lebih baik, pertimbangkan skenario dasar berikut yang menggunakan split dengan dua varian:

```
A: (split by::$uniqueId pct::20)
C: <no rule>
```

Seperti yang diharapkan, memberikan serangkaian `uniqueId` nilai acak menghasilkan distribusi yang kira-kira:

```
A: 20%
C: 80%
```

Jika Anda menambahkan varian ketiga, tetapi gunakan persentase split yang sama seperti:

```
A: (split by::$uniqueId pct::20)
B: (split by::$uniqueId pct::20)
C: <default>
```

Anda berakhir dengan distribusi berikut:

```
A: 20%
B: 0%
C: 80%
```

Distribusi yang berpotensi tidak terduga ini terjadi karena setiap aturan varian dievaluasi secara berurutan dan kecocokan pertama menentukan varian yang dikembalikan. Ketika aturan A dievaluasi, 20% `uniqueId` nilai cocok dengannya, jadi varian pertama dikembalikan. Selanjutnya, aturan B dievaluasi. Namun, semua `uniqueId` nilai yang akan cocok dengan pernyataan split kedua sudah dicocokkan dengan aturan varian A, jadi tidak ada nilai yang cocok B. Varian default dikembalikan sebagai gantinya.

Sekarang perhatikan contoh ketiga.

```
A: (split by::$uniqueId pct::20)
B: (split by::$uniqueId pct::25)
C: <default>
```

Seperti contoh sebelumnya, 20% `uniqueId` nilai pertama cocok dengan aturan A. Untuk aturan varian B, 25% dari semua `uniqueId` nilai akan cocok, tetapi sebagian besar dari aturan yang sebelumnya cocok A. Itu menyisakan 5% dari total untuk varian B, dengan sisanya menerima varian C. Distribusi akan terlihat seperti berikut:

```
A: 20%
B: 5%
C: 75%
```

**Menggunakan `seed` properti**  
Anda dapat menggunakan `seed` properti untuk memastikan lalu lintas dibagi secara konsisten untuk nilai konteks tertentu terlepas dari di mana operator split digunakan. Jika Anda tidak menentukan`seed`, hash konsisten *secara lokal*, yang berarti lalu lintas akan dibagi secara konsisten untuk flag itu, tetapi flag lain yang menerima nilai konteks yang sama dapat membagi lalu lintas secara berbeda. Jika `seed` disediakan, setiap nilai unik dijamin untuk membagi lalu lintas secara konsisten di seluruh bendera fitur, profil konfigurasi, dan Akun AWS.

Biasanya, pelanggan menggunakan `seed` nilai yang sama di seluruh varian dalam bendera saat memisahkan lalu lintas pada properti konteks yang sama. Namun, terkadang masuk akal untuk menggunakan nilai benih yang berbeda. Berikut adalah contoh yang menggunakan benih berbeda untuk aturan A dan B:

```
A: (split by::$uniqueId pct::20 seed::"seed_one")
B: (split by::$uniqueId pct::25 seed::"seed_two")
C: <default>
```

Seperti sebelumnya, 20% dari `uniqueId` nilai yang cocok dengan aturan A. Itu berarti 80% nilai jatuh dan diuji terhadap aturan varian B. Karena benih berbeda, tidak ada korelasi antara nilai yang cocok dengan A dan nilai yang cocok B. Namun, hanya 80% `uniqueId` nilai yang dibagi dengan 25% dari aturan pencocokan angka B dan 75% tidak. Itu berhasil untuk distribusi berikut:

```
A: 20%
B: 20% (25% of what falls through from A, or 25% of 80%) 
C: 60%
```