

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

# Membuat penyebaran kenari Amazon ECS
<a name="deploy-canary-service"></a>

Dengan menggunakan penyebaran kenari Amazon ECS, Anda dapat mengalihkan sebagian kecil lalu lintas ke revisi layanan baru Anda (“kenari”). Validasi penyebaran, dan kemudian geser lalu lintas yang tersisa sekaligus setelah interval yang ditentukan. Pendekatan ini memungkinkan Anda untuk menguji fungsionalitas baru dengan risiko minimal sebelum penerapan penuh.

## Prasyarat
<a name="deploy-canary-service-prerequisites"></a>

Lakukan operasi berikut sebelum Anda memulai penyebaran kenari.

1. Konfigurasikan izin yang sesuai.
   + Untuk informasi tentang izin Elastic Load Balancing, lihat. [Peran IAM infrastruktur Amazon ECS untuk penyeimbang beban](AmazonECSInfrastructureRolePolicyForLoadBalancers.md)
   + Untuk informasi tentang izin Lambda, lihat. [Izin diperlukan untuk fungsi Lambda di penerapan Amazon ECS blue/green](blue-green-permissions.md)

1. Penerapan kenari Amazon ECS mengharuskan layanan Anda menggunakan salah satu fitur berikut: Konfigurasikan sumber daya yang sesuai.
   + Application Load Balancer - Untuk informasi lebih lanjut, lihat. [Sumber daya Application Load Balancer untuk penerapan blue/green, linier, dan canary](alb-resources-for-blue-green.md)
   + Network Load Balancer - Untuk informasi lebih lanjut, lihat. [Sumber daya Network Load Balancer untuk Amazon ECS blue/green, penerapan linier, dan canary](nlb-resources-for-blue-green.md)
   + Service Connect - Untuk informasi selengkapnya, lihat[Sumber daya Service Connect untuk Amazon ECS blue/green, penerapan linier, dan canary](service-connect-blue-green.md).

## Prosedur
<a name="deploy-canary-service-procedure"></a>

Anda dapat menggunakan konsol atau AWS CLI untuk membuat layanan penyebaran kenari Amazon ECS.

------
#### [ Console ]

1. Buka konsol di [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2).

1. Tentukan sumber daya dari tempat Anda meluncurkan layanan.    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/AmazonECS/latest/developerguide/deploy-canary-service.html)

   Halaman **Create service** ditampilkan.

1. Di bawah **rincian Layanan**, lakukan hal berikut:

   1. Untuk **keluarga definisi Tugas**, pilih definisi tugas yang akan digunakan. Kemudian, untuk **revisi definisi Tugas**, masukkan revisi yang akan digunakan.

   1. Untuk **nama Layanan**, masukkan nama untuk layanan Anda.

1. Untuk menjalankan layanan di klaster yang ada, untuk **klaster yang ada**, pilih klaster. Untuk menjalankan layanan di klaster baru, pilih **Buat klaster** 

1. Pilih bagaimana tugas Anda didistribusikan di seluruh infrastruktur klaster Anda. Di bawah **Konfigurasi komputasi**, pilih opsi Anda.    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/AmazonECS/latest/developerguide/deploy-canary-service.html)

1. Di bawah **konfigurasi Deployment**, lakukan hal berikut:

   1. Untuk **jenis Layanan**, pilih **Replika.**

   1. Untuk **tugas yang diinginkan**, masukkan jumlah tugas untuk diluncurkan dan dipelihara dalam layanan.

   1. **Agar Amazon ECS memantau distribusi tugas di seluruh Availability Zone, dan mendistribusikannya kembali saat terjadi ketidakseimbangan, di bawah penyeimbangan kembali layanan **Availability Zone, pilih penyeimbangan kembali layanan** Availability Zone.**

   1. Untuk **masa tenggang pemeriksaan Kesehatan**, masukkan jumlah waktu (dalam detik) bahwa penjadwal layanan mengabaikan Elastic Load Balancing, VPC Lattice, dan pemeriksaan kesehatan kontainer yang tidak sehat setelah tugas pertama kali dimulai. Jika Anda tidak menentukan nilai periode tunggu pemeriksaan kondisi, nilai default 0 akan digunakan.

1. Di bawah **konfigurasi Deployment**, konfigurasikan pengaturan penerapan canary:

   1. Untuk **strategi Deployment**, pilih **Canary**.

   1. Untuk **persentase Canary**, masukkan persentase lalu lintas untuk beralih ke revisi layanan hijau pada tahap pertama (misalnya, 10% untuk lalu lintas kenari awal).

   1. Untuk **waktu memanggang Canary**, masukkan waktu dalam hitungan menit untuk menunggu sebelum mengalihkan lalu lintas yang tersisa ke revisi layanan hijau.

   1. Untuk **waktu Bake**, masukkan jumlah menit revisi layanan biru dan hijau akan berjalan secara bersamaan setelah pergeseran lalu lintas terakhir sebelum revisi biru dihentikan.

   1. (Opsional) Jalankan fungsi Lambda untuk dijalankan pada tahap penerapan tertentu. Di bawah **Deployment lifecycle hooks**, pilih tahapan untuk menjalankan kait siklus hidup.

      Untuk menambahkan kait siklus hidup:

      1. Pilih **Tambahkan**.

      1. Untuk **fungsi Lambda**, masukkan nama fungsi atau ARN.

      1. Untuk **Peran**, pilih peran IAM yang memiliki izin untuk menjalankan fungsi Lambda.

      1. Untuk **tahapan Siklus Hidup**, pilih tahapan saat fungsi Lambda harus dijalankan.

1. Untuk mengonfigurasi cara Amazon ECS mendeteksi dan menangani kegagalan penerapan, perluas **deteksi kegagalan Deployment**, lalu pilih opsi Anda. 

   1. Untuk menghentikan penerapan saat tugas tidak dapat dimulai, pilih **Gunakan pemutus sirkuit penyebaran Amazon ECS**.

      **Agar perangkat lunak secara otomatis memutar kembali penerapan ke status penerapan yang terakhir selesai saat pemutus sirkuit penyebaran mengatur penerapan ke status gagal, pilih Rollback on failure.**

   1. Untuk menghentikan penerapan berdasarkan metrik aplikasi, pilih **Gunakan CloudWatch alarm.** Kemudian, dari **nama CloudWatch alarm**, pilih alarm. Untuk membuat alarm baru, buka CloudWatch konsol.

      Agar perangkat lunak secara otomatis memutar kembali penerapan ke status penerapan yang terakhir selesai saat CloudWatch alarm menyetel penerapan ke status gagal, pilih **Rollback on** failure.

1. (Opsional) Untuk menghubungkan layanan Anda menggunakan Service Connect, perluas **Service Connect**, lalu tentukan yang berikut ini:

   1.  Pilih **Aktifkan Service Connect**.

   1. Di bawah **konfigurasi Service Connect**, tentukan mode klien.
      + Jika layanan Anda menjalankan aplikasi klien jaringan yang hanya perlu terhubung ke layanan lain di namespace, pilih **sisi Klien** saja.
      + Jika layanan Anda menjalankan aplikasi jaringan atau layanan web dan perlu menyediakan titik akhir untuk layanan ini, dan terhubung ke layanan lain di namespace, pilih **Klien** dan server.

   1. Untuk menggunakan namespace yang bukan namespace cluster default, untuk Namespace, pilih **namespace layanan**. Ini bisa berupa namespace yang dibuat secara terpisah di ruang nama Anda Akun AWS atau Wilayah AWS di Region yang sama yang dibagikan dengan akun Anda menggunakan (). AWS Resource Access Manager AWS RAM*Untuk informasi selengkapnya tentang AWS Cloud Map ruang nama bersama, lihat [berbagi Cross-account AWS Cloud Map namespace](https://docs.aws.amazon.com/cloud-map/latest/dg/sharing-namespaces.html) di Panduan Pengembang.AWS Cloud Map *

   1. (Opsional) Konfigurasikan aturan header lalu lintas uji untuk penerapan kenari. Di bawah **Uji perutean lalu lintas**, tentukan yang berikut ini:

      1. Pilih **Aktifkan aturan header lalu lintas pengujian** untuk merutekan permintaan tertentu ke revisi layanan hijau selama pengujian.

      1. Untuk **aturan pencocokan Header**, konfigurasikan kriteria untuk lalu lintas pengujian perutean:
         + **Nama header**: Masukkan nama header HTTP untuk dicocokkan (misalnya, `X-Test-Version` atau`User-Agent`).
         + **Jenis kecocokan**: Pilih kriteria yang cocok:
           + **Pencocokan tepat**: Permintaan rute di mana nilai header sama persis dengan nilai yang ditentukan
           + **Header hadir**: Permintaan rute yang berisi header yang ditentukan, terlepas dari nilainya
           + **Pencocokan pola**: Permintaan rute di mana nilai header cocok dengan pola yang ditentukan
         + **Nilai header** (jika menggunakan kecocokan persis atau kecocokan pola): Masukkan nilai atau pola yang cocok.

         Anda dapat menambahkan beberapa aturan pencocokan header untuk membuat logika routing yang kompleks. Permintaan yang cocok dengan aturan yang dikonfigurasi akan diarahkan ke revisi layanan hijau untuk pengujian.

      1. Pilih **Tambahkan aturan header** untuk mengonfigurasi kondisi pencocokan header tambahan.
**catatan**  
Aturan header lalu lintas uji memungkinkan Anda memvalidasi fungsionalitas baru dengan lalu lintas terkontrol sebelum menyelesaikan penerapan penuh. Ini memungkinkan Anda untuk menguji revisi layanan hijau dengan permintaan khusus (seperti yang dari alat pengujian internal atau pengguna beta) sambil mempertahankan arus lalu lintas normal ke revisi layanan biru.

   1. (Opsional) Tentukan konfigurasi log. Pilih **Gunakan koleksi log**. Opsi default mengirimkan log kontainer ke CloudWatch Log. Opsi driver log lainnya dikonfigurasi menggunakan AWS FireLens. Untuk informasi selengkapnya, lihat [Kirim log Amazon ECS ke AWS layanan atau AWS Partner](using_firelens.md).

      Berikut ini menjelaskan setiap tujuan log kontainer secara lebih rinci.
      + **Amazon CloudWatch** — Konfigurasikan tugas untuk mengirim log kontainer ke CloudWatch Log. Opsi driver log default disediakan, yang membuat grup CloudWatch log atas nama Anda. Untuk menentukan nama grup log yang berbeda, ubah nilai opsi driver.
      + **Amazon Data Firehose** — Konfigurasikan tugas untuk mengirim log kontainer ke Firehose. Opsi driver log default disediakan, yang mengirim log ke aliran pengiriman Firehose. Untuk menentukan nama aliran pengiriman yang berbeda, ubah nilai opsi driver.
      + **Amazon Kinesis Data** Streams — Konfigurasikan tugas untuk mengirim log kontainer ke Kinesis Data Streams. Opsi driver log default disediakan, yang mengirim log ke aliran Kinesis Data Streams. Untuk menentukan nama aliran yang berbeda, ubah nilai opsi driver.
      + **Amazon OpenSearch Service** - Konfigurasikan tugas untuk mengirim log kontainer ke domain OpenSearch Layanan. Opsi driver log harus disediakan. 
      + **Amazon S3** — Konfigurasikan tugas untuk mengirim log kontainer ke bucket Amazon S3. Opsi driver log default disediakan, tetapi Anda harus menentukan nama bucket Amazon S3 yang valid.

1. (Opsional) Konfigurasikan **Load balancing** untuk penerapan canary.    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/AmazonECS/latest/developerguide/deploy-canary-service.html)

1. (Opsional) Untuk membantu mengidentifikasi layanan dan tugas Anda, perluas bagian **Tag**, lalu konfigurasikan tag Anda.

   **Agar Amazon ECS secara otomatis menandai semua tugas yang baru diluncurkan dengan nama cluster dan tag definisi tugas, pilih **Aktifkan tag terkelola Amazon ECS**, lalu untuk **menyebarkan tag dari**, pilih Definisi tugas.**

   **Agar Amazon ECS secara otomatis menandai semua tugas yang baru diluncurkan dengan nama cluster dan tag layanan, pilih **Aktifkan tag terkelola Amazon ECS**, lalu untuk **menyebarkan tag dari**, pilih Layanan.**

   Menambah atau menghapus tanda.
   + [Tambahkan tag] Pilih **Tambah tag**, lalu lakukan hal berikut:
     + Untuk **Kunci**, masukkan nama kunci.
     + Untuk **Nilai**, masukkan nilai kunci.
   + [Menghapus tanda] Di samping tanda, pilih **Hapus tanda**.

1. Pilih **Buat**.

------
#### [ AWS CLI ]

1. Buat file dengan nama `canary-service-definition.json` dengan konten berikut ini.

   Ganti {{user-input}} dengan nilai-nilai Anda.

   ```
   {
     "serviceName": "myCanaryService",
     "cluster": "arn:aws:ecs:us-west-2:123456789012:cluster/sample-fargate-cluster",
     "taskDefinition": "sample-fargate:1",
     "desiredCount": 5,
     "launchType": "FARGATE",
     "networkConfiguration": {
       "awsvpcConfiguration": {
         "subnets": [
           "subnet-09ce6e74c116a2299",
           "subnet-00bb3bd7a73526788",
           "subnet-0048a611aaec65477"
         ],
         "securityGroups": [
           "sg-09d45005497daa123"
         ],
         "assignPublicIp": "ENABLED"
       }
     },
     "deploymentController": {
       "type": "ECS"
     },
     "deploymentConfiguration": {
       "strategy": "CANARY",
       "maximumPercent": 200,
       "minimumHealthyPercent": 100,
       "canaryConfiguration" : {
           "canaryPercent" : 5.0,
           "canaryBakeTime" : 10
       },
       "bakeTimeInMinutes": 10,
       "alarms": {
         "alarmNames": [
           "myAlarm"
         ],
         "rollback": true,
         "enable": true
       }
     },
     "loadBalancers": [
       {
         "targetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/blue-target-group/54402ff563af1197",
         "containerName": "fargate-app",
         "containerPort": 80,
         "advancedConfiguration": {
           "alternateTargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/green-target-group/cad10a56f5843199",
           "productionListenerRule": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-canary-demo/32e0e4f946c3c05b/9cfa8c482e204f7d/831dbaf72edb911",
           "roleArn": "arn:aws:iam::123456789012:role/LoadBalancerManagementforECS"
         }
       }
     ]
   }
   ```

1. Jalankan `create-service`.

   ```
   aws ecs create-service --cli-input-json file://canary-service-definition.json
   ```

------

## Langkah selanjutnya
<a name="deploy-canary-service-next-steps"></a>

Setelah mengonfigurasi penerapan kenari Anda, selesaikan langkah-langkah ini:
+ Perbarui layanan untuk memulai penyebaran. Untuk informasi selengkapnya, lihat [Memperbarui layanan Amazon ECS](update-service-console-v2.md).
+ Pantau proses penyebaran untuk memastikannya mengikuti pola kenari:
  + Revisi layanan hijau dibuat dan ditingkatkan
  + Sebagian kecil lalu lintas (kenari) digeser ke revisi hijau
  + Sistem menunggu interval kenari yang ditentukan
  + Lalu lintas yang tersisa digeser sekaligus ke revisi hijau
  + Setelah waktu memanggang, revisi biru dihentikan