

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

# Lakukan pengujian ketahanan dengan AWS Fault Injection Service
<a name="kinesis-fis"></a>

AWS Fault Injection Service adalah layanan yang dikelola sepenuhnya yang membantu Anda melakukan eksperimen injeksi kesalahan pada AWS beban kerja Anda. AWS FIS integrasi dengan Amazon Kinesis Data Streams memungkinkan Anda menguji ketahanan aplikasi terhadap kesalahan API Amazon Kinesis Data Streams yang umum di lingkungan terkontrol. Kemampuan ini memungkinkan Anda untuk memvalidasi penanganan kesalahan, mencoba kembali logika, dan memantau sistem sebelum mengalami kegagalan. Untuk informasi lebih lanjut, lihat [Apa itu AWS Fault Injection Service?](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html) .

**Tindakan**
+ Kesalahan internal API: Ini menyuntikkan kesalahan internal ke dalam permintaan yang dibuat oleh peran IAM target. Respons spesifik tergantung pada setiap layanan dan API. Tindakan `aws:fis:inject-api-internal-error` menciptakan `InternalFailure` kesalahan (HTTP 500).
+ Kesalahan throttle API: Ini menyuntikkan kesalahan internal ke dalam permintaan yang dibuat oleh peran IAM target. Respons spesifik tergantung pada setiap layanan dan API. Tindakan `aws:fis:inject-api-throttle-error` menciptakan `ThrottlingException` kesalahan (HTTP 400).
+ Kesalahan API tidak tersedia: Ini menyuntikkan kesalahan internal ke dalam permintaan yang dibuat oleh peran IAM target. Respons spesifik tergantung pada setiap layanan dan API. Tindakan `aws:fis:inject-api-unavailable-error` menciptakan `ServiceUnavailable` kesalahan (HTTP 503).
+ Pengecualian throughput yang disediakan API: Ini menyuntikkan kesalahan internal ke dalam permintaan yang dibuat oleh peran IAM target. Respons spesifik tergantung pada setiap layanan dan API. Tindakan `aws:kinesis:inject-api-provisioned-throughput-exception` menciptakan `ProvisionedThroughputExceededException` kesalahan (HTTP 400).
+ Pengecualian iterator kedaluwarsa API: Ini menyuntikkan kesalahan internal ke dalam permintaan yang dibuat oleh peran IAM target. Respons spesifik tergantung pada setiap layanan dan API. Tindakan `aws:kinesis:inject-api-expired-iterator-exception` menciptakan `ExpiredIteratorException` kesalahan (HTTP 400). 

Untuk informasi selengkapnya, lihat [tindakan Amazon Kinesis Data Streams](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#aws-kinesis-actions).

**Pertimbangan-pertimbangan**
+ Anda dapat menggunakan tindakan di atas dengan penawaran yang disediakan dan sesuai permintaan untuk Amazon Kinesis Data Streams.
+ Streaming Anda dilanjutkan setelah percobaan selesai berdasarkan durasi yang dipilih. Anda juga dapat menghentikan eksperimen yang sedang berjalan sebelum selesai. Atau, Anda dapat menentukan kondisi berhenti untuk menghentikan eksperimen berdasarkan alarm yang menentukan kesehatan aplikasi di Amazon CloudWatch Application Insights.
+ Anda dapat menguji hingga 280 aliran.

Untuk informasi lebih lanjut tentang dukungan regional, lihat [AWS Fault Injection Service titik akhir dan kuota](https://docs.aws.amazon.com/general/latest/gr/fis.html).

# Kesalahan pengecualian throughput yang disediakan
<a name="kinesis-fis-provisioned-throughput"></a>

Throughput yang disediakan melebihi kesalahan pengecualian (HTTP 400) terjadi ketika tingkat permintaan untuk aliran Kinesis melampaui batas throughput dari satu atau lebih pecahan. Setiap pecahan memiliki batas kapasitas baca, dan tulis tertentu, dan melebihi batas tersebut memicu pengecualian ini. Skenario yang mengarah ke pengecualian ini meliputi: lonjakan mendadak dalam konsumsi atau konsumsi data, kapasitas pecahan yang tidak mencukupi untuk volume data yang sedang diproses, atau distribusi kunci partisi yang tidak merata.

**Rekomendasi untuk menangani pengecualian**
+ Menerapkan mekanisme back-off dan coba ulang eksponensial.
+ Tingkatkan jumlah pecahan untuk mengakomodasi throughput yang lebih tinggi.
+ Pastikan bahwa ada distribusi kunci partisi yang tepat.
+ Pantau metrik aliran.

Selain itu, menggunakan mode kapasitas Kinesis sesuai permintaan membantu menyesuaikan beban kerja secara otomatis, dan meminimalkan terjadinya pengecualian ini. Untuk informasi selengkapnya, lihat [Apa itu AWS Fault Injection Service?](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html)

**catatan**  
Masalah distribusi yang tidak tepat berada di luar kemampuan mode on-demand dari penskalaan otomatis.

**Untuk melakukan eksperimen dasar**

1. Gunakan metrik dasar: catat pola throughput normal sebelum pengujian.

1. Buat eksperimen: gunakan `aws:kinesis:inject-api-provisioned-throughput-exception` tindakan.

1. Konfigurasikan intensitas: mulai dengan pelambatan permintaan 25%.

1. Pantau tanggapan: verifikasi logika coba ulang dengan back-off eksponensial.

1. Validasi penskalaan: konfirmasikan bahwa auto-scaling memicu aktivasi.

1. Periksa alarm: pastikan `CloudWatch` alarm berjalan seperti yang diharapkan.

Aplikasi harus menerapkan strategi, monitor, dan `ReadProvisionedThroughputExceeded` metrik back-off yang tepat`WriteProvisionedThroughputExceeded`, dan memicu penskalaan shard bila sesuai.

**Detail tindakan**
+ **Jenis Sumber Daya**: IAM Peran ARN
+ **Operasi Target**:`PutRecord`,`PutRecords`, `GetRecords`
+ ****Kode Kesalahan****: `ProvisionedThroughputExceededException` (HTTP 400)
+ ****Deskripsi****: mensimulasikan skenario di mana tingkat permintaan melebihi batas kapasitas pecahan, menguji pelambatan aplikasi, dan respons penskalaan.

**Parameter**
+ **IAM Role ARN**: peran yang digunakan aplikasi Anda untuk operasi Kinesis Data Streams.
+ **Operasi**: operasi target:`PutRecord`,`PutRecords`,`GetRecords`.
+ **Daftar Sumber Daya**: nama aliran tertentu atau pengidentifikasi pecahan.
+ **Durasi**: durasi percobaan, yaitu durasi dari satu menit hingga 12 jam. Di AWS FIS API, nilainya adalah string dalam format ISO 8601. Misalnya, PT1 M mewakili satu menit. Di AWS FIS konsol, Anda memasukkan jumlah detik, menit, atau jam.
+ **Intensitas**: persentase permintaan untuk throttle.

**Izin yang diperlukan**
+ `kinesis:InjectApiError`

Contoh template percobaan

 Contoh berikut menunjukkan pengecualian throughput yang disediakan untuk semua permintaan hingga 5 aliran Data Kinesis dengan tag yang ditentukan. AWS FIS memilih aliran untuk mempengaruhi secara acak. Setelah 5 menit kesalahan dihapus.

```
{
    "description": "Kinesis stream experiment",
    "targets": {
        "KinesisStreams-Target-1": {
            "resourceType": "aws:kinesis:stream",
            "resourceTags": {
                   "tag-key": "tag-value"
            },
            "selectionMode": "COUNT(5)"
        }
    },
    "actions": {
         "kinesis": {
              "actionId": "aws:kinesis:stream-provisioned-throughput-exception",
              "description": "my-stream",
              "parameters": {
                   "duration": "PT5M",
                   "percentage": "100",
                   "service": "kinesis"
              },
              "targets": {
                    "KinesisStreams": "KinesisStreams-Target-1"
              }
         }
   },
   "stopConditions": [
         {
              "source": "none"
         }
   ],
   "roleArn": "arn:aws:iam::111122223333:role/role-name",
   "tags": {},
   "experimentOptions": {
       "accountTargeting": "single-account",
       "emptyTargetResolutionMode": "fail"
   }    
}
```

Contoh izin peran percobaan

Izin berikut memungkinkan Anda menjalankan `aws:kinesis:stream-provisioned-throughput-exception` dan `aws:kinesis:stream-expired-iterator-exception` tindakan pada aliran tertentu yang memengaruhi 50% permintaan.

# Kesalahan pengecualian iterator kedaluwarsa
<a name="kinesis-fis-expired-iterator"></a>

 Kesalahan pengecualian iterator kedaluwarsa (HTTP 400) terjadi ketika iterator shard kedaluwarsa, dan tidak lagi digunakan untuk mengambil catatan aliran saat memanggil. `GetRecords` Ini terjadi ketika ada penundaan antara operasi baca, yang disebabkan oleh tugas pemrosesan data yang berjalan lama, masalah jaringan, atau waktu henti aplikasi. 

**catatan**  
Sebuah iterator shard berlaku selama 5 menit setelah waktu dikeluarkan.

**Rekomendasi untuk menangani pengecualian**
+ Menyegarkan iterator pecahan sebelum kedaluwarsa.
+ Memasukkan penanganan kesalahan untuk mendapatkan iterator baru.
+ Memanfaatkan Kinesis Kinesis Client Library (KCL) yang secara otomatis mengelola kedaluwarsa iterator shard.

Untuk informasi lebih lanjut, lihat [Apa itu AWS Fault Injection Service?](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html)

**Untuk melakukan eksperimen dasar**

1. Buat templat eksperimen: gunakan AWS FIS konsol. 

1. Pilih tindakan: gunakan `aws:kinesis:inject-api-expired-iterator-exception` tindakan.

1. Konfigurasikan target: tentukan peran IAM dan Streamsoperasi Data Kinesis. 

1. Atur durasinya: mulai dengan 5-10 menit untuk pengujian awal. 

1. Tambahkan kondisi berhenti: [kondisi berhenti untuk AWS FIS](https://docs.aws.amazon.com/fis/latest/userguide/stop-conditions.html).

1. Jalankan eksperimen: pantau perilaku aplikasi.

**Detail tindakan**
+ **Jenis Sumber Daya**: IAM Peran ARN
+ **Operasi Target**: `GetRecords`
+ ****Kode Kesalahan****: `ExpiredIteratorException` (HTTP 400)
+ ****Deskripsi****: iterator yang disediakan melebihi usia maksimum yang diizinkan, mensimulasikan skenario di mana pemrosesan rekaman terlalu lambat atau logika pos pemeriksaan gagal.

**Parameter**
+ **IAM Role ARN**: peran yang digunakan aplikasi Anda untuk operasi Kinesis Data Streams.
+ **Operasi**: operasi target: `GetRecords`
+ **Daftar Sumber Daya**: nama aliran tertentu atau ARNs.
+ **Durasi**: durasi percobaan. Ini dapat dikonfigurasi. 
+ **Intensitas**: persentase permintaan untuk throttle.

**Izin yang diperlukan**
+ `kinesis:InjectApiError`