

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

# Lindungi tugas Amazon ECS Anda agar tidak dihentikan oleh peristiwa penskalaan
<a name="task-scale-in-protection"></a>

Anda dapat menggunakan perlindungan penskalaan tugas Amazon ECS untuk melindungi tugas agar tidak dihentikan oleh peristiwa penskalaan dari penskalaan otomatis layanan atau penerapan.

Aplikasi tertentu memerlukan mekanisme untuk melindungi tugas-tugas penting misi dari penghentian oleh peristiwa penskalaan selama masa pemanfaatan rendah atau selama penerapan layanan. Contoh:
+ Anda memiliki aplikasi asinkron pemrosesan antrian seperti pekerjaan transcoding video di mana beberapa tugas perlu dijalankan selama berjam-jam bahkan ketika pemanfaatan layanan kumulatif rendah.
+ Anda memiliki aplikasi game yang menjalankan server game sebagai tugas Amazon ECS yang perlu terus berjalan bahkan jika semua pengguna telah logged-out untuk mengurangi latensi start-up dari reboot server.
+ Saat Anda menerapkan versi kode baru, Anda memerlukan tugas untuk terus berjalan karena akan mahal untuk diproses ulang.

Untuk melindungi tugas yang termasuk dalam layanan Anda agar tidak dihentikan dalam peristiwa scale-in, setel atribut ke`ProtectionEnabled`. `true` Bila Anda menyetel `ProtectionEnabled` ke true, tugas dilindungi selama 2 jam secara default. Anda kemudian dapat menyesuaikan periode perlindungan dengan menggunakan `ExpiresInMinutes` atribut. Anda dapat melindungi tugas Anda selama minimal 1 menit dan hingga maksimum 2880 menit (48 jam). Jika Anda menggunakan AWS CLI, Anda dapat menentukan `--protection-enabled` opsi.

Setelah tugas menyelesaikan pekerjaan yang dipersyaratkan, Anda dapat mengatur `ProtectionEnabled` atribut ke`false`, memungkinkan tugas dihentikan oleh peristiwa skala berikutnya. Jika Anda menggunakan AWS CLI, Anda dapat menentukan `--no-protection-enabled` opsi.

## Mekanisme perlindungan skala tugas
<a name="task-scale-in-protection-mechanisms"></a>

Anda dapat mengatur dan mendapatkan perlindungan skala tugas menggunakan titik akhir agen penampung Amazon ECS atau Amazon ECS API.
+ **Titik akhir agen kontainer Amazon ECS**

  Sebaiknya gunakan titik akhir agen penampung Amazon ECS untuk tugas yang dapat menentukan sendiri kebutuhan untuk dilindungi. Gunakan pendekatan ini untuk beban kerja berbasis antrian atau pemrosesan pekerjaan.

  Saat wadah mulai memproses pekerjaan, misalnya dengan menggunakan pesan SQS, Anda dapat mengatur `ProtectionEnabled` atribut melalui jalur titik akhir perlindungan skala tugas `$ECS_AGENT_URI/task-protection/v1/state` dari dalam wadah. Amazon ECS tidak akan menghentikan tugas ini selama acara scale-in. Setelah tugas Anda selesai, Anda dapat menghapus `ProtectionEnabled` atribut menggunakan titik akhir yang sama, membuat tugas memenuhi syarat untuk penghentian selama peristiwa penskalaan berikutnya.

  Untuk informasi selengkapnya tentang titik akhir agen penampung Amazon ECS, lihat. [Titik akhir perlindungan skala tugas Amazon ECS](task-scale-in-protection-endpoint.md)
+ **Amazon ECS API**

  Anda dapat menggunakan Amazon ECS API untuk menyetel dan mengambil perlindungan skala tugas jika aplikasi Anda memiliki komponen yang melacak status tugas aktif. Gunakan `UpdateTaskProtection` untuk menandai satu atau lebih tugas sebagai dilindungi. Gunakan `GetTaskProtection` untuk mengambil status perlindungan.

  Contoh dari pendekatan ini adalah jika aplikasi Anda menghosting sesi server game sebagai tugas Amazon ECS. Saat pengguna masuk ke sesi di server (tugas), Anda dapat menandai tugas sebagai dilindungi. Setelah pengguna log out, Anda dapat menghapus perlindungan khusus untuk tugas ini atau secara berkala menghapus perlindungan untuk tugas serupa yang tidak lagi memiliki sesi aktif, tergantung pada kebutuhan Anda untuk menjaga server menganggur.

  Untuk informasi selengkapnya, lihat [UpdateTaskProtection](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateTaskProtection.html)dan [GetTaskProtection](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_GetTaskProtection.html)di *Referensi API Amazon Elastic Container Service*.

Anda dapat menggabungkan kedua pendekatan. Misalnya, gunakan titik akhir agen Amazon ECS untuk mengatur perlindungan tugas dari dalam wadah dan gunakan Amazon ECS API untuk menghapus perlindungan tugas dari layanan pengontrol eksternal Anda.

## Pertimbangan-pertimbangan
<a name="task-scale-in-protection-considerations"></a>

Pertimbangkan poin-poin berikut sebelum menggunakan perlindungan skala tugas:
+ Perlindungan skala tugas hanya didukung dengan tugas yang diterapkan dari layanan.
+ Perlindungan skala tugas didukung dengan tugas yang diterapkan dari layanan yang berjalan di Instans Terkelola Amazon ECS.
+ Sebaiknya gunakan titik akhir agen penampung Amazon ECS karena agen Amazon ECS memiliki mekanisme coba ulang bawaan dan antarmuka yang lebih sederhana.
+ Anda dapat mengatur ulang periode kedaluwarsa perlindungan skala tugas dengan memanggil tugas `UpdateTaskProtection` yang telah mengaktifkan perlindungan.
+ Tentukan berapa lama tugas yang dibutuhkan untuk menyelesaikan pekerjaan yang diperlukan dan mengatur `expiresInMinutes` properti yang sesuai. Jika Anda mengatur kedaluwarsa perlindungan lebih lama dari yang diperlukan, maka Anda akan dikenakan biaya dan menghadapi keterlambatan dalam penyebaran tugas baru.
+ Perlindungan skala tugas didukung pada agen `1.65.0` kontainer Amazon ECS atau yang lebih baru. Anda dapat menambahkan dukungan untuk fitur ini di instans Amazon EC2 menggunakan versi lama agen penampung Amazon ECS dengan memperbarui agen ke versi terbaru. Untuk informasi selengkapnya, lihat [Memperbarui agen kontainer Amazon ECS](ecs-agent-update.md).
+ Pertimbangan penyebaran:
  + Jika layanan menggunakan pembaruan bergulir, tugas baru akan dibuat tetapi tugas yang menjalankan versi lama tidak akan dihentikan sampai dihapus atau `protectionEnabled` kedaluwarsa. Anda dapat menyesuaikan `maximumPercentage` parameter dalam konfigurasi penerapan ke nilai yang memungkinkan tugas baru dibuat saat tugas lama dilindungi.
  + Jika blue/green pembaruan diterapkan, penerapan biru dengan tugas yang dilindungi tidak akan dihapus jika tugas memiliki`protectionEnabled`. Lalu lintas akan dialihkan ke tugas baru yang muncul dan tugas lama hanya akan dihapus ketika dihapus atau `protectionEnabled` kedaluwarsa. Bergantung pada batas waktu CodeDeploy atau CloudFormation pembaruan, penerapan mungkin batas waktu dan tugas Biru yang lebih lama mungkin masih ada.
  + Jika Anda menggunakan CloudFormation, update-stack memiliki batas waktu 3 jam. Oleh karena itu, jika Anda mengatur perlindungan tugas Anda lebih dari 3 jam, maka CloudFormation penerapan Anda dapat mengakibatkan kegagalan dan kemunduran.

    Selama tugas lama Anda dilindungi, CloudFormation tumpukan ditampilkan`UPDATE_IN_PROGRESS`. Jika perlindungan skala tugas dihapus atau kedaluwarsa dalam jendela 3 jam, penerapan Anda akan berhasil dan pindah ke status. `UPDATE_COMPLETE` Jika penerapan macet `UPDATE_IN_PROGRESS` selama lebih dari 3 jam, itu akan gagal dan menunjukkan `UPDATE_FAILED` status, dan kemudian akan digulung kembali ke set tugas lama.
  + Amazon ECS mengirimkan peristiwa layanan saat tugas yang dilindungi menjaga penerapan (bergulir atau biru/hijau) agar tidak mencapai kondisi tunak, sehingga Anda dapat mengambil tindakan perbaikan. Saat mencoba memperbarui status perlindungan suatu tugas, jika Anda menerima pesan `DEPLOYMENT_BLOCKED` kesalahan, itu berarti layanan memiliki tugas yang lebih terlindungi daripada jumlah tugas yang diinginkan untuk layanan. Untuk mengatasi kesalahan ini, lakukan salah satu hal berikut:
    + Tunggu hingga perlindungan tugas saat ini kedaluwarsa. Kemudian atur perlindungan tugas.
    + Tentukan tugas mana yang bisa dihentikan. Kemudian gunakan `UpdateTaskProtection` dengan `protectionEnabled` opsi yang disetel `false` untuk tugas-tugas ini.
    + Tingkatkan jumlah tugas yang diinginkan dari layanan menjadi lebih dari jumlah tugas yang dilindungi.

## Izin IAM diperlukan untuk perlindungan skala tugas
<a name="task-scale-in-protection-iam"></a>

Tugas harus memiliki peran tugas Amazon ECS dengan izin berikut:
+ `ecs:GetTaskProtection`: Memungkinkan agen kontainer Amazon ECS untuk menelepon`GetTaskProtection`.
+ `ecs:UpdateTaskProtection`: Memungkinkan agen kontainer Amazon ECS untuk menelepon`UpdateTaskProtection`.