

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

# Tutorial: Uji interupsi Instans Spot menggunakan FIS AWS
<a name="fis-tutorial-spot-interruptions"></a>

Instans Spot menggunakan EC2 kapasitas cadangan yang tersedia, hingga diskon 90% dibandingkan dengan harga On-Demand. Namun, Amazon EC2 dapat mengganggu Instans Spot Anda saat membutuhkan kapasitas kembali. Saat menggunakan Instans Spot, Anda harus siap menghadapi potensi gangguan. Untuk informasi selengkapnya, lihat [Interupsi Instans Spot](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html) di * EC2 Panduan Pengguna Amazon*.

Anda dapat menggunakan AWS AWS Fault Injection Service (FIS) untuk menguji bagaimana aplikasi Anda menangani interupsi Instans Spot. Gunakan tutorial ini untuk membuat template eksperimen yang menggunakan `aws:ec2:send-spot-instance-interruptions` tindakan AWS FIS untuk mengganggu salah satu Instans Spot Anda.

Atau, untuk memulai eksperimen menggunakan EC2 konsol Amazon, lihat [Memulai interupsi Instans Spot di Panduan](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/initiate-a-spot-instance-interruption.html) Pengguna *Amazon EC2 *.

## Prasyarat
<a name="spot-interruptions-prerequisites"></a>

Sebelum Anda dapat menggunakan AWS FIS untuk menginterupsi Instance Spot, selesaikan prasyarat berikut.

**1. Membuat peran IAM**  
Buat peran dan lampirkan kebijakan yang memungkinkan AWS FIS untuk melakukan `aws:ec2:send-spot-instance-interruptions` tindakan atas nama Anda. Untuk informasi selengkapnya, lihat [Peran IAM untuk eksperimen AWS FIS](getting-started-iam-service-role.md).

**2. Verifikasi akses ke AWS FIS**  
Pastikan Anda memiliki akses ke AWS FIS. Untuk informasi selengkapnya, lihat [contoh kebijakan AWS FIS](security_iam_id-based-policy-examples.md).

**3. (Opsional) Buat permintaan Instans Spot**  
Jika Anda ingin Instance Spot baru digunakan untuk eksperimen ini, gunakan perintah [run-instance](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) untuk meminta Instance Spot. Defaultnya adalah menghentikan Instans Spot yang terputus. Jika Anda menyetel perilaku interupsi`stop`, Anda juga harus menyetel jenisnya. `persistent` Untuk tutorial ini, jangan atur perilaku interupsi`hibernate`, karena proses hibernasi segera dimulai.

```
aws ec2 run-instances \
    --image-id ami-0ab193018fEXAMPLE \
    --instance-type "t2.micro" \
    --count 1 \
    --subnet-id subnet-1234567890abcdef0 \
    --security-group-ids sg-111222333444aaab \
    --instance-market-options file://spot-options.json \
    --query Instances[*].InstanceId
```

Berikut ini adalah contoh file `spot-options.json`.

```
{
    "MarketType": "spot",
    "SpotOptions": { 
        "SpotInstanceType": "persistent",
        "InstanceInterruptionBehavior": "stop"
    }
}
```

`--query`Opsi dalam perintah contoh membuatnya sehingga perintah hanya mengembalikan ID instance dari Instance Spot. Berikut ini adalah output contoh.

```
[
    "i-0abcdef1234567890"   
]
```

**4. Tambahkan tag sehingga AWS FIS dapat mengidentifikasi Instance Spot target**  
Gunakan perintah [create-tags untuk menambahkan tag](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html) Name=interruptMe ke Instance Spot target Anda.

```
aws ec2 create-tags \
    --resources i-0abcdef1234567890 \
    --tags Key=Name,Value=interruptMe
```

## Langkah 1: Buat template percobaan
<a name="spot-interruptions-create-template"></a>

Buat template percobaan menggunakan konsol AWS FIS. Dalam template, Anda menentukan tindakan yang akan berjalan. Tindakan menginterupsi Instance Spot dengan tag yang ditentukan. Jika ada lebih dari satu Instance Spot dengan tag, AWS FIS memilih salah satunya secara acak.

**Untuk membuat template percobaan**

1. Buka konsol AWS FIS di [https://console.aws.amazon.com/fis/](https://console.aws.amazon.com/fis/).

1. Di panel navigasi, pilih **Template eksperimen**.

1. Pilih **Buat template eksperimen**.

1. Untuk **Langkah 1, Tentukan detail template**, lakukan hal berikut:

   1. Untuk **Deskripsi dan nama**, masukkan deskripsi dan nama untuk templat.

   1. Pilih **Berikutnya**, dan pindah ke **Langkah 2, Tentukan tindakan dan target**. 

1. Untuk **Tindakan**, lakukan hal berikut:

   1. Pilih **Tambahkan tindakan**.

   1. Masukkan nama untuk tindakan tersebut. Misalnya, masukkan **interruptSpotInstance**.

   1. Untuk **tipe Action**, pilih **aws:ec2:**. send-spot-instance-interruptions

   1. Untuk **Target**, pertahankan target yang AWS dibuat FIS untuk Anda.

   1. Untuk **parameter Tindakan**, **Durasi sebelum interupsi**, tentukan 2 Menit (PT2M).

   1. Pilih **Simpan**.

1. Untuk **Target**, lakukan langkah berikut:

   1. Pilih **Edit** untuk target yang AWS dibuat FIS secara otomatis untuk Anda pada langkah sebelumnya.

   1. Ganti nama default dengan nama yang lebih deskriptif. Misalnya, masukkan **oneSpotInstance**.

   1. Verifikasi bahwa **tipe Resource** adalah **aws:ec2:spot-instance**.

   1. Untuk **metode Target**, pilih **Tag sumber daya, filter, dan parameter**.

   1. Untuk **tag Resource**, pilih **Tambahkan tag baru**, dan masukkan kunci tag dan nilai tag. Gunakan tag yang Anda tambahkan ke Instance Spot untuk menginterupsi, seperti yang dijelaskan dalam Prasyarat untuk tutorial ini.

   1. Untuk **filter Sumber daya** pilih **Tambahkan filter baru** dan masukkan **State.Name** sebagai jalur dan **running** sebagai nilai.

   1. Untuk **mode Seleksi**, pilih **Hitung**. Untuk **Jumlah sumber daya**, masukkan**1**.

   1. Pilih **Simpan**.

1. Pilih **Berikutnya** untuk pindah ke **Langkah 3, Konfigurasikan akses layanan**. 

1. Untuk **Akses Layanan**, pilih **Gunakan peran IAM yang ada, lalu pilih peran** IAM yang Anda buat seperti yang dijelaskan dalam prasyarat untuk tutorial ini. Jika peran Anda tidak ditampilkan, verifikasi bahwa ia memiliki hubungan kepercayaan yang diperlukan. Untuk informasi selengkapnya, lihat [Peran IAM untuk eksperimen AWS FIS](getting-started-iam-service-role.md).

1. Pilih **Berikutnya** untuk pindah ke **Langkah 4, Konfigurasikan pengaturan opsional**. 

1. (Opsional) Untuk **Tag**, pilih **Tambahkan tag baru** dan tentukan kunci tag dan nilai tag. Tag yang Anda tambahkan diterapkan ke template eksperimen Anda, bukan eksperimen yang dijalankan menggunakan template.

1. Pilih **Berikutnya** untuk pindah ke **Langkah 5, Tinjau dan buat**. 

1. Tinjau template dan pilih **Buat template eksperimen**. Ketika diminta untuk konfirmasi, masukkan`create`, Lalu pilih **Buat template percobaan**. 

**(Opsional) Untuk melihat template eksperimen JSON**  
Pilih tab **Ekspor**. Berikut ini adalah contoh dari JSON yang dibuat oleh prosedur konsol sebelumnya.

```
{
    "description": "Test Spot Instance interruptions",
    "targets": {
        "oneSpotInstance": {
            "resourceType": "aws:ec2:spot-instance",
            "resourceTags": {
                "Name": "interruptMe"
            },
            "filters": [
                {
                    "path": "State.Name",
                    "values": [
                        "running"
                    ]
                }
            ],
            "selectionMode": "COUNT(1)"
        }
    },
    "actions": {
        "interruptSpotInstance": {
            "actionId": "aws:ec2:send-spot-instance-interruptions",
            "parameters": {
                "durationBeforeInterruption": "PT2M"
            },
            "targets": {
                "SpotInstances": "oneSpotInstance"
            }
        }
    },
    "stopConditions": [
        {
            "source": "none"
        }
    ],
    "roleArn": "arn:aws:iam::123456789012:role/AllowFISSpotInterruptionActions",
    "tags": {
        "Name": "my-template"
    }
}
```

## Langkah 2: Mulai percobaan
<a name="spot-interruptions-start-experiment"></a>

Setelah selesai membuat templat eksperimen, Anda dapat menggunakannya untuk memulai eksperimen.

**Untuk memulai percobaan**

1. Anda harus berada di halaman detail untuk template eksperimen yang baru saja Anda buat. Jika tidak, pilih **Templat eksperimen** lalu pilih ID templat eksperimen untuk membuka halaman detail.

1. Pilih **Mulai percobaan**.

1. (Opsional) Untuk menambahkan tag ke eksperimen Anda, pilih **Tambahkan tag baru** dan masukkan kunci tag dan nilai tag.

1. Pilih **Mulai percobaan**. Saat diminta konfirmasi, masukkan **start** dan pilih **Mulai eksperimen**.

## Langkah 3: Lacak kemajuan eksperimen
<a name="spot-interruptions-track-experiment"></a>

Anda dapat melacak kemajuan eksperimen yang sedang berjalan hingga percobaan selesai, dihentikan, atau gagal.

**Untuk melacak kemajuan eksperimen**

1. Anda harus berada di halaman detail untuk eksperimen yang baru saja Anda mulai. Jika tidak, pilih **Eksperimen** lalu pilih ID eksperimen untuk membuka halaman detail.

1. Untuk melihat status percobaan, periksa **Status** di panel **Detail**. Untuk informasi lebih lanjut, lihat [status eksperimen](view-experiment-progress.md#experiment-states).

1. Ketika keadaan percobaan sedang **berjalan, lanjutkan** ke langkah berikutnya.

## Langkah 4: Verifikasi hasil percobaan
<a name="spot-interruptions-verify-experiment-result"></a>

Ketika tindakan untuk percobaan ini selesai, berikut ini terjadi:
+ Instance Spot target menerima [rekomendasi penyeimbangan ulang instans](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/rebalance-recommendations.html).
+ [Pemberitahuan interupsi Instans Spot](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html#spot-instance-termination-notices) dikeluarkan dua menit sebelum Amazon EC2 menghentikan atau menghentikan instans Anda.
+ Setelah dua menit, Instans Spot dihentikan atau dihentikan.
+ Instance Spot yang dihentikan oleh AWS FIS tetap dihentikan sampai Anda memulai ulang.

**Untuk memverifikasi bahwa instance terputus oleh percobaan**

1. Buka EC2 konsol Amazon di [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Dari panel navigasi, buka **Permintaan Spot** dan **Instans** di tab atau jendela peramban yang terpisah.

1. Untuk **Permintaan Spot**, pilih permintaan Instans Spot. Status awal adalah `fulfilled`. Setelah percobaan selesai, status berubah sebagai berikut:
   + `terminate`- Status berubah menjadi`instance-terminated-by-experiment`.
   + `stop`- Status berubah menjadi `marked-for-stop-by-experiment` dan kemudian`instance-stopped-by-experiment`.

1. Untuk **Instans**, pilih Instans Spot. Status awal adalah `Running`. Dua menit setelah Anda menerima pemberitahuan interupsi Instans Spot, statusnya berubah sebagai berikut:
   + `stop`- Status berubah menjadi `Stopping` dan kemudian`Stopped`.
   + `terminate`- Status berubah menjadi `Shutting-down` dan kemudian`Terminated`.

## Langkah 5: Bersihkan
<a name="spot-interruptions-cleanup"></a>

Jika Anda membuat Instance Spot pengujian untuk eksperimen ini dengan perilaku interupsi `stop` dan Anda tidak lagi membutuhkannya, Anda dapat membatalkan permintaan Instans Spot dan menghentikan Instans Spot.

**Untuk membatalkan permintaan dan menghentikan instance menggunakan AWS CLI**

1. Gunakan [cancel-spot-instance-requests](https://docs.aws.amazon.com/cli/latest/reference/ec2/cancel-spot-instance-requests.html)perintah untuk membatalkan permintaan Instans Spot.

   ```
   aws ec2 cancel-spot-instance-requests --spot-instance-request-ids sir-ksie869j
   ```

1. Gunakan perintah [terminate-instance untuk mengakhiri instance](https://docs.aws.amazon.com/cli/latest/reference/ec2/terminate-instances.html).

   ```
   aws ec2 terminate-instances --instance-ids i-0abcdef1234567890
   ```

Jika Anda tidak lagi membutuhkan templat percobaan, Anda dapat menghapusnya.

**Untuk menghapus template percobaan menggunakan konsol AWS FIS**

1. Buka konsol AWS FIS di [https://console.aws.amazon.com/fis/](https://console.aws.amazon.com/fis/).

1. Di panel navigasi, pilih **Template eksperimen**.

1. Pilih template eksperimen, lalu pilih **Tindakan**, **Hapus template eksperimen**.

1. Saat diminta konfirmasi, masukkan **delete** lalu pilih **Hapus templat eksperimen**.