

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

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

Dengan menggunakan penerapan burung kenari Amazon ECS, Anda dapat mengalihkan sebagian kecil lalu lintas ke revisi layanan baru Anda (“kenari”). Validasi penerapan, lalu 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 burung kenari Amazon ECS mengharuskan layanan Anda menggunakan salah satu fitur berikut: Konfigurasikan sumber daya yang sesuai.
   + Application Load Balancer - Untuk informasi selengkapnya, lihat[Sumber daya Penyeimbang Beban Aplikasi untuk pener blue/green apan, linier, dan canary](alb-resources-for-blue-green.md).
   + Network Load Balancer - Untuk informasi selengkapnya, lihat[Sumber daya Network Load Balancer untuk Amazon ECS blue/green, penyebaran linear, dan canary](nlb-resources-for-blue-green.md).
   + Service Connect - Untuk informasi selengkapnya, lihat[Sumber daya Service Connect untuk penyebaran Amazon ECS blue/green, linear, 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 burung 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 mana 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 Detail ** layanan**, lakukan hal berikut:

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

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

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

1. Pilih bagaimana tugas Anda didistribusikan di seluruh infrastruktur cluster 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 yang akan diluncurkan dan dipelihara dalam layanan.

   1. Agar Amazon ECS memantau distribusi tugas di seluruh Zona Ketersediaan, dan mendistribusikannya kembali ketika ada ketidakseimbangan, di bawah Penyeimbangan kembali layanan Zona Keter ** sediaan**, pilih penyeimbangan kembali layanan Zona ** Ketersediaan. **

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

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

   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 menit untuk menunggu sebelum mengalihkan lalu lintas yang tersisa ke revisi layanan hijau.

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

   1. (Opsional) Konfigurasikan kait siklus hidup untuk dijalankan pada tahap penerapan tertentu. Di bawah kait siklus hidup ** pener ** apan, pilih ** Tambah**.

      Untuk kait Lambda:
      + Untuk Jenis ** Target**, pilih ** Lambda**.
      + Untuk fungsi ** Lambda**, masukkan nama fungsi atau ARN.
      + Untuk ** Per ** an, pilih peran IAM yang memiliki izin untuk memanggil fungsi Lambda.
      + Untuk ta ** hapan Siklus ** Hidup, pilih tahapan saat fungsi Lambda harus dijalankan.

      Untuk kait jeda:
      + Untuk ** Jenis Target**, pilih Jed ** a**.
      + Untuk ta ** hapan Siklus ** Hidup, pilih tahapan di mana penerapan harus dijeda.
      + (Opsional) Untuk B ** atas Waktu**, konfigurasikan durasi dan tindakan batas waktu.

1. Untuk mengonfigurasi cara Amazon ECS mendeteksi dan menangani kegagalan penerapan, perluas Deteksi kegagalan ** pener ** apan, lalu pilih opsi Anda. 

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

      Agar perangkat lunak secara otomatis mengembalikan penerapan ke status penerapan terakhir yang selesai ketika pemutus sirkuit penerapan mengatur penerapan ke status gagal, pilih Kem ** balikan pada kegagalan**.

   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 mengembalikan penerapan ke status penerapan terakhir selesai ketika CloudWatch alarm menyetel penerapan ke status gagal, pilih Kem ** balikan pada kegagalan**.

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

   1.  Pilih ** Aktifkan Koneksi Layanan**.

   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 yang sama Wilayah AWS di Anda Akun AWS atau namespace di Wilayah 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 Peng *AWS Cloud Map embang. *

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

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

      1. Untuk aturan pencocokan ** header**, konfigurasikan kriteria untuk routing test traffic:
         + **Nama header**: Masukkan nama header HTTP untuk dicocokkan (misalnya, `X-Test-Version` atau`User-Agent`).
         + **Jenis keco ** cokan: Pilih kriteria pencocokan:
           + **Pencocokan persis**: Permintaan rute di mana nilai header persis cocok 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 tertentu
         + **Nilai header ** (jika menggunakan kecocokan tepat atau kecocokan pola): Masukkan nilai atau pola yang akan dicocokkan.

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

      1. Pilih ** Tambahkan aturan header ** untuk mengonfigurasi kondisi pencocokan header tambahan.
**catatan**  
Aturan header lalu lintas pengujian memungkinkan Anda memvalidasi fungsionalitas baru dengan lalu lintas terkontrol sebelum menyelesaikan penerapan penuh. Ini memungkinkan Anda untuk menguji revisi layanan hijau dengan permintaan tertentu (seperti dari alat pengujian internal atau pengguna beta) sambil mempertahankan aliran 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 diatur secara default, tetapi Anda harus menentukan nama bucket Amazon S3 yang valid.

1. (Opsional) Konfigurasikan penyeim ** bangan beban ** untuk penerapan burung kenari.    
[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 Menye ** barkan 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 Menye ** barkan tag dari**, pilih ** Layanan. **

   Menambah atau menghapus tanda.
   + [Tambahkan tag] Pilih Tam ** bah 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 penerapan. Untuk informasi selengkapnya, lihat [Memperbarui layanan Amazon ECS](update-service-console-v2.md).
+ Pantau proses penerapan 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