

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

# Membuat penyebaran Amazon ECS blue/green
<a name="deploy-blue-green-service"></a>

 Dengan menggunakan blue/green penerapan Amazon ECS, Anda dapat membuat dan menguji perubahan layanan sebelum menerapkannya di lingkungan produksi. 

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

Lakukan operasi berikut sebelum Anda memulai blue/green penerapan. 

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. (Opsional) Untuk pemindahan lalu lintas terkelola, konfigurasikan salah satu sumber daya berikut. Jika layanan Anda tanpa kepala (tidak ada penyeimbang beban atau Service Connect), Anda dapat melewati langkah ini. Amazon ECS tidak mengelola pergeseran lalu lintas secara otomatis untuk layanan tanpa kepala.
   + 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).

1. Putuskan apakah Anda ingin menjalankan fungsi Lambda untuk tahapan siklus hidup.
   + PRE\_SCALE\_UP
   + POST\_SCALE\_UP
   + TEST\_TRAFFIC\_SHIFT
   + POST\_TEST\_TRAFFIC\_SHIFT
   + PRODUCTION\_TRAFFIC\_SHIFT
   + POST\_PRODUCTION\_TRAFFIC\_SHIFT

   Untuk informasi selengkapnya, lihat [Membuat fungsi Lambda dengan konsol di Panduan AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html#getting-started-create-function) *Pengembang*.

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

Anda dapat menggunakan konsol atau AWS CLI untuk membuat blue/green layanan 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-blue-green-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-blue-green-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. 

   1. Untuk **waktu Panggang**, masukkan jumlah menit revisi layanan biru dan hijau akan berjalan secara bersamaan sebelum revisi biru dihentikan. Ini memungkinkan waktu untuk verifikasi dan pengujian.

   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 AWS Region 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 blue/green penerapan. 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 blue/green penerapan.    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/AmazonECS/latest/developerguide/deploy-blue-green-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 `service-definition.json` dengan konten berikut ini.

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

   ```
   {
     "serviceName": "{{myBlueGreenService}}",
     "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": "BLUE_GREEN",
       "maximumPercent": 200,
       "minimumHealthyPercent": 100,
       "bakeTimeInMinutes": 2,
       "alarms": {
         "alarmNames": [
           "myAlarm"
         ],
         "rollback": true,
         "enable": true
       },
       "lifecycleHooks": [
         {
           "hookTargetArn": "{{arn:aws:lambda:us-west-2:7123456789012:function:checkExample}}",
           "roleArn": "{{arn:aws:iam::123456789012:role/ECSLifecycleHookInvoke}}",
           "lifecycleStages": [
             "PRE_SCALE_UP"
           ],
           "hookDetails": {
             "{{MY_CONFIG_KEY}}": "{{my-config-value}}"
           }
         }
       ]
     },
     "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-blue-green-demo/32e0e4f946c3c05b/9cfa8c482e204f7d/831dbaf72edb911}}",
           "roleArn": "{{arn:aws:iam::123456789012:role/LoadBalancerManagementforECS}}"
         }
       }
     ]
   }
   ```

1. Jalankan `create-service`.

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

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

   Atau, Anda dapat menggunakan contoh berikut yang membuat layanan blue/green penyebaran dengan konfigurasi penyeimbang beban:

   ```
   aws ecs create-service \
      --cluster "{{arn:aws:ecs:us-west-2:123456789012:cluster/MyCluster}}" \
      --service-name "blue-green-example-service" \
      --task-definition "nginxServer:1" \
      --launch-type "FARGATE" \
      --network-configuration "awsvpcConfiguration={subnets=[{{subnet-12345}},{{subnet-67890}},{{subnet-abcdef}},{{subnet-fedcba}}],securityGroups=[{{sg-12345}}],assignPublicIp=ENABLED}" \
      --desired-count 3 \
      --deployment-controller "type=ECS" \
      --deployment-configuration "strategy=BLUE_GREEN,maximumPercent=200,minimumHealthyPercent=100,bakeTimeInMinutes=0" \
      --load-balancers "targetGroupArn={{arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/MyBGtg1/abcdef1234567890}},containerName=nginx,containerPort=80,advancedConfiguration={alternateTargetGroupArn={{arn:aws:elasticloadbalancing:us-west-2:123456789012}}:{{targetgroup/MyBGtg2/0987654321fedcba}},productionListenerRule={{arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/MyLB/1234567890abcdef/1234567890abcdef}},roleArn={{arn:aws:iam::123456789012:role/ELBManagementRole}}}"
   ```

------

## Langkah selanjutnya
<a name="deploy-blue-green-service-next-steps"></a>
+ Perbarui layanan untuk memulai penyebaran. Untuk informasi selengkapnya, lihat [Memperbarui layanan Amazon ECS](update-service-console-v2.md).
+ Pantau proses penyebaran untuk memastikannya mengikuti blue/green pola:
  + Revisi layanan hijau dibuat dan ditingkatkan
  + Lalu lintas uji diarahkan ke revisi hijau (jika dikonfigurasi)
  + Lalu lintas produksi dialihkan ke revisi hijau
  + Setelah waktu memanggang, revisi biru dihentikan