

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

# Gunakan injeksi kesalahan dengan beban kerja Amazon ECS dan Fargate
<a name="fault-injection"></a>

Pelanggan dapat menggunakan injeksi kesalahan dengan Amazon ECS di Amazon EC2 dan Fargate untuk menguji bagaimana aplikasi mereka merespons skenario gangguan tertentu. Pengujian ini memberikan informasi yang dapat Anda gunakan untuk mengoptimalkan kinerja dan ketahanan aplikasi Anda.

Saat injeksi kesalahan diaktifkan, agen penampung Amazon ECS memungkinkan akses tugas ke titik akhir injeksi kesalahan baru. Anda perlu ikut serta untuk menggunakan injeksi kesalahan dengan menyetel nilai parameter definisi `enableFaultInjection` tugas ke`true`. Nilai default-nya adalah `false`. 

```
{
    ...
   "enableFaultInjection": true
}
```

**catatan**  
Injeksi kesalahan hanya berfungsi dengan tugas menggunakan mode `host` jaringan `awsvpc` atau.  
Injeksi kesalahan tidak tersedia di Windows.

Untuk informasi tentang cara mengaktifkan injeksi kesalahan di Konsol Manajemen AWS, lihat [Membuat definisi tugas Amazon ECS menggunakan konsol](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-task-definition.html).

Anda harus mengaktifkan fitur untuk pengujian di file AWS Fault Injection Service. Untuk informasi selengkapnya, lihat [Menggunakan tindakan AWS FIS aws:ecs:task](https://docs.aws.amazon.com/fis/latest/userguide/ecs-task-actions.html).

**catatan**  
Jika Anda tidak menggunakan Amazon ECS yang dioptimalkan AMIs, atau memiliki AMI khusus, instal dependensi berikut:  
`tc`
`sch_netem`modul kernel

# Titik akhir injeksi kesalahan Amazon ECS
<a name="fault-injection-endpoints"></a>

Agen penampung Amazon ECS secara otomatis menyuntikkan variabel `ECS_AGENT_URI` lingkungan ke dalam wadah tugas Amazon ECS untuk menyediakan metode untuk berinteraksi dengan titik akhir API agen penampung. Setiap titik akhir mencakup`/start`,`/stop`, dan titik `/status` akhir. Titik akhir hanya menerima permintaan dari tugas yang telah mengaktifkan injeksi kesalahan, dan setiap titik akhir memiliki batas laju **1** permintaan per **5 detik per kontainer**. Melebihi batas ini menghasilkan kesalahan.

**catatan**  
Agen Amazon ECS `version 1.88.0+` diperlukan untuk menggunakan titik akhir injeksi kesalahan.

Tiga titik akhir untuk digunakan dengan injeksi kesalahan adalah:
+ [Titik akhir port blackhole jaringan](#fis-endpoint-blackhole-ports)
+ [Titik akhir kehilangan paket jaringan](#fis-endpoint-packet-loss)
+ [Titik akhir latensi jaringan](#fis-endpoint-latency)

Permintaan yang berhasil menghasilkan kode respons `200` dengan pesan `running` saat Anda memanggil `/start` titik akhir, `stopped` untuk titik `/stop` akhir, dan `running` atau `not-running` untuk titik akhir. `/status`

```
{
    "Status": <string>
}
```

Permintaan yang gagal mengembalikan salah satu kode kesalahan berikut:
+ `400`- Permintaan buruk
+ `409`- Permintaan injeksi kesalahan bertentangan dengan kesalahan berjalan lainnya
+ `429`- Permintaan dibatasi
+ `500`- Server memiliki kesalahan yang tidak terduga

```
{
	"Error":  <string message> 
}
```

**catatan**  
Salah satu kesalahan latensi jaringan atau satu kesalahan kehilangan paket jaringan dapat disuntikkan pada suatu waktu. Mencoba menyuntikkan lebih dari satu mengakibatkan permintaan ditolak.

## Titik akhir port blackhole jaringan
<a name="fis-endpoint-blackhole-ports"></a>

`{ECS_AGENT_URI}/fault/v1/network-blackhole-port`Titik akhir menurunkan lalu lintas masuk atau keluar untuk port dan protokol tertentu dalam namespace jaringan tugas dan kompatibel dengan dua mode:
+ **awsvpc** - perubahan diterapkan ke namespace jaringan tugas
+ **host** - perubahan diterapkan ke instance kontainer namespace jaringan default

### \$1ECS\$1AGENT\$1URI\$1/fault/v1/network-blackhole-port/start
<a name="fis-endpoint-blackhole-ports-start"></a>

Titik akhir ini memulai injeksi kesalahan port blackhole jaringan dan memiliki parameter berikut:

**Port**  
Port yang ditentukan untuk digunakan untuk injeksi kesalahan port lubang hitam.

Jenis: Integer

Wajib: Ya

**Protokol**  
Protokol yang digunakan untuk injeksi kesalahan port lubang hitam.

Tipe: String

Nilai yang valid: `tcp | udp`

Wajib: Ya

**TrafficType**  
Jenis lalu lintas yang digunakan oleh injeksi kesalahan.

Tipe: String

Nilai yang valid: `ingress | egress`

Wajib: Ya

**SourcesToFilter**  
Sebuah array JSON IPv4 atau IPv6 alamat atau blok CIDR yang dilindungi dari kesalahan.

Tipe: Array string

Wajib: Tidak

Berikut ini adalah contoh permintaan untuk menggunakan `start` titik akhir (ganti *red* nilai dengan milik Anda sendiri):

```
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-blackhole-port/start

Http method:POST

Request payload: 
{
    "Port": 1234,
    "Protocol": "tcp|udp",
    "TrafficType": "ingress|egress"
    "SourcesToFilter": ["${IP1}", "${IP2}", ...],
}
```

### \$1ECS\$1AGENT\$1URI\$1/fault/v1/network-blackhole-port/stop
<a name="fis-endpoint-blackhole-ports-stop"></a>

Titik akhir ini menghentikan kesalahan yang ditentukan dalam permintaan. Titik akhir ini memiliki parameter berikut:

**Port**  
Port terkena dampak kesalahan yang harus dihentikan.

Jenis: Integer

Wajib: Ya

**Protokol**  
Protokol yang digunakan untuk menghentikan kesalahan.

Tipe: String

Nilai yang valid: `tcp | udp`

Wajib: Ya

**TrafficType**  
Jenis lalu lintas yang digunakan oleh injeksi kesalahan.

Tipe: String

Nilai yang valid: `ingress | egress`

Wajib: Ya

Berikut ini adalah contoh permintaan untuk menggunakan `stop` titik akhir (ganti *red* nilai dengan milik Anda sendiri):

```
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-blackhole-port/stop

Http method: POST

Request payload: 
{
    "Port": 1234,
    "Protocol": "tcp|udp",
    "TrafficType": "ingress|egress", 
}
```

### \$1ECS\$1AGENT\$1URI\$1/fault/v1/network-blackhole-port/status
<a name="fis-endpoint-blackhole-ports-status"></a>

Endpoint ini digunakan untuk memeriksa status injeksi kesalahan. Titik akhir ini memiliki parameter berikut:

**Port**  
Port yang terkena dampak untuk memeriksa status kesalahan.

Jenis: Integer

Wajib: Ya

**Protokol**  
Protokol yang digunakan saat memeriksa status kesalahan.

Tipe: String

Nilai yang valid: `tcp | udp`

Wajib: Ya

**TrafficType**  
Jenis lalu lintas yang digunakan oleh injeksi kesalahan.

Tipe: String

Nilai yang valid: `ingress | egress`

Wajib: Ya

Berikut ini adalah contoh permintaan untuk menggunakan `status` titik akhir (ganti *red* nilai dengan milik Anda sendiri):

```
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-blackhole-port/status

Http method: POST

Request payload: 
{
   "Port": 1234,
   "Protocol": "tcp|udp",
   "TrafficType": "ingress|egress",
}
```

## Titik akhir latensi jaringan
<a name="fis-endpoint-latency"></a>

`{ECS_AGENT_URI}/fault/v1/network-latency`Titik akhir menambahkan penundaan dan jitter ke antarmuka jaringan tugas untuk lalu lintas ke sumber tertentu. Titik akhir kompatibel dengan dua mode:
+ **awsvpc** - perubahan diterapkan ke antarmuka jaringan tugas
+ **host** - perubahan diterapkan ke antarmuka jaringan default

### \$1ECS\$1AGENT\$1URI\$1/fault/v1/network-latency/start
<a name="fis-endpoint-latency-start"></a>

`/start`Titik akhir ini memulai injeksi kesalahan latensi jaringan dan memiliki parameter berikut:

**DelayMilliseconds**  
Jumlah milidetik penundaan untuk ditambahkan ke antarmuka jaringan yang akan digunakan untuk injeksi kesalahan.

Jenis: Integer

Wajib: Ya

**JitterMilliseconds**  
Jumlah milidetik jitter untuk ditambahkan ke antarmuka jaringan yang akan digunakan untuk injeksi kesalahan.

Jenis: Integer

Wajib: Ya

**Sumber**  
Sebuah array JSON IPv4 atau IPv6 alamat atau blok CIDR yang tujuan untuk digunakan dengan injeksi kesalahan.

Tipe: Array string

Wajib: Ya

**SourcesToFilter**  
Sebuah array JSON IPv4 atau IPv6 alamat atau blok CIDR yang dilindungi dari kesalahan. `SourcesToFilter`mengambil prioritas di atas`Sources`.

Tipe: Array string

Wajib: Tidak

Berikut ini adalah contoh permintaan untuk menggunakan `/start` titik akhir (ganti *red* nilai dengan milik Anda sendiri):

```
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-latency/start

Http method: POST

Request payload: 
{
    "DelayMilliseconds": 123,
    "JitterMilliseconds": 123,
    "Sources": ["${IP1}", "${IP2}", ...],
    "SourcesToFilter": ["${IP1}", "${IP2}", ...],
}
```

### \$1ECS\$1AGENT\$1URI\$1/fault/v1/network-latency/stop and /status
<a name="fis-endpoint-latency-stop-status"></a>

`{ECS_AGENT_URI}/fault/v1/network-latency/stop`Titik akhir menghentikan kesalahan, dan `{ECS_AGENT_URI}/fault/v1/network-latency/status` memeriksa status kesalahan.

Berikut ini adalah dua contoh permintaan untuk menggunakan `/stop` dan `/status` endpoint. Keduanya menggunakan `POST HTTP` metode ini.

```
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-latency/stop
```

```
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-latency/status
```

## Titik akhir kehilangan paket jaringan
<a name="fis-endpoint-packet-loss"></a>

`{ECS_AGENT_URI}/fault/v1/network-packet-loss`Endpoint menambahkan packet loss ke antarmuka jaringan yang diberikan. Endpoint ini kompatibel dengan dua mode:
+ **awsvpc** - perubahan diterapkan ke antarmuka jaringan tugas
+ **host** - perubahan diterapkan ke antarmuka jaringan default

### \$1ECS\$1AGENT\$1URI\$1/fault/v1/network-packet-loss/start
<a name="fis-endpoint-packet-loss-start"></a>

`/start`Titik akhir ini memulai injeksi kesalahan kehilangan paket jaringan dan memiliki parameter berikut:

**LossPercent**  
Persentase kehilangan paket

Jenis: Integer

Wajib: Ya

**Sumber**  
Sebuah array JSON IPv4 atau IPv6 alamat atau blok CIDR untuk digunakan untuk tes injeksi kesalahan.

Tipe: Array string

Wajib: Ya

**SourcesToFilter**  
Sebuah array JSON IPv4 atau IPv6 alamat atau blok CIDR yang dilindungi dari kesalahan. `SourcesToFilter`mengambil prioritas di atas`Sources`.

Tipe: Array string

Wajib: Tidak

Berikut ini adalah contoh permintaan untuk menggunakan `start` titik akhir (ganti *red* nilai dengan milik Anda sendiri):

```
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-packet-loss/start

Http method: POST

{
    "LossPercent": 6,  
    "Sources": ["${IP1}", "${IP2}", ...],
    "SourcesToFilter": ["${IP1}", "${IP2}", ...],
}
```

### \$1ECS\$1AGENT\$1URI\$1/fault/v1/network-packet-loss/stop and /status
<a name="fis-endpoint-packet-loss-stop-status"></a>

`{ECS_AGENT_URI}/fault/v1/network-packet-loss/stop`Titik akhir menghentikan kesalahan, dan `{ECS_AGENT_URI}/fault/v1/network-packet-loss/status` memeriksa status kesalahan. Hanya satu dari setiap jenis kesalahan yang didukung pada satu waktu.

Berikut ini adalah dua contoh permintaan untuk menggunakan `/stop` dan `/status` endpoint. Keduanya menggunakan `POST HTTP` metode ini.

```
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-packet-loss/stop
```

```
Endpoint: ${{ECS_AGENT_URI}/fault/v1/network-packet-loss/status
```