

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

# Menyebarkan layanan Amazon ECS menggunakan pengontrol pihak ketiga
<a name="deployment-type-external"></a>

Jenis penyebaran *eksternal* memungkinkan Anda menggunakan pengontrol penyebaran pihak ketiga untuk kontrol penuh atas proses penyebaran untuk layanan Amazon ECS. Detail untuk layanan Anda dikelola, baik oleh tindakan API manajemen layanan (`CreateService`, `UpdateService`, dan `DeleteService`) ataupun tindakan API manajemen set tugas (`CreateTaskSet`, `UpdateTaskSet`, `UpdateServicePrimaryTaskSet`, dan `DeleteTaskSet`). Setiap tindakan API mengelola subset parameter definisi layanan.

Tindakan API `UpdateService` memperbarui jumlah yang diinginkan dan parameter masa tenggang pemeriksaan kondisi untuk suatu layanan. Jika opsi komputasi, versi platform, detail penyeimbang beban, konfigurasi jaringan, atau definisi tugas perlu diperbarui, Anda harus membuat set tugas baru.

Tindakan API `UpdateTaskSet` hanya memperbarui parameter skala untuk set tugas.

Tindakan API `UpdateServicePrimaryTaskSet` memodifikasi set tugas mana dalam layanan yang merupakan set tugas utama. Saat Anda memanggil tindakan API `DescribeServices`, tindakan tersebut mengembalikan semua bidang yang ditentukan untuk set tugas utama. Jika set tugas utama untuk layanan diperbarui, maka nilai parameter set tugas apa pun yang ada di set tugas utama baru yang berbeda dari set tugas utama lama di layanan akan diperbarui ke nilai baru saat set tugas utama baru ditentukan. Jika tidak ada set tugas utama yang ditentukan untuk layanan, maka saat menjelaskan layanan, bidang set tugas adalah nol.

## Pertimbangan penyebaran eksternal
<a name="deployment-type-external-considerations"></a>

Pertimbangkan hal berikut saat menggunakan tipe deployment eksternal:
+ Jenis penyeimbang beban yang didukung adalah Application Load Balancer atau Penyeimbang Beban Jaringan.
+ Jenis pengontrol Fargate atau `EXTERNAL` deployment tidak mendukung strategi penjadwalan. `DAEMON`
+  AutoScaling Integrasi aplikasi dengan Amazon ECS hanya mendukung layanan Amazon ECS sebagai target. Dimensi skalabel yang didukung untuk Amazon ECS adalah `ecs:service:DesiredCount` - jumlah tugas layanan Amazon ECS. Tidak ada integrasi langsung antara Application AutoScaling dan Amazon ECS task set. Set tugas Amazon ECS menghitung `ComputedDesiredCount` berdasarkan layanan Amazon ECS. `DesiredCount`

## Alur kerja penerapan eksternal
<a name="deployment-type-external-workflow"></a>

Berikut ini adalah alur kerja dasar untuk mengelola penyebaran eksternal di Amazon ECS.

**Untuk mengelola layanan Amazon ECS menggunakan pengontrol penyebaran eksternal**

1. Buat layanan Amazon ECS. Satu-satunya parameter yang diperlukan adalah nama layanan. Anda dapat menentukan parameter berikut saat membuat layanan menggunakan pengendali deployment eksternal. Semua parameter layanan lainnya ditentukan saat membuat set tugas dalam layanan.  
`serviceName`  
Tipe: String  
Diperlukan: Ya  
Nama layanan Anda. Mengizinkan hingga 255 huruf (huruf besar dan huruf kecil), angka, tanda hubung, dan garis bawah. Nama layanan harus unik dalam sebuah klaster, tetapi Anda dapat memiliki layanan yang bernama sama di beberapa klaster dalam satu Wilayah atau lebih.  
`desiredCount`  
Jumlah instantiasi dari tugas yang ditentukan menetapkan penentuan tugas untuk ditempatkan dan tetap berjalan dalam layanan.  
`deploymentConfiguration`  
Parameter deployment opsional yang mengendalikan seberapa banyak tugas yang dijalankan selama deployment dan urutan penghentian serta mulainya tugas.   
`tags`  
Tipe: Array objek   
Wajib: Tidak  
Metadata yang Anda terapkan ke layanan untuk membantu Anda mengkategorikan dan mengaturnya. Setiap tag terdiri atas sebuah kunci dan sebuah nilai opsional, dan Anda menentukan sendiri keduanya. Ketika layanan dihapus, tag akan dihapus juga. Maksimal 50 tag dapat diterapkan ke layanan. Untuk informasi selengkapnya, lihat [Menandai sumber daya Amazon ECS](ecs-using-tags.md).  
Saat Anda memperbarui layanan, parameter ini tidak memicu penerapan layanan baru.    
`key`  
Tipe: String  
Batasan Panjang: Panjang minimum 1. Panjang maksimum 128.  
Wajib: Tidak  
Satu bagian dari pasangan nilai kunci yang membentuk tanda. Kunci adalah label umum yang bertindak seperti kategori untuk nilai tanda yang lebih spesifik.  
`value`  
Tipe: String  
Batasan Panjang: Panjang minimum 0. Panjang maksimum 256.  
Wajib: Tidak  
Bagian opsional pasangan nilai kunci yang membentuk tanda. Nilai bertindak sebagai deskriptor dalam kategori tanda (kunci).  
`enableECSManagedTags`  
Menentukan apakah akan menggunakan tag terkelola Amazon ECS untuk tugas dalam layanan. Untuk informasi selengkapnya, lihat [Gunakan tag untuk penagihan](ecs-using-tags.md#tag-resources-for-billing).  
`propagateTags`  
Tipe: String  
Nilai yang valid: `TASK_DEFINITION` \$1 `SERVICE`  
Wajib: Tidak  
Menentukan apakah akan menyalin tag dari definisi tugas atau layanan untuk tugas-tugas dalam layanan. Jika tidak ada nilai yang ditentukan, tag tidak disalin. Tag hanya dapat disalin ke tugas dalam layanan selama pembuatan layanan. Untuk menambahkan tag ke tugas setelah pembuatan layanan atau pembuatan tugas, gunakan tindakan `TagResource` API.  
Saat Anda memperbarui layanan, parameter ini tidak memicu penerapan layanan baru.  
`schedulingStrategy`  
Strategi penjadwalan yang akan digunakan. Layanan yang menggunakan pengendali deployment eksternal hanya mendukung strategi penjadwalan `REPLICA`.  
`placementConstraints`  
Susunan objek batasan penempatan yang akan digunakan untuk tugas di layanan Anda. Anda dapat menentukan maksimal 10 batasan per tugas (batas ini mencakup batasan dalam penentuan tugas dan batasan yang ditentukan pada waktu aktif). Jika Anda menggunakan Fargate, batasan penempatan tugas tidak didukung.  
`placementStrategy`  
Strategi batasan objek yang akan digunakan untuk tugas-tugas dalam layanan Anda. Anda dapat menentukan maksimal empat aturan strategi per layanan.

   Berikut ini adalah contoh penentuan layanan untuk membuat layanan menggunakan pengendali deployment eksternal.

   ```
   {
       "cluster": "",
       "serviceName": "",
       "desiredCount": 0,
       "role": "",
       "deploymentConfiguration": {
           "maximumPercent": 0,
           "minimumHealthyPercent": 0
       },
       "placementConstraints": [
           {
               "type": "distinctInstance",
               "expression": ""
           }
       ],
       "placementStrategy": [
           {
               "type": "binpack",
               "field": ""
           }
       ],
       "schedulingStrategy": "REPLICA",
       "deploymentController": {
           "type": "EXTERNAL"
       },
       "tags": [
           {
               "key": "",
               "value": ""
           }
       ],
       "enableECSManagedTags": true,
       "propagateTags": "TASK_DEFINITION"
   }
   ```

1. Buat set tugas awal. Set tugas berisi detail berikut tentang layanan Anda:  
`taskDefinition`  
Penentuan tugas untuk tugas-tugas dalam set tugas yang akan digunakan.  
`launchType`  
Tipe: String  
Nilai yang valid: `EC2` \$1 `FARGATE` \$1 `EXTERNAL`  
Wajib: Tidak  
Jenis peluncuran untuk menjalankan layanan Anda. Jika jenis peluncuran tidak ditentukan, default `capacityProviderStrategy` digunakan secara default.  
Saat Anda memperbarui layanan, parameter ini memicu penerapan layanan baru.  
Jika `launchType` ditentukan, parameter `capacityProviderStrategy` harus dihilangkan.  
`platformVersion`  
Tipe: String  
Wajib: Tidak  
Versi platform tempat tugas Anda dalam layanan berjalan. Versi platform hanya ditentukan untuk tugas yang menggunakan tipe peluncuran Fargate. Jika tidak ditentukan, versi terbaru (`LATEST`) digunakan secara default.  
Saat Anda memperbarui layanan, parameter ini memicu penerapan layanan baru.  
AWS Versi platform Fargate digunakan untuk merujuk ke lingkungan runtime tertentu untuk infrastruktur tugas Fargate. Saat menentukan versi `LATEST` platform saat menjalankan tugas atau membuat layanan, Anda mendapatkan versi platform terbaru yang tersedia untuk tugas Anda. Saat Anda meningkatkan layanan, tugas tersebut menerima versi platform yang ditentukan pada penerapan layanan saat ini. Untuk informasi selengkapnya, lihat [Versi platform Fargate untuk Amazon ECS](platform-fargate.md).  
Versi platform tidak ditentukan untuk tugas yang menggunakan tipe peluncuran EC2.  
`loadBalancers`  
Objek penyeimbang beban yang mewakili penyeimbang beban yang akan digunakan bersama layanan Anda. Saat menggunakan pengontrol penyebaran eksternal, hanya Application Load Balancer dan Network Load Balancer yang didukung. Jika Anda menggunakan Application Load Balancer, hanya satu grup target Application Load Balancer yang diizinkan per set tugas.  
Cuplikan berikut menunjukkan contoh `loadBalancer` objek untuk digunakan.  

   ```
   "loadBalancers": [
           {
               "targetGroupArn": "",
               "containerName": "",
               "containerPort": 0
           }
   ]
   ```
Saat menentukan objek `loadBalancer`, Anda harus menentukan `targetGroupArn` dan menghilangkan parameter `loadBalancerName`.  
`networkConfiguration`  
Konfigurasi jaringan untuk layanan. Parameter ini diperlukan untuk penentuan tugas yang menggunakan mode jaringan `awsvpc` untuk menerima antarmuka jaringan elastisnya sendiri, dan tidak didukung untuk mode jaringan lainnya. Untuk informasi lebih lanjut tentang jaringan untuk Fargate, lihat. [Opsi jaringan tugas Amazon ECS untuk Fargate](fargate-task-networking.md)  
`serviceRegistries`  
Detail registri penemuan layanan yang akan ditetapkan ke layanan ini. Untuk informasi selengkapnya, lihat [Gunakan penemuan layanan untuk menghubungkan layanan Amazon ECS dengan nama DNS](service-discovery.md).  
`scale`  
Persentase titik mengambang dari jumlah tugas yang diinginkan untuk menempatkan dan agar tetap berjalan di serangkaian tugas. Nilai ditetapkan sebagai total persentase dari `desiredCount` layanan. Nilai yang diterima adalah angka antara 0 hingga 100.

   Berikut ini adalah contoh JSON untuk membuat set tugas untuk pengendali deployment eksternal.

   ```
   {
       "service": "",
       "cluster": "",
       "externalId": "",
       "taskDefinition": "",
       "networkConfiguration": {
           "awsvpcConfiguration": {
               "subnets": [
                   ""
               ],
               "securityGroups": [
                   ""
               ],
               "assignPublicIp": "DISABLED"
           }
       },
       "loadBalancers": [
           {
               "targetGroupArn": "",
               "containerName": "",
               "containerPort": 0
           }
       ],
       "serviceRegistries": [
           {
               "registryArn": "",
               "port": 0,
               "containerName": "",
               "containerPort": 0
           }
       ],
       "launchType": "EC2",
       "capacityProviderStrategy": [
           {
               "capacityProvider": "",
               "weight": 0,
               "base": 0
           }
       ],
       "platformVersion": "",
       "scale": {
           "value": null,
           "unit": "PERCENT"
       },
       "clientToken": ""
   }
   ```

1. Saat perubahan layanan dibutuhkan, gunakan tindakan API `UpdateService`, `UpdateTaskSet`, atau `CreateTaskSet` tergantung pada parameter mana yang Anda perbarui. Jika Anda membuat set tugas, maka gunakan parameter `scale` untuk setiap set tugas di layanan untuk menentukan berapa banyak tugas yang harus tetap berjalan di layanan. Misalnya, jika Anda memiliki layanan yang berisi `tasksetA` dan Anda membuat `tasksetB`, maka Anda dapat menguji validitas `tasksetB` sebelum akan menransisikan lalu lintas produksi ke sana. Anda dapat mengatur `scale` untuk kedua set tugas ke `100`, dan saat Anda siap untuk menransisikan semua lalu lintas produksi ke `tasksetB`, Anda dapat memperbarui `scale` untuk `tasksetA` ke `0` untuk menurunkan skalanya.