

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

# Definisi tugas Amazon ECS
<a name="task_definitions"></a>

*Definisi tugas* adalah cetak biru untuk aplikasi Anda. Ini adalah file teks dalam format JSON yang menjelaskan parameter dan satu atau lebih wadah yang membentuk aplikasi Anda. 

Berikut ini adalah beberapa parameter yang dapat Anda tentukan dalam definisi tugas:
+ Kapasitas untuk digunakan, yang menentukan infrastruktur tempat tugas Anda di-host
+ Gambar Docker untuk digunakan dengan setiap kontainer dalam tugas Anda
+ Berapa banyak CPU dan memori untuk digunakan dengan setiap tugas atau setiap kontainer dalam tugas
+ Memori dan persyaratan CPU
+ Sistem operasi wadah tempat tugas berjalan
+ Mode jaringan Docker digunakan untuk kontainer dalam tugas.
+ Konfigurasi pencatatan digunakan untuk tugas Anda
+ Apakah tugas terus berjalan jika penampung selesai atau gagal
+ Perintah yang dijalankan kontainer saat dimulai
+ Setiap volume data yang digunakan dengan wadah dalam tugas
+ Peran IAM yang digunakan tugas Anda

Untuk daftar lengkap parameter definisi tugas, lihat[Parameter definisi tugas Amazon ECS untuk Fargate](task_definition_parameters.md).

Setelah Anda membuat definisi tugas, Anda dapat menjalankan definisi tugas sebagai tugas atau layanan.
+ *tugas* adalah penunjukan hal abstrak dengan instans yang konkret dari ketentuan tugas dalam sebuah klaster. Setelah Anda membuat definisi tugas untuk aplikasi Anda dalam Amazon ECS, Anda dapat menentukan jumlah tugas yang akan dijalankan di klaster Anda. 
+ *Layanan* Amazon ECS menjalankan dan mempertahankan jumlah tugas yang Anda inginkan secara bersamaan di kluster Amazon ECS. Cara kerjanya adalah, jika salah satu tugas Anda gagal atau berhenti karena alasan apa pun, penjadwal layanan Amazon ECS meluncurkan instance lain berdasarkan definisi tugas Anda. Ia melakukan ini untuk menggantikannya dan dengan demikian mempertahankan jumlah tugas yang Anda inginkan dalam layanan.

**Topics**
+ [

# Status definisi tugas Amazon ECS
](task-definition-state.md)
+ [

# Merancang Aplikasi Anda untuk Amazon ECS
](application_architecture.md)
+ [

# Membuat definisi tugas Amazon ECS menggunakan konsol
](create-task-definition.md)
+ [

# Menggunakan Amazon Q Developer untuk memberikan rekomendasi definisi tugas di konsol Amazon ECS
](using-amazon-q.md)
+ [

# Memperbarui definisi tugas Amazon ECS menggunakan konsol
](update-task-definition-console-v2.md)
+ [

# Membatalkan pendaftaran revisi definisi tugas Amazon ECS menggunakan konsol
](deregister-task-definition-v2.md)
+ [

# Menghapus revisi definisi tugas Amazon ECS menggunakan konsol
](delete-task-definition-v2.md)
+ [

# Kasus penggunaan definisi tugas Amazon ECS
](use-cases.md)
+ [

# Parameter definisi tugas Amazon ECS untuk Instans Terkelola Amazon ECS
](task_definition_parameters-managed-instances.md)
+ [

# Parameter definisi tugas Amazon ECS untuk Fargate
](task_definition_parameters.md)
+ [

# Parameter definisi tugas Amazon ECS untuk Amazon EC2
](task_definition_parameters_ec2.md)
+ [

# Templat definisi tugas Amazon ECS
](task-definition-template.md)
+ [

# Contoh definisi tugas Amazon ECS
](example_task_definitions.md)

# Status definisi tugas Amazon ECS
<a name="task-definition-state"></a>

Definisi tugas mengubah status saat Anda membuat, membatalkan pendaftaran, atau menghapusnya. Anda dapat melihat status definisi tugas di konsol, atau dengan menggunakan`DescribeTaskDefinition`. 

Berikut ini adalah status yang mungkin untuk definisi tugas:

AKTIF  
Definisi tugas adalah `ACTIVE` setelah terdaftar di Amazon ECS. Anda dapat menggunakan definisi tugas di `ACTIVE` negara bagian untuk menjalankan tugas, atau membuat layanan.

TIDAK AKTIF  
Definisi tugas bertransisi dari `ACTIVE` status ke `INACTIVE` status saat Anda membatalkan pendaftaran definisi tugas. Anda dapat mengambil definisi `INACTIVE` tugas dengan menelepon`DescribeTaskDefinition`. Anda tidak dapat menjalankan tugas baru atau membuat layanan baru dengan definisi tugas di `INACTIVE` negara bagian. Tidak ada dampak pada layanan atau tugas yang ada.

DELETE\$1IN\$1PROGRESS  
Definisi tugas transisi dari `INACTIVE` status ke `DELETE_IN_PROGRESS` status setelah Anda mengirimkan definisi tugas untuk dihapus. Setelah definisi tugas dalam `DELETE_IN_PROGRESS` status, Amazon ECS secara berkala memverifikasi bahwa definisi tugas target tidak direferensikan oleh tugas atau penerapan aktif apa pun, lalu menghapus definisi tugas secara permanen. Anda tidak dapat menjalankan tugas baru atau membuat layanan baru dengan definisi tugas di `DELETE_IN_PROGRESS` negara bagian. Definisi tugas dapat dikirimkan untuk dihapus kapan saja tanpa memengaruhi tugas dan layanan yang ada.  
Definisi tugas yang berada dalam `DELETE_IN_PROGRESS` status dapat dilihat di konsol dan Anda dapat mengambil definisi tugas dengan memanggil`DescribeTaskDefinition`.  
Saat Anda menghapus semua revisi definisi `INACTIVE` tugas, nama definisi tugas tidak ditampilkan di konsol dan tidak ditampilkan di API. Jika revisi definisi tugas dalam `DELETE_IN_PROGRESS` status, nama definisi tugas ditampilkan di konsol dan dikembalikan di API. Nama definisi tugas dipertahankan oleh Amazon ECS dan revisi bertambah saat berikutnya Anda membuat definisi tugas dengan nama itu.

Jika Anda menggunakan AWS Config untuk mengelola definisi tugas Anda, AWS Config menagih Anda untuk semua pendaftaran definisi tugas. Anda hanya dikenakan biaya untuk membatalkan pendaftaran definisi tugas terbaru`ACTIVE`. Tidak ada biaya untuk menghapus definisi tugas. Untuk informasi lebih lanjut tentang harga, lihat [AWS Config Harga](https://aws.amazon.com/config/pricing/).

## Sumber daya Amazon ECS yang dapat memblokir penghapusan
<a name="resource-block-delete"></a>

Permintaan penghapusan definisi tugas tidak akan selesai ketika ada sumber daya Amazon ECS yang bergantung pada revisi definisi tugas. Sumber daya berikut mungkin mencegah definisi tugas dihapus:
+ Tugas mandiri Amazon ECS - Definisi tugas diperlukan agar tugas tetap sehat.
+ Tugas layanan Amazon ECS - Definisi tugas diperlukan agar tugas tetap sehat.
+ Penerapan layanan Amazon ECS dan set tugas - Definisi tugas diperlukan saat peristiwa penskalaan dimulai untuk penyebaran atau set tugas Amazon ECS.

Jika definisi tugas Anda tetap dalam `DELETE_IN_PROGRESS` status, Anda dapat menggunakan konsol, atau AWS CLI untuk mengidentifikasi, dan kemudian menghentikan sumber daya yang memblokir penghapusan definisi tugas.

### Penghapusan definisi tugas setelah sumber daya yang diblokir dihapus
<a name="resource-block-remove"></a>

Aturan berikut berlaku setelah Anda menghapus sumber daya yang memblokir penghapusan definisi tugas:
+ Tugas Amazon ECS - Penghapusan definisi tugas dapat memakan waktu hingga 1 jam untuk diselesaikan setelah tugas dihentikan.
+ Penyebaran layanan Amazon ECS dan set tugas - Penghapusan definisi tugas dapat memakan waktu hingga 24 jam untuk diselesaikan setelah penerapan atau set tugas dihapus.

# Merancang Aplikasi Anda untuk Amazon ECS
<a name="application_architecture"></a>

Anda merancang aplikasi Anda dengan membuat definisi tugas untuk aplikasi Anda. Definisi tugas berisi parameter yang menentukan informasi tentang aplikasi, termasuk:
+ Kapasitas untuk menggunakan, yang menentukan infrastruktur tempat tugas Anda di-host.

  Saat Anda menggunakan penyedia kapasitas EC2, Anda juga memilih jenis instans. Saat menggunakan penyedia kapasitas Instans Terkelola Amazon ECS, Anda dapat memberikan persyaratan instans untuk Amazon ECS untuk mengelola kapasitas komputasi. Untuk beberapa jenis contoh, seperti GPU, Anda perlu mengatur parameter tertentu. Untuk informasi selengkapnya, lihat [Kasus penggunaan definisi tugas Amazon ECS](use-cases.md).
+ Gambar kontainer, yang menyimpan kode aplikasi Anda dan semua dependensi yang diperlukan kode aplikasi Anda untuk dijalankan.
+ Mode jaringan yang digunakan untuk wadah dalam tugas Anda.

  Mode jaringan menentukan bagaimana tugas Anda berkomunikasi melalui jaringan.

  Untuk tugas yang berjalan pada instans EC2 dan Instans Terkelola Amazon ECS, ada beberapa opsi, tetapi kami menyarankan Anda menggunakan mode jaringan. `awsvpc` Mode `awsvpc` jaringan menyederhanakan jaringan kontainer dengan memberi Anda lebih banyak kontrol atas bagaimana aplikasi Anda berkomunikasi satu sama lain dan layanan lain di dalam Anda VPCs. 

  Untuk tugas yang berjalan di Fargate, Anda harus menggunakan mode `awsvpc` jaringan.
+ Konfigurasi logging yang akan digunakan untuk tugas Anda.
+ Setiap volume data yang digunakan dengan wadah dalam tugas.

Untuk daftar lengkap parameter definisi tugas, lihat[Parameter definisi tugas Amazon ECS untuk Fargate](task_definition_parameters.md).

Gunakan panduan berikut saat membuat definisi tugas:
+ Gunakan setiap keluarga definisi tugas hanya untuk satu tujuan bisnis.

  Jika Anda mengelompokkan beberapa jenis wadah aplikasi bersama-sama dalam definisi tugas yang sama, Anda tidak dapat menskalakan kontainer tersebut secara independen. Misalnya, situs web dan API biasanya memerlukan pola penskalaan yang berbeda. Saat lalu lintas meningkat, Anda mungkin memerlukan jumlah kontainer web yang berbeda dari kontainer API. Jika kedua kontainer ini digunakan dalam definisi tugas yang sama, setiap tugas menjalankan jumlah kontainer web dan kontainer API yang sama.
+ Cocokkan setiap versi aplikasi dengan revisi definisi tugas dalam keluarga definisi tugas.

  Dalam keluarga definisi tugas, setiap revisi definisi tugas mewakili point-in-time snapshot dari pengaturan untuk gambar kontainer tertentu. Ini mirip dengan bagaimana container adalah snapshot dari semua komponen yang diperlukan untuk menjalankan versi tertentu dari kode aplikasi Anda.

  Buat one-to-one pemetaan antara versi kode aplikasi, tag gambar kontainer, dan revisi definisi tugas. Proses rilis tipikal melibatkan git commit yang diubah menjadi image container yang ditandai dengan git commit SHA. Kemudian, tag gambar kontainer itu mendapatkan revisi definisi tugas Amazon ECS sendiri. Terakhir, layanan Amazon ECS diperbarui untuk menerapkan revisi definisi tugas baru.
+ Gunakan peran IAM yang berbeda untuk setiap keluarga definisi tugas.

  Tentukan setiap definisi tugas dengan peran IAM-nya sendiri. Terapkan praktik ini bersama dengan menyediakan setiap komponen bisnis keluarga definisi tugasnya sendiri. Dengan menerapkan kedua praktik terbaik ini, Anda dapat membatasi seberapa banyak akses yang dimiliki setiap layanan ke sumber daya di AWS akun Anda. Misalnya, Anda dapat memberikan akses layanan otentikasi untuk terhubung ke database kata sandi Anda. Pada saat yang sama, Anda dapat memastikan bahwa hanya layanan pesanan Anda yang memiliki akses ke informasi pembayaran kartu kredit.

# Praktik Terbaik untuk Ukuran Tugas Amazon ECS
<a name="capacity-tasksize"></a>

 Ukuran wadah dan tugas Anda sangat penting untuk penskalaan dan perencanaan kapasitas. Di Amazon ECS, CPU dan memori adalah dua metrik sumber daya yang digunakan untuk kapasitas. CPU diukur dalam satuan 1/1024 dari vCPU penuh (di mana 1024 unit sama dengan 1 vCPU utuh). Memori diukur dalam mebibytes. Dalam definisi tugas, Anda dapat mengonfigurasi reservasi dan batasan sumber daya.

Saat mengonfigurasi reservasi, Anda menetapkan jumlah minimum sumber daya yang dibutuhkan tugas. Tugas Anda menerima setidaknya jumlah sumber daya yang diminta. Aplikasi Anda mungkin dapat menggunakan lebih banyak CPU atau memori daripada reservasi yang Anda deklarasikan. Namun, ini tunduk pada batasan apa pun yang juga Anda nyatakan. Menggunakan lebih dari jumlah reservasi dikenal sebagai bursting. Di Amazon ECS, reservasi dijamin. Misalnya, jika Anda menggunakan instans Amazon EC2 untuk menyediakan kapasitas, Amazon ECS tidak menempatkan tugas pada instans yang reservasi tidak dapat dipenuhi.

Batas adalah jumlah maksimum unit CPU atau memori yang dapat digunakan oleh wadah atau tugas Anda. Setiap upaya untuk menggunakan lebih banyak CPU lebih dari batas ini menghasilkan pelambatan. Setiap upaya untuk menggunakan lebih banyak memori menghasilkan penampung Anda dihentikan.

Memilih nilai-nilai ini bisa menjadi tantangan. Ini karena nilai-nilai yang paling cocok untuk aplikasi Anda sangat bergantung pada kebutuhan sumber daya aplikasi Anda. Pengujian beban aplikasi Anda adalah kunci keberhasilan perencanaan kebutuhan sumber daya dan lebih memahami persyaratan aplikasi Anda.

## Aplikasi tanpa kewarganegaraan
<a name="capacity-tasksize-stateless"></a>

Untuk aplikasi stateless yang menskalakan secara horizontal, seperti aplikasi di belakang penyeimbang beban, sebaiknya Anda terlebih dahulu menentukan jumlah memori yang dikonsumsi aplikasi Anda saat melayani permintaan. Untuk melakukan ini, Anda dapat menggunakan alat tradisional seperti `ps` atau`top`, atau solusi pemantauan seperti CloudWatch Wawasan Kontainer.

Saat menentukan reservasi CPU, pertimbangkan bagaimana Anda ingin menskalakan aplikasi Anda untuk memenuhi persyaratan bisnis Anda. Anda dapat menggunakan reservasi CPU yang lebih kecil, seperti 256 unit CPU (atau 1/4 vCPU), untuk meningkatkan skala dengan cara halus yang meminimalkan biaya. Tapi, mereka mungkin tidak berskala cukup cepat untuk memenuhi lonjakan permintaan yang signifikan. Anda dapat menggunakan reservasi CPU yang lebih besar untuk skala masuk dan keluar lebih cepat dan karenanya mencocokkan lonjakan permintaan lebih cepat. Namun, pemesanan CPU yang lebih besar lebih mahal.

## Aplikasi lainnya
<a name="capacity-tasksize-other"></a>

Untuk aplikasi yang tidak menskalakan secara horizontal, seperti pekerja tunggal atau server database, kapasitas dan biaya yang tersedia mewakili pertimbangan Anda yang paling penting. Anda harus memilih jumlah memori dan CPU berdasarkan pengujian beban yang menunjukkan bahwa Anda perlu melayani lalu lintas untuk memenuhi tujuan tingkat layanan Anda. Amazon ECS memastikan bahwa aplikasi ditempatkan pada host yang memiliki kapasitas yang memadai.

# Jaringan tugas Amazon ECS untuk Instans Terkelola Amazon ECS
<a name="managed-instance-networking"></a>

Perilaku jaringan tugas Amazon ECS yang berjalan di Instans Terkelola Amazon ECS ditentukan oleh *mode jaringan* yang ditentukan dalam definisi tugas. Anda harus menentukan mode jaringan dalam definisi tugas. Anda tidak akan dapat menjalankan tugas di Instans Terkelola Amazon ECS menggunakan definisi tugas yang tidak menentukan mode jaringan. Instans Terkelola Amazon ECS mendukung mode jaringan berikut, memastikan kompatibilitas mundur untuk memigrasi beban kerja dari Fargate atau Amazon ECS di Amazon EC2:


| Mode jaringan | Deskripsi | 
| --- | --- | 
|  `awsvpc`  |  Setiap tugas menerima elastic network interface (ENI) dan alamat IPv4 pribadi. Ini menyediakan properti jaringan yang sama dengan instans Amazon EC2 dan kompatibel dengan tugas Fargate tradisional. Menggunakan trunking ENI untuk kepadatan tugas tinggi.  | 
|  `host`  |  Tugas berbagi namespace jaringan host secara langsung. Jaringan kontainer terkait dengan instance host yang mendasarinya.  | 

## Menggunakan VPC dalam IPv6 mode -only
<a name="managed-instances-networking-ipv6-only"></a>

Dalam konfigurasi IPv6 -only, tugas Amazon ECS Anda berkomunikasi secara eksklusif. IPv6 Untuk mengatur VPCs dan subnet untuk konfigurasi IPv6 -only, Anda harus menambahkan blok IPv6 CIDR ke VPC dan membuat subnet yang hanya menyertakan blok CIDR. IPv6 Untuk informasi selengkapnya, lihat [ IPv6 Menambahkan dukungan untuk VPC Anda](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html) dan [Membuat subnet di Panduan](https://docs.aws.amazon.com/vpc/latest/userguide/create-subnets.html) Pengguna Amazon *VPC*. Anda juga harus memperbarui tabel rute dengan IPv6 target dan mengonfigurasi grup keamanan dengan IPv6 aturan. Untuk informasi selengkapnya, lihat [Mengonfigurasi tabel rute](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html) dan [Mengonfigurasi aturan grup keamanan](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-security-group-rules.html) di *Panduan Pengguna Amazon VPC*.

Pertimbangan berikut berlaku untuk instans Mac:
+ Anda dapat memperbarui layanan Amazon ECS IPv4 -only atau dualstack ke IPv6 konfigurasi -only dengan memperbarui layanan secara langsung untuk IPv6 menggunakan subnet -only atau dengan membuat layanan IPv6 paralel -only dan menggunakan penerapan biru-hijau Amazon ECS untuk mengalihkan lalu lintas ke layanan baru. Untuk informasi selengkapnya tentang penerapan biru-hijau Amazon ECS, lihat. [Penerapan Amazon ECS blue/green](deployment-type-blue-green.md)
+ Layanan Amazon ECS IPv6 khusus harus menggunakan penyeimbang beban dualstack dengan grup target. IPv6 Jika Anda memigrasikan layanan Amazon ECS yang ada di belakang Application Load Balancer atau Network Load Balancer, Anda dapat membuat penyeimbang beban dualstack baru dan mengalihkan lalu lintas dari penyeimbang beban lama, atau memperbarui jenis alamat IP penyeimbang beban yang ada.

   Untuk informasi selengkapnya tentang Network Load Balancer, lihat [Membuat Network Load](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html) Balancer [dan Memperbarui jenis alamat IP untuk Network Load Balancer Anda di *Panduan Pengguna* untuk Network Load](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-ip-address-type.html) Balancer. Untuk informasi selengkapnya tentang Application Load Balancer, lihat [Membuat Application Load](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html) Balancer [dan Memperbarui jenis alamat IP untuk Application Load Balancer Anda di *Panduan Pengguna* untuk Application Load](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-ip-address-type.html) Balancers.
+ Untuk tugas Amazon ECS dalam konfigurasi IPv6 -only untuk berkomunikasi dengan titik akhir IPv4 -only, Anda dapat mengatur DNS64 dan NAT64 untuk terjemahan alamat jaringan dari ke. IPv6 IPv4 Untuk informasi selengkapnya, lihat [DNS64 dan NAT64](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-nat64-dns64.html) di *Panduan Pengguna Amazon VPC*.
+ Beban kerja Amazon ECS dalam konfigurasi IPv6 -only harus menggunakan titik akhir URI image dualstack Amazon ECR saat menarik gambar dari Amazon ECR. Untuk informasi selengkapnya, lihat [Memulai dengan membuat permintaan IPv6 di](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-requests.html#ipv6-access-getting-started) *Panduan Pengguna Amazon Elastic Container Registry*.
**catatan**  
Amazon ECR tidak mendukung titik akhir VPC antarmuka dualstack yang dapat digunakan tugas dalam konfigurasi -only. IPv6 Untuk informasi selengkapnya, lihat [Memulai dengan membuat permintaan IPv6 di](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-requests.html#ipv6-access-getting-started) *Panduan Pengguna Amazon Elastic Container Registry*.
+ Amazon ECS Exec tidak didukung dalam konfigurasi IPv6 -only.

# Alokasikan antarmuka jaringan untuk tugas di Instans Terkelola Amazon ECS
<a name="managed-instances-awsvpc-mode"></a>

 Menggunakan mode `awsvpc` jaringan di Amazon ECS Managed Instances menyederhanakan jaringan kontainer karena Anda memiliki kontrol lebih besar atas bagaimana aplikasi Anda berkomunikasi satu sama lain dan layanan lain di dalam Anda. VPCs Mode `awsvpc` jaringan juga memberikan keamanan yang lebih besar untuk wadah Anda dengan memungkinkan Anda menggunakan grup keamanan dan alat pemantauan jaringan pada tingkat yang lebih terperinci dalam tugas Anda.

Secara default, setiap instans Amazon ECS Managed Instances memiliki trunk Elastic Network Interface (ENI) yang terpasang selama peluncuran sebagai ENI utama saat tipe instans mendukung trunking. Untuk informasi selengkapnya tentang jenis instans yang mendukung trunking ENI, lihat [Instans yang didukung untuk meningkatkan antarmuka jaringan kontainer Amazon ECS.](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/eni-trunking-supported-instance-types.html)

**catatan**  
Ketika jenis instance yang dipilih tidak mendukung trunk ENIs, instance akan diluncurkan dengan ENI biasa.

Setiap tugas yang berjalan pada instance menerima ENI sendiri yang melekat pada trunk ENI, dengan alamat IP pribadi utama. Jika VPC Anda dikonfigurasi untuk mode dual-stack dan Anda menggunakan subnet dengan blok IPv6 CIDR, ENI juga menerima alamat. IPv6 Saat menggunakan subnet publik, Anda dapat menetapkan alamat IP publik secara opsional ke ENI utama Instans Terkelola Amazon ECS dengan mengaktifkan pengalamatan IPv4 publik untuk subnet. Untuk informasi selengkapnya, lihat [Memodifikasi atribut pengalamatan IP subnet Anda di Panduan](https://docs.aws.amazon.com//vpc/latest/userguide/subnet-public-ip.html) Pengguna Amazon *VPC*. Sebuah tugas hanya dapat memiliki satu ENI yang terkait dengannya pada suatu waktu. 

 Wadah yang termasuk dalam tugas yang sama juga dapat berkomunikasi melalui `localhost` antarmuka. Untuk informasi selengkapnya tentang VPCs dan subnet, lihat [Cara kerja Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/how-it-works.html) di Panduan Pengguna *Amazon VPC*

Operasi berikut menggunakan ENI primer yang dilampirkan pada instance:
+ **Unduhan gambar** - Gambar kontainer diunduh dari Amazon ECR melalui ENI utama.
+ **Secrets retrieval** - Rahasia Secrets Manager dan kredensyal lainnya diambil melalui ENI utama.
+ **Unggahan log** - Log diunggah ke CloudWatch melalui ENI utama.
+ **Unduhan file lingkungan** - File lingkungan diunduh melalui ENI utama.

Lalu lintas aplikasi mengalir melalui tugas ENI.

Karena setiap tugas mendapatkan ENI sendiri, Anda dapat menggunakan fitur jaringan seperti VPC Flow Logs, yang dapat Anda gunakan untuk memantau lalu lintas ke dan dari tugas Anda. Untuk informasi selengkapnya, lihat [Log Alur VPC](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) di *Panduan Pengguna Amazon VPC*.

Anda juga bisa memanfaatkannya AWS PrivateLink. Anda dapat mengonfigurasi titik akhir antarmuka VPC sehingga Anda dapat mengakses Amazon ECS APIs melalui alamat IP pribadi. AWS PrivateLink membatasi semua lalu lintas jaringan antara VPC Anda dan Amazon ECS ke jaringan Amazon. Anda tidak memerlukan sebuah gateway internet, perangkat NAT, atau gateway privat virtual. Untuk informasi selengkapnya, lihat [Titik akhir AWS PrivateLink VPC antarmuka Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/vpc-endpoints.html) ().

Mode `awsvpc` jaringan juga memungkinkan Anda memanfaatkan Amazon VPC Traffic Mirroring untuk keamanan dan pemantauan lalu lintas jaringan saat menggunakan jenis instans yang tidak memiliki bagasi terpasang. ENIs Untuk informasi selengkapnya, lihat [Apa itu Pencerminan Lalu Lintas](https://docs.aws.amazon.com/vpc/latest/mirroring/what-is-traffic-mirroring.html)? di Panduan *Pencerminan Lalu Lintas VPC Amazon*.

## Pertimbangan untuk mode `awsvpc`
<a name="managed-instances-awsvpc-considerations"></a>
+ Tugas memerlukan peran terkait layanan Amazon ECS untuk manajemen ENI. Peran ini dibuat secara otomatis saat Anda membuat klaster atau layanan.
+ Tugas ENIs dikelola oleh Amazon ECS dan tidak dapat dilepas atau dimodifikasi secara manual.
+ Menetapkan alamat IP publik ke tugas yang digunakan ENI `assignPublicIp` saat menjalankan tugas mandiri (`RunTask`) atau membuat atau memperbarui layanan (`CreateService`/`UpdateService`) tidak didukung.
+ Saat mengonfigurasi `awsvpc` jaringan di tingkat tugas, Anda harus menggunakan VPC yang sama dengan yang Anda tentukan sebagai bagian dari templat peluncuran penyedia kapasitas Instans Terkelola Amazon ECS. Anda dapat menggunakan subnet dan grup keamanan yang berbeda dari yang ditentukan dalam template peluncuran.
+ Untuk tugas mode `awsvpc` jaringan, gunakan tipe `ip` target saat mengonfigurasi grup target penyeimbang beban. Amazon ECS secara otomatis mengelola pendaftaran grup target untuk mode jaringan yang didukung.

## Menggunakan VPC dalam mode tumpukan dobel
<a name="managed-instance-networking-vpc-dual-stack"></a>

Saat menggunakan VPC dalam mode dual-stack, tugas Anda dapat berkomunikasi melalui, atau IPv4, atau IPv6 keduanya. IPv4 dan IPv6 alamat independen satu sama lain. Oleh karena itu Anda harus mengonfigurasi perutean dan keamanan di VPC Anda secara terpisah IPv4 untuk dan. IPv6 *Untuk informasi selengkapnya tentang cara mengonfigurasi VPC Anda untuk mode tumpukan ganda, lihat [Memigrasi ke dalam](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html) Panduan Pengguna VPC IPv6 Amazon.*

Jika Anda mengonfigurasi VPC Anda dengan gateway internet atau gateway internet khusus keluar, Anda dapat menggunakan VPC Anda dalam mode dual-stack. Dengan melakukan ini, tugas-tugas yang diberi IPv6 alamat dapat mengakses internet melalui gateway internet atau gateway internet khusus egress-. Gateway NAT bersifat opsional. *Untuk informasi selengkapnya, lihat [gateway Internet dan gateway](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html) internet khusus [eGress di Panduan Pengguna Amazon](https://docs.aws.amazon.com/vpc/latest/userguide/egress-only-internet-gateway.html) VPC.*

Tugas Amazon ECS diberikan IPv6 alamat jika kondisi berikut terpenuhi:
+ Instans Instans Terkelola Amazon ECS yang menghosting tugas menggunakan versi `1.45.0` atau yang lebih baru dari agen penampung. Untuk informasi tentang cara memeriksa versi agen yang digunakan instans Anda, dan memperbaruinya jika diperlukan, lihat[Memperbarui agen kontainer Amazon ECS](ecs-agent-update.md).
+ Pengaturan akun `dualStackIPv6` diaktifkan. Untuk informasi selengkapnya, lihat [Akses fitur Amazon ECS dengan pengaturan akun](ecs-account-settings.md).
+ Tugas Anda adalah menggunakan mode jaringan `awsvpc`.
+ VPC dan subnet Anda dikonfigurasi untuk. IPv6 Konfigurasi mencakup antarmuka jaringan yang dibuat di subnet yang ditentukan. *Untuk informasi selengkapnya tentang cara mengonfigurasi VPC Anda untuk mode dual-stack, lihat [Memigrasi ke IPv6 dan Memodifikasi atribut IPv6 pengalamatan untuk](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html) [subnet Anda di](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-ipv6) Panduan Pengguna Amazon VPC.*

# Mode jaringan host
<a name="managed-instances-host-modes"></a>

Dalam `host` mode, tugas berbagi namespace jaringan host secara langsung. Konfigurasi jaringan container terkait dengan instans host Instans Terkelola Amazon ECS yang mendasari yang Anda tentukan menggunakan `networkConfiguration` parameter saat membuat penyedia kapasitas Instans Terkelola Amazon ECS. ``

Ada kelemahan signifikan untuk menggunakan mode jaringan ini. Anda tidak dapat menjalankan lebih dari satu instantiasi tugas pada setiap host. Ini karena hanya tugas pertama yang dapat mengikat ke port yang diperlukan pada instans Amazon EC2. Juga tidak ada cara untuk memetakan ulang port kontainer saat menggunakan mode `host` jaringan. Misalnya, jika aplikasi perlu mendengarkan nomor port tertentu, Anda tidak dapat memetakan ulang nomor port secara langsung. Sebagai gantinya, Anda harus mengelola konflik port apa pun dengan mengubah konfigurasi aplikasi.

Ada juga implikasi keamanan saat menggunakan mode `host` jaringan. Mode ini memungkinkan kontainer untuk meniru host, dan memungkinkan kontainer untuk terhubung ke layanan jaringan loopback pribadi pada host.

Gunakan mode host hanya ketika Anda memerlukan akses langsung ke jaringan host atau saat memigrasi aplikasi yang memerlukan akses jaringan tingkat host.

# Opsi Jaringan Tugas Amazon ECS untuk EC2
<a name="task-networking"></a>

Perilaku jaringan tugas Amazon ECS yang di-host di instans Amazon EC2 bergantung pada mode *jaringan yang* ditentukan dalam definisi tugas. Kami menyarankan Anda menggunakan mode `awsvpc` jaringan kecuali Anda memiliki kebutuhan khusus untuk menggunakan mode jaringan yang berbeda.

Berikut ini adalah mode jaringan yang tersedia.


| Mode jaringan | Wadah Linux di EC2 | Wadah Windows di EC2 | Deskripsi | 
| --- | --- | --- | --- | 
|  `awsvpc`  |  Ya  |  Ya  |  Tugas ini dialokasikan elastic network interface (ENI) sendiri dan alamat IPv4 atau IPv6 pribadi utama. Ini memberi tugas properti jaringan yang sama dengan instans Amazon EC2.  | 
|  `bridge`  |  Ya  |  Tidak  |  Tugas ini menggunakan jaringan virtual bawaan Docker di Linux, yang berjalan di dalam setiap instans Amazon EC2 yang menghosting tugas tersebut. Jaringan virtual bawaan di Linux menggunakan driver jaringan `bridge` Docker. Ini adalah mode jaringan default di Linux jika mode jaringan tidak ditentukan dalam definisi tugas.  | 
|  `host`  |  Ya  |  Tidak  |  Tugas menggunakan jaringan host yang melewati jaringan virtual bawaan Docker dengan memetakan port kontainer langsung ke ENI dari instans Amazon EC2 yang menjadi tuan rumah tugas. Pemetaan port dinamis tidak dapat digunakan dalam mode jaringan ini. Wadah dalam definisi tugas yang menggunakan mode ini harus menentukan `hostPort` nomor tertentu. Nomor port pada host tidak dapat digunakan oleh banyak tugas. Akibatnya, Anda tidak dapat menjalankan beberapa tugas dengan definisi tugas yang sama pada satu instans Amazon EC2.  | 
|  `none`  |  Ya  |  Tidak  |  Tugas tidak memiliki konektivitas jaringan eksternal.  | 
|  `default`  |  Tidak  |  Ya  |  Tugas ini menggunakan jaringan virtual bawaan Docker di Windows, yang berjalan di dalam setiap instans Amazon EC2 yang menghosting tugas tersebut. Jaringan virtual bawaan pada Windows menggunakan driver jaringan `nat` Docker. Ini adalah mode jaringan default di Windows jika mode jaringan tidak ditentukan dalam definisi tugas.  | 

Untuk informasi selengkapnya tentang Docker jaringan di Linux, lihat [Ikhtisar jaringan](https://docs.docker.com/engine/network/) di *DockerDokumentasi*.

Untuk informasi selengkapnya tentang Docker jaringan di Windows, lihat [Jaringan kontainer Windows](https://learn.microsoft.com/en-us/virtualization/windowscontainers/container-networking/architecture) di Microsoft *Container di Dokumentasi Windows*.

## Menggunakan VPC dalam IPv6 mode -only
<a name="networking-ipv6-only"></a>

Dalam konfigurasi IPv6 -only, tugas Amazon ECS Anda berkomunikasi secara eksklusif. IPv6 Untuk mengatur VPCs dan subnet untuk konfigurasi IPv6 -only, Anda harus menambahkan blok IPv6 CIDR ke VPC dan membuat subnet baru yang hanya menyertakan blok CIDR. IPv6 Untuk informasi selengkapnya, lihat [ IPv6 Menambahkan dukungan untuk VPC Anda](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html) dan [Membuat subnet di Panduan](https://docs.aws.amazon.com/vpc/latest/userguide/create-subnets.html) Pengguna Amazon *VPC*.

Anda juga harus memperbarui tabel rute dengan IPv6 target dan mengonfigurasi grup keamanan dengan IPv6 aturan. Untuk informasi selengkapnya, lihat [Mengonfigurasi tabel rute](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html) dan [Mengonfigurasi aturan grup keamanan](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-security-group-rules.html) di *Panduan Pengguna Amazon VPC*.

Pertimbangan berikut berlaku untuk instans Mac:
+ Anda dapat memperbarui layanan Amazon ECS IPv4 -only atau dualstack ke IPv6 konfigurasi -only dengan memperbarui layanan secara langsung untuk IPv6 menggunakan subnet -only atau dengan membuat layanan IPv6 paralel -only dan menggunakan penerapan biru-hijau Amazon ECS untuk mengalihkan lalu lintas ke layanan baru. Untuk informasi selengkapnya tentang penerapan biru-hijau Amazon ECS, lihat. [Penerapan Amazon ECS blue/green](deployment-type-blue-green.md)
+ Layanan Amazon ECS IPv6 khusus harus menggunakan penyeimbang beban dualstack dengan grup target. IPv6 Jika Anda memigrasikan layanan Amazon ECS yang ada di belakang Application Load Balancer atau Network Load Balancer, Anda dapat membuat penyeimbang beban dualstack baru dan mengalihkan lalu lintas dari penyeimbang beban lama, atau memperbarui jenis alamat IP penyeimbang beban yang ada.

  Untuk informasi selengkapnya tentang Network Load Balancer, lihat [Membuat Network Load](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html) Balancer [dan Memperbarui jenis alamat IP untuk Network Load Balancer Anda di *Panduan Pengguna* untuk Network Load](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-ip-address-type.html) Balancer. Untuk informasi selengkapnya tentang Application Load Balancer, lihat [Membuat Application Load](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html) Balancer [dan Memperbarui jenis alamat IP untuk Application Load Balancer Anda di *Panduan Pengguna* untuk Application Load](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-ip-address-type.html) Balancers.
+ IPv6-hanya konfigurasi tidak didukung padaWindows. Anda harus menggunakan Linux Amazon ECS yang dioptimalkan AMIs untuk menjalankan tugas dalam konfigurasi IPv6 -only. Untuk informasi selengkapnya tentang Linux yang dioptimalkan Amazon ECS AMIs, lihat. [Linux Amazon ECS yang dioptimalkan AMIs](ecs-optimized_AMI.md)
+ Saat Anda meluncurkan instance container untuk menjalankan tugas dalam konfigurasi IPv6 -only, Anda harus menetapkan IPv6 alamat utama untuk instance dengan menggunakan parameter `--enable-primary-ipv6` EC2.
**catatan**  
Tanpa IPv6 alamat utama, tugas yang berjalan pada instance kontainer dalam mode jaringan host atau jembatan akan gagal didaftarkan dengan penyeimbang beban atau dengan. AWS Cloud Map

  *Untuk informasi selengkapnya tentang `--enable-primary-ipv6` untuk menjalankan instans Amazon EC2, lihat [run-instance](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) di Referensi Perintah.AWS CLI *

  Untuk informasi selengkapnya tentang meluncurkan instance kontainer menggunakan Konsol Manajemen AWS, lihat[Meluncurkan instans penampung Amazon ECS Linux](launch_container_instance.md).
+ Secara default, agen penampung Amazon ECS akan mencoba mendeteksi kompatibilitas instans kontainer untuk konfigurasi IPv6 -only dengan melihat default IPv4 dan IPv6 rute instance. Untuk mengganti perilaku ini, Anda dapat mengatur ` ECS_INSTANCE_IP_COMPATIBILITY` parameter ke `ipv4` atau `ipv6` dalam `/etc/ecs/ecs.config` file instance.
+ Tugas harus menggunakan versi `1.99.1` atau yang lebih baru dari agen kontainer. Untuk informasi tentang cara memeriksa versi agen yang digunakan instans Anda dan memperbaruinya jika diperlukan, lihat[Memperbarui agen kontainer Amazon ECS](ecs-agent-update.md).
+ Untuk tugas Amazon ECS dalam konfigurasi IPv6 -only untuk berkomunikasi dengan titik akhir IPv4 -only, Anda dapat mengatur DNS64 dan NAT64 untuk terjemahan alamat jaringan dari ke. IPv6 IPv4 Untuk informasi selengkapnya, lihat [DNS64 dan NAT64](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-nat64-dns64.html) di *Panduan Pengguna Amazon VPC*.
+ Beban kerja Amazon ECS dalam konfigurasi IPv6 -only harus menggunakan titik akhir URI image dualstack Amazon ECR saat menarik gambar dari Amazon ECR. Untuk informasi selengkapnya, lihat [Memulai dengan membuat permintaan IPv6 di](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-requests.html#ipv6-access-getting-started) *Panduan Pengguna Amazon Elastic Container Registry*.
**catatan**  
Amazon ECR tidak mendukung titik akhir VPC antarmuka dualstack yang dapat digunakan tugas dalam konfigurasi -only. IPv6 Untuk informasi selengkapnya, lihat [Memulai dengan membuat permintaan IPv6 di](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-requests.html#ipv6-access-getting-started) *Panduan Pengguna Amazon Elastic Container Registry*.
+ Amazon ECS Exec tidak didukung dalam konfigurasi IPv6 -only.

### Wilayah AWS yang mendukung mode IPv6 -only untuk Amazon ECS
<a name="networking-ipv6-only-regions"></a>

Anda dapat menjalankan tugas dalam konfigurasi IPv6 -only di AWS wilayah berikut yang tersedia di Amazon ECS:
+ AS Timur (Ohio)
+ AS Timur (Virginia Utara)
+ AS Barat (California Utara)
+ AS Barat (Oregon)
+ Afrika (Cape Town)
+ Asia Pasifik (Hong Kong)
+ Asia Pasifik (Hyderabad)
+ Asia Pasifik (Jakarta)
+ Asia Pasifik (Melbourne)
+ Asia Pasifik (Mumbai)
+ Asia Pasifik (Osaka)
+ Asia Pasifik (Seoul)
+ Asia Pasifik (Singapura)
+ Asia Pasifik (Sydney)
+ Asia Pasifik (Tokyo)
+ (Canada (Central)
+ Kanada Barat (Calgary)
+ China (Beijing)
+ Tiongkok (Ningxia)
+ Eropa (Frankfurt)
+ Eropa (London)
+ Eropa (Milan)
+ Eropa (Paris)
+ Eropa (Spanyol)
+ Israel (Tel Aviv)
+ Timur Tengah (Bahrain)
+ Timur Tengah (UEA)
+ Amerika Selatan (Sao Paulo)
+ AWS GovCloud (AS-Timur)
+ AWS GovCloud (AS-Barat)

# Alokasikan antarmuka jaringan untuk tugas Amazon ECS
<a name="task-networking-awsvpc"></a>

Fitur jaringan tugas yang disediakan oleh mode `awsvpc` jaringan memberikan tugas Amazon ECS properti jaringan yang sama dengan instans Amazon EC2. Menggunakan mode `awsvpc` jaringan menyederhanakan jaringan kontainer, karena Anda memiliki kontrol lebih besar atas bagaimana aplikasi Anda berkomunikasi satu sama lain dan layanan lain di dalam Anda VPCs. Mode `awsvpc` jaringan juga memberikan keamanan yang lebih besar untuk wadah Anda dengan memungkinkan Anda menggunakan grup keamanan dan alat pemantauan jaringan pada tingkat yang lebih terperinci dalam tugas Anda. Anda juga dapat menggunakan fitur jaringan Amazon EC2 lainnya seperti VPC Flow Logs untuk memantau lalu lintas ke dan dari tugas Anda. Selain itu, kontainer yang memiliki tugas yang sama dapat berkomunikasi melalui antarmuka `localhost`.

Task elastic network interface (ENI) adalah fitur Amazon ECS yang dikelola sepenuhnya. Amazon ECS membuat ENI dan menempelkannya ke instans Amazon EC2 host dengan grup keamanan yang ditentukan. Tugas mengirim dan menerima lalu lintas jaringan melalui ENI dengan cara yang sama seperti instans Amazon EC2 lakukan dengan antarmuka jaringan utama mereka. Setiap tugas ENI diberi IPv4 alamat pribadi secara default. Jika VPC Anda diaktifkan untuk mode dual-stack dan Anda menggunakan subnet dengan blok IPv6 CIDR, tugas ENI juga akan menerima alamat. IPv6 Setiap tugas hanya dapat memiliki satu ENI. 

ENI ini terlihat di konsol Amazon EC2 untuk akun Anda. Akun Anda tidak dapat melepaskan atau memodifikasi. ENIs Hal ini untuk mencegah penghapusan ENI disengaja yang berkaitan dengan tugas yang sedang berjalan. Anda dapat melihat informasi lampiran ENI untuk tugas di konsol Amazon ECS atau dengan operasi [DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html)API. Ketika tugas berhenti atau jika layanan menurunkan skala, tugas ENI terlepas dan dihapus.

Saat Anda membutuhkan peningkatan kepadatan ENI, gunakan pengaturan `awsvpcTrunking` akun. Amazon ECS juga membuat dan melampirkan antarmuka jaringan “trunk” untuk instance container Anda. Jaringan trunk sepenuhnya dikelola oleh Amazon ECS. Trunk ENI akan dihapus saat Anda menghentikan atau membatalkan pendaftaran instance container Anda dari klaster Amazon ECS. Untuk informasi selengkapnya tentang pengaturan `awsvpcTrunking` akun, lihat[Prasyarat](container-instance-eni.md#eni-trunking-launching).

Anda menentukan `awsvpc` dalam `networkMode` parameter definisi tugas. Untuk informasi selengkapnya, lihat [Mode jaringan](task_definition_parameters.md#network_mode). 

Kemudian, ketika Anda menjalankan tugas atau membuat layanan, gunakan `networkConfiguration` parameter yang menyertakan satu atau beberapa subnet untuk menempatkan tugas Anda dan satu atau lebih grup keamanan untuk dilampirkan ke ENI. Untuk informasi selengkapnya, lihat [Konfigurasi jaringan](service_definition_parameters.md#sd-networkconfiguration). Tugas ditempatkan pada instans Amazon EC2 yang kompatibel di Availability Zone yang sama dengan subnet tersebut, dan grup keamanan yang ditentukan dikaitkan dengan ENI yang disediakan untuk tugas tersebut.

## Pertimbangan Linux
<a name="linux"></a>

 Pertimbangkan hal berikut saat menggunakan sistem operasi Linux.
+ Jika Anda menggunakan instance p5.48xlarge dalam `awsvpc` mode, Anda tidak dapat menjalankan lebih dari 1 tugas pada instance tersebut.
+ Tugas dan layanan yang menggunakan mode `awsvpc` jaringan memerlukan peran terkait layanan Amazon ECS untuk memberi Amazon ECS izin untuk melakukan panggilan ke layanan lain AWS atas nama Anda. Peran ini dibuat untuk Anda secara otomatis saat membuat klaster atau jika Anda membuat atau memperbarui layanan, di Konsol Manajemen AWS. Untuk informasi selengkapnya, lihat [Menggunakan peran terkait layanan untuk Amazon ECS](using-service-linked-roles.md). Anda juga dapat membuat peran terkait layanan dengan perintah berikut: AWS CLI 

  ```
  aws iam [create-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html) --aws-service-name ecs.amazonaws.com
  ```
+ Instans Amazon EC2 Linux Anda memerlukan versi `1.15.0` atau yang lebih baru dari agen penampung untuk menjalankan tugas yang menggunakan mode `awsvpc` jaringan. Jika Anda menggunakan AMI Amazon ECS yang dioptimalkan, instans Anda memerlukan setidaknya `1.15.0-4` versi `ecs-init` paket juga.
+ Amazon ECS mengisi nama host tugas dengan nama host DNS (internal) yang disediakan Amazon saat opsi dan `enableDnsHostnames` opsi `enableDnsSupport` diaktifkan di VPC Anda. Jika opsi ini tidak diaktifkan, nama host DNS tugas disetel ke nama host acak. *Untuk informasi selengkapnya tentang pengaturan DNS untuk VPC, [lihat Menggunakan DNS dengan VPC Anda di Panduan Pengguna Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html).*
+ Setiap tugas Amazon ECS yang menggunakan mode `awsvpc` jaringan menerima elastic network interface (ENI) sendiri, yang dilampirkan ke instans Amazon EC2 yang menghostingnya. Ada kuota default untuk jumlah antarmuka jaringan yang dapat dilampirkan ke instans Amazon EC2 Linux. Antarmuka jaringan utama dihitung sebagai satu terhadap kuota itu. Misalnya, secara default, sebuah `c5.large` instance mungkin hanya memiliki hingga tiga ENIs yang dapat dilampirkan padanya. Antarmuka jaringan utama untuk instance dihitung sebagai satu. Anda dapat melampirkan dua tambahan ENIs ke instance. Karena setiap tugas yang menggunakan mode `awsvpc` jaringan memerlukan ENI, Anda biasanya hanya dapat menjalankan dua tugas tersebut pada jenis instance ini. Untuk informasi selengkapnya tentang batas ENI default untuk setiap jenis instans, lihat [alamat IP per antarmuka jaringan per jenis instans](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI) di *Panduan Pengguna Amazon EC2*.
+ Amazon ECS mendukung peluncuran instans Amazon EC2 Linux yang menggunakan tipe instans yang didukung dengan peningkatan kepadatan ENI. Saat Anda memilih setelan `awsvpcTrunking` akun dan mendaftarkan instans Amazon EC2 Linux yang menggunakan jenis instans ini ke klaster Anda, instans ini memiliki kuota ENI yang lebih tinggi. Menggunakan instans ini dengan kuota yang lebih tinggi ini berarti Anda dapat menempatkan lebih banyak tugas di setiap instans Amazon EC2 Linux. Untuk menggunakan peningkatan kepadatan ENI dengan fitur trunking, instans Amazon EC2 Anda harus menggunakan agen penampung `1.28.1` versi atau yang lebih baru. Jika Anda menggunakan AMI Amazon ECS yang dioptimalkan, instans Anda juga memerlukan setidaknya `1.28.1-2` versi paket. `ecs-init` Untuk informasi lebih lanjut tentang penyertaan pada pengaturan akun `awsvpcTrunking`, lihat [Akses fitur Amazon ECS dengan pengaturan akun](ecs-account-settings.md). Untuk informasi lebih lanjut tentang trunking ENI, lihat. [Meningkatkan antarmuka jaringan instans kontainer Amazon ECS Linux](container-instance-eni.md)
+ Saat menghosting tugas yang menggunakan mode `awsvpc` jaringan di instans Amazon EC2 Linux, tugas Anda ENIs tidak diberikan alamat IP publik. Untuk mengakses internet, tugas harus diluncurkan di subnet pribadi yang dikonfigurasi untuk menggunakan gateway NAT. Untuk informasi lebih lanjut, lihat [Gateway NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) dalam *Panduan Pengguna Amazon VPC*. Akses jaringan masuk harus dari dalam VPC yang menggunakan alamat IP pribadi atau dirutekan melalui penyeimbang beban dari dalam VPC. Tugas yang diluncurkan dalam subnet publik tidak memiliki akses ke internet.
+ Amazon ECS hanya mengenali ENI yang dilampirkan ke instans Amazon EC2 Linux Anda. Jika Anda ENIs melampirkan instans secara manual, Amazon ECS mungkin mencoba menambahkan tugas ke instans yang tidak memiliki cukup adaptor jaringan. Hal ini dapat mengakibatkan waktu tugas habis dan pindah ke status deprovisioning dan kemudian status berhenti. Kami menyarankan Anda untuk tidak ENIs melampirkan instans Anda secara manual.
+ Instans Amazon EC2 Linux harus terdaftar dengan `ecs.capability.task-eni` kemampuan yang harus dipertimbangkan untuk penempatan tugas dengan mode jaringan. `awsvpc` Instans yang menjalankan versi `1.15.0-4` atau yang lebih baru `ecs-init` terdaftar dengan atribut ini secara otomatis.
+ ENI yang dibuat dan dilampirkan ke instans Amazon EC2 Linux Anda tidak dapat dilepaskan secara manual atau dimodifikasi oleh akun Anda. Hal ini untuk mencegah menghapus ENI disengaja yang berhubungan dengan tugas yang sedang berjalan. Untuk melepaskan tugas, hentikan tugas. ENIs 
+ Ada batas 16 subnet dan 5 grup keamanan yang dapat ditentukan dalam `awsVpcConfiguration` saat menjalankan tugas atau membuat layanan yang menggunakan mode jaringan `awsvpc`. Untuk informasi selengkapnya, lihat [AwsVpcConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_AwsVpcConfiguration.html)di *Referensi API Amazon Elastic Container Service*.
+ Saat tugas dimulai dengan mode `awsvpc` jaringan, agen penampung Amazon ECS membuat `pause` wadah tambahan untuk setiap tugas sebelum memulai kontainer dalam definisi tugas. Kemudian mengkonfigurasi namespace jaringan `pause` wadah dengan menjalankan plugin CNI. [amazon-ecs-cni-plugins ](https://github.com/aws/amazon-ecs-cni-plugins) Agen kemudian memulai sisa kontainer dalam tugas sehingga mereka berbagi tumpukan jaringan kontainer `pause`. Ini berarti bahwa semua kontainer dalam tugas yang dialamatkan oleh alamat IP dari ENI, dan mereka dapat berkomunikasi satu sama lain melalui antarmuka `localhost`.
+ Layanan dengan tugas yang menggunakan mode `awsvpc` jaringan hanya mendukung Application Load Balancer dan Network Load Balancer. Saat Anda membuat grup target apa pun untuk layanan ini, Anda harus memilih `ip` sebagai jenis target. Jangan gunakan `instance`. Ini karena tugas yang menggunakan mode `awsvpc` jaringan dikaitkan dengan ENI, bukan dengan instans Amazon EC2 Linux. Untuk informasi selengkapnya, lihat [Menggunakan penyeimbangan beban untuk mendistribusikan lalu lintas layanan Amazon ECS](service-load-balancing.md).
+ Jika VPC Anda diperbarui untuk mengubah set opsi DHCP yang digunakannya, Anda tidak dapat menerapkan perubahan ini ke tugas yang ada. Mulai tugas baru dengan perubahan ini diterapkan padanya, verifikasi bahwa mereka berfungsi dengan benar, dan kemudian hentikan tugas yang ada untuk mengubah konfigurasi jaringan ini dengan aman.

## Pertimbangan Windows
<a name="windows"></a>

 Berikut ini adalah pertimbangan ketika Anda menggunakan sistem operasi Windows:
+ Instans kontainer menggunakan Amazon ECS yang dioptimalkan Windows Server 2016 AMI tidak dapat meng-host tugas yang menggunakan mode `awsvpc` jaringan. Jika Anda memiliki klaster yang berisi Amazon ECS yang dioptimalkan Windows Server 2016 AMIs dan Windows AMIs yang mendukung mode `awsvpc` jaringan, tugas yang menggunakan mode `awsvpc` jaringan tidak diluncurkan pada instance Windows 2016 Server. Sebaliknya, mereka diluncurkan pada instance yang mendukung mode `awsvpc` jaringan.
+ Instans Windows Amazon EC2 Anda memerlukan versi `1.57.1` atau yang lebih baru dari agen penampung untuk menggunakan CloudWatch metrik untuk wadah Windows yang menggunakan mode jaringan. `awsvpc`
+ Tugas dan layanan yang menggunakan mode `awsvpc` jaringan memerlukan peran terkait layanan Amazon ECS untuk memberi Amazon ECS izin untuk melakukan panggilan ke layanan lain AWS atas nama Anda. Peran ini dibuat untuk Anda secara otomatis ketika Anda membuat klaster, atau jika Anda membuat atau memperbarui layanan di Konsol Manajemen AWS. Untuk informasi selengkapnya, lihat [Menggunakan peran terkait layanan untuk Amazon ECS](using-service-linked-roles.md). Anda juga dapat membuat peran terkait layanan dengan perintah berikut AWS CLI .

  ```
  aws iam [create-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html) --aws-service-name ecs.amazonaws.com
  ```
+ Instans Windows Amazon EC2 Anda memerlukan versi `1.54.0` atau yang lebih baru dari agen penampung untuk menjalankan tugas yang menggunakan mode `awsvpc` jaringan. Saat Anda mem-bootstrap instance, Anda harus mengonfigurasi opsi yang diperlukan untuk mode `awsvpc` jaringan. Untuk informasi selengkapnya, lihat [Bootstrapping instans penampung Amazon ECS Windows untuk meneruskan data](bootstrap_windows_container_instance.md).
+ Amazon ECS mengisi nama host tugas dengan nama host DNS (internal) yang disediakan Amazon saat `enableDnsSupport` opsi `enableDnsHostnames` dan opsi diaktifkan di VPC Anda. Jika opsi ini tidak diaktifkan, nama host DNS tugas adalah nama host acak. *Untuk informasi selengkapnya tentang pengaturan DNS untuk VPC, [lihat Menggunakan DNS dengan VPC Anda di Panduan Pengguna Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html).*
+ Setiap tugas Amazon ECS yang menggunakan mode `awsvpc` jaringan menerima elastic network interface (ENI) sendiri, yang dilampirkan ke instans Amazon EC2 Windows yang menghostingnya. Ada kuota default untuk jumlah antarmuka jaringan yang dapat dilampirkan ke instans Windows Amazon EC2. Antarmuka jaringan utama dihitung sebagai satu terhadap kuota ini. Misalnya, secara default sebuah `c5.large` instance mungkin hanya memiliki hingga tiga yang ENIs melekat padanya. Antarmuka jaringan utama untuk instance dihitung sebagai salah satunya. Anda dapat melampirkan dua tambahan ENIs ke instance. Karena setiap tugas menggunakan mode jaringan `awsvpc` memerlukan ENI, Anda biasanya hanya dapat menjalankan dua tugas tersebut pada Tipe instans ini. Untuk informasi selengkapnya tentang batas ENI default untuk setiap jenis instans, lihat [alamat IP per antarmuka jaringan per jenis instans](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/using-eni.html#AvailableIpPerENI) di *Panduan Pengguna Amazon EC2*.
+ Saat menghosting tugas yang menggunakan mode `awsvpc` jaringan di instans Amazon EC2 Windows, tugas Anda ENIs tidak diberikan alamat IP publik. Untuk mengakses internet, luncurkan tugas di subnet pribadi yang dikonfigurasi untuk menggunakan gateway NAT. Untuk informasi lebih lanjut, lihat [Gateway NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) dalam *Panduan Pengguna Amazon VPC*. Akses jaringan masuk harus dari dalam VPC yang menggunakan alamat IP pribadi atau dirutekan melalui penyeimbang beban dari dalam VPC. Tugas yang diluncurkan dalam subnet publik tidak memiliki akses ke internet.
+ Amazon ECS hanya mengenali ENI yang telah dilampirkan ke instans Amazon EC2 Windows Anda. Jika Anda ENIs melampirkan instans secara manual, Amazon ECS mungkin mencoba menambahkan tugas ke instans yang tidak memiliki cukup adaptor jaringan. Hal ini dapat mengakibatkan waktu tugas habis dan pindah ke status deprovisioning dan kemudian status berhenti. Kami menyarankan Anda untuk tidak ENIs melampirkan instans Anda secara manual.
+ Instans Windows Amazon EC2 harus terdaftar dengan `ecs.capability.task-eni` kemampuan yang harus dipertimbangkan untuk penempatan tugas dengan mode jaringan. `awsvpc` 
+  Anda tidak dapat memodifikasi atau melepaskan ENI secara manual yang dibuat dan dilampirkan ke instans Windows Amazon EC2 Anda. Ini untuk mencegah Anda secara tidak sengaja menghapus ENI yang terkait dengan tugas yang sedang berjalan. Untuk melepaskan tugas, hentikan tugas. ENIs
+  Anda hanya dapat menentukan hingga 16 subnet dan 5 grup keamanan `awsVpcConfiguration` ketika Anda menjalankan tugas atau membuat layanan yang menggunakan mode `awsvpc` jaringan. Untuk informasi selengkapnya, lihat [AwsVpcConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_AwsVpcConfiguration.html)di *Referensi API Amazon Elastic Container Service*.
+ Saat tugas dimulai dengan mode `awsvpc` jaringan, agen penampung Amazon ECS membuat `pause` wadah tambahan untuk setiap tugas sebelum memulai kontainer dalam definisi tugas. Kemudian mengkonfigurasi namespace jaringan `pause` wadah dengan menjalankan plugin CNI. [amazon-ecs-cni-plugins ](https://github.com/aws/amazon-ecs-cni-plugins) Agen kemudian memulai sisa kontainer dalam tugas sehingga mereka berbagi tumpukan jaringan kontainer `pause`. Ini berarti bahwa semua kontainer dalam tugas yang dialamatkan oleh alamat IP dari ENI, dan mereka dapat berkomunikasi satu sama lain melalui antarmuka `localhost`.
+ Layanan dengan tugas yang menggunakan mode `awsvpc` jaringan hanya mendukung Application Load Balancer dan Network Load Balancer. Saat Anda membuat grup target apa pun untuk layanan ini, Anda harus memilih `ip` sebagai jenis target, bukan`instance`. Ini karena tugas yang menggunakan mode `awsvpc` jaringan dikaitkan dengan ENI, bukan dengan instans Windows Amazon EC2. Untuk informasi selengkapnya, lihat [Menggunakan penyeimbangan beban untuk mendistribusikan lalu lintas layanan Amazon ECS](service-load-balancing.md).
+ Jika VPC Anda diperbarui untuk mengubah set opsi DHCP yang digunakannya, Anda tidak dapat menerapkan perubahan ini ke tugas yang ada. Mulai tugas baru dengan perubahan ini diterapkan padanya, verifikasi bahwa mereka berfungsi dengan benar, dan kemudian hentikan tugas yang ada untuk mengubah konfigurasi jaringan ini dengan aman.
+ Berikut ini tidak didukung saat Anda menggunakan mode `awsvpc` jaringan dalam konfigurasi Windows EC2:
  + Konfigurasikan tumpukan dobel
  + IPv6
  + ENI trunking

## Menggunakan VPC dalam mode tumpukan dobel
<a name="task-networking-vpc-dual-stack"></a>

Saat menggunakan VPC dalam mode dual-stack, tugas Anda dapat berkomunikasi melalui, atau IPv4, atau IPv6 keduanya. IPv4 dan IPv6 alamat independen satu sama lain. Oleh karena itu Anda harus mengonfigurasi perutean dan keamanan di VPC Anda secara terpisah IPv4 untuk dan. IPv6 *Untuk informasi selengkapnya tentang cara mengonfigurasi VPC Anda untuk mode tumpukan ganda, lihat [Memigrasi ke dalam](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html) Panduan Pengguna VPC IPv6 Amazon.*

Jika Anda mengonfigurasi VPC Anda dengan gateway internet atau gateway internet khusus keluar, Anda dapat menggunakan VPC Anda dalam mode dual-stack. Dengan melakukan ini, tugas-tugas yang diberi IPv6 alamat dapat mengakses internet melalui gateway internet atau gateway internet khusus egress-. Gateway NAT bersifat opsional. *Untuk informasi selengkapnya, lihat [gateway Internet dan gateway](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html) internet khusus [eGress di Panduan Pengguna Amazon](https://docs.aws.amazon.com/vpc/latest/userguide/egress-only-internet-gateway.html) VPC.*

Tugas Amazon ECS diberikan IPv6 alamat jika kondisi berikut terpenuhi:
+ Instans Amazon EC2 Linux yang menghosting tugas menggunakan versi `1.45.0` atau yang lebih baru dari agen penampung. Untuk informasi tentang cara memeriksa versi agen yang digunakan instans Anda, dan memperbaruinya jika diperlukan, lihat[Memperbarui agen kontainer Amazon ECS](ecs-agent-update.md).
+ Pengaturan akun `dualStackIPv6` diaktifkan. Untuk informasi selengkapnya, lihat [Akses fitur Amazon ECS dengan pengaturan akun](ecs-account-settings.md).
+ Tugas Anda adalah menggunakan mode jaringan `awsvpc`.
+ VPC dan subnet Anda dikonfigurasi untuk. IPv6 Konfigurasi mencakup antarmuka jaringan yang dibuat di subnet yang ditentukan. *Untuk informasi selengkapnya tentang cara mengonfigurasi VPC Anda untuk mode dual-stack, lihat [Memigrasi ke IPv6 dan Memodifikasi atribut IPv6 pengalamatan untuk](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html) [subnet Anda di](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-ipv6) Panduan Pengguna Amazon VPC.*

# Petakan port kontainer Amazon ECS ke antarmuka jaringan instans EC2
<a name="networking-networkmode-host"></a>

Mode `host` jaringan hanya didukung untuk tugas Amazon ECS yang dihosting di instans Amazon EC2. Ini tidak didukung saat menggunakan Amazon ECS di Fargate.

Mode `host` jaringan adalah mode jaringan paling dasar yang didukung di Amazon ECS. Menggunakan mode host, jaringan kontainer terikat langsung ke host yang mendasari yang menjalankan wadah.

![\[Diagram yang menunjukkan arsitektur jaringan dengan kontainer menggunakan mode jaringan host.\]](http://docs.aws.amazon.com/id_id/AmazonECS/latest/developerguide/images/networkmode-host.png)


Asumsikan bahwa Anda menjalankan kontainer Node.js dengan aplikasi Express yang mendengarkan pada port yang `3000` mirip dengan yang diilustrasikan dalam diagram sebelumnya. Ketika mode `host` jaringan digunakan, kontainer menerima lalu lintas pada port 3000 menggunakan alamat IP dari instans Amazon EC2 host yang mendasarinya. Kami tidak menyarankan menggunakan mode ini.

Ada kelemahan signifikan untuk menggunakan mode jaringan ini. Anda tidak dapat menjalankan lebih dari satu instantiasi tugas pada setiap host. Ini karena hanya tugas pertama yang dapat mengikat ke port yang diperlukan pada instans Amazon EC2. Juga tidak ada cara untuk memetakan ulang port kontainer saat menggunakan mode `host` jaringan. Misalnya, jika aplikasi perlu mendengarkan nomor port tertentu, Anda tidak dapat memetakan ulang nomor port secara langsung. Sebagai gantinya, Anda harus mengelola konflik port apa pun dengan mengubah konfigurasi aplikasi.

Ada juga implikasi keamanan saat menggunakan mode `host` jaringan. Mode ini memungkinkan kontainer untuk meniru host, dan memungkinkan kontainer untuk terhubung ke layanan jaringan loopback pribadi pada host.

# Gunakan Docker jaringan virtual untuk tugas-tugas Amazon ECS Linux
<a name="networking-networkmode-bridge"></a>

Mode `bridge` jaringan hanya didukung untuk tugas Amazon ECS yang dihosting di instans Amazon EC2.

Dengan `bridge` mode, Anda menggunakan jembatan jaringan virtual untuk membuat lapisan antara host dan jaringan wadah. Dengan cara ini, Anda dapat membuat pemetaan port yang memetakan ulang port host ke port kontainer. Pemetaan dapat berupa statis atau dinamis.

![\[Diagram yang menunjukkan arsitektur jaringan menggunakan mode jaringan jembatan dengan pemetaan port statis.\]](http://docs.aws.amazon.com/id_id/AmazonECS/latest/developerguide/images/networkmode-bridge.png)


Dengan pemetaan port statis, Anda dapat secara eksplisit menentukan port host mana yang ingin Anda petakan ke port kontainer. Menggunakan contoh di atas, port `80` pada host sedang dipetakan ke port `3000` pada container. Untuk berkomunikasi dengan aplikasi kontainer, Anda mengirim lalu lintas ke port `80` ke alamat IP instans Amazon EC2. Dari perspektif aplikasi kontainer, ia melihat lalu lintas masuk di port. `3000`

Jika Anda hanya ingin mengubah port lalu lintas, maka pemetaan port statis cocok. Namun, ini masih memiliki kelemahan yang sama dengan menggunakan mode `host` jaringan. Anda tidak dapat menjalankan lebih dari satu instantiasi tugas pada setiap host. Ini karena pemetaan port statis hanya memungkinkan satu kontainer untuk dipetakan ke port 80.

Untuk mengatasi masalah ini, pertimbangkan untuk menggunakan mode `bridge` jaringan dengan pemetaan port dinamis seperti yang ditunjukkan pada diagram berikut.

![\[Diagram yang menunjukkan arsitektur jaringan menggunakan mode jaringan jembatan dengan pemetaan port dinamis.\]](http://docs.aws.amazon.com/id_id/AmazonECS/latest/developerguide/images/networkmode-bridge-dynamic.png)


Dengan tidak menentukan port host dalam pemetaan port, Anda dapat Docker memilih port acak yang tidak digunakan dari rentang port sementara dan menetapkannya sebagai port host publik untuk wadah. Misalnya, aplikasi Node.js yang mendengarkan pada port `3000` pada kontainer mungkin diberi port nomor tinggi acak seperti `47760` pada host Amazon EC2. Melakukan ini berarti Anda dapat menjalankan beberapa salinan wadah itu di host. Selain itu, setiap kontainer dapat diberi port sendiri di host. Setiap salinan kontainer menerima lalu lintas di pelabuhan`3000`. Namun, klien yang mengirim lalu lintas ke kontainer ini menggunakan port host yang ditetapkan secara acak.

Amazon ECS membantu Anda melacak port yang ditetapkan secara acak untuk setiap tugas. Hal ini dilakukan dengan secara otomatis memperbarui kelompok target load balancer dan penemuan AWS Cloud Map layanan untuk memiliki daftar alamat IP tugas dan port. Ini membuatnya lebih mudah untuk menggunakan layanan yang beroperasi menggunakan `bridge` mode dengan port dinamis.

Namun, salah satu kelemahan menggunakan mode `bridge` jaringan adalah sulit untuk mengunci komunikasi layanan ke layanan. Karena layanan mungkin ditetapkan ke port acak dan tidak terpakai, maka perlu untuk membuka rentang port yang luas antar host. Namun, tidak mudah untuk membuat aturan khusus sehingga layanan tertentu hanya dapat berkomunikasi dengan satu layanan spesifik lainnya. Layanan tidak memiliki port khusus untuk digunakan untuk aturan jaringan grup keamanan.

## Mengkonfigurasi mode jaringan jembatan untuk beban kerja IPv6 -only
<a name="networking-networkmode-bridge-ipv6-only"></a>

Untuk mengonfigurasi `bridge` mode komunikasi IPv6, Anda harus memperbarui pengaturan Docker daemon. Perbarui `/etc/docker/daemon.json` dengan yang berikut ini:

```
{
  "ipv6": true,
  "fixed-cidr-v6": "2001:db8:1::/64",
  "ip6tables": true,
  "experimental": true
}
```

Setelah memperbarui pengaturan Docker daemon, Anda harus memulai ulang daemon.

**catatan**  
Saat Anda memperbarui dan memulai ulang daemon, Docker aktifkan IPv6 penerusan pada instance, yang dapat mengakibatkan hilangnya rute default pada instance yang menggunakan Amazon Linux 2 AMI. Untuk menghindari hal ini, gunakan perintah berikut untuk menambahkan rute default melalui IPv6 gateway subnet.  

```
ip route add default via FE80:EC2::1 dev eth0 metric 100
```

# Opsi jaringan tugas Amazon ECS untuk Fargate
<a name="fargate-task-networking"></a>

Secara default, setiap tugas Amazon ECS di Fargate disediakan elastic network interface (ENI) dengan alamat IP pribadi utama. Saat menggunakan subnet publik, Anda dapat secara opsional menetapkan alamat IP publik ke ENI tugas. Jika VPC Anda dikonfigurasi untuk mode dual-stack dan Anda menggunakan subnet dengan blok IPv6 CIDR, ENI tugas Anda juga menerima alamat. IPv6 Sebuah tugas hanya dapat memiliki satu ENI yang terkait dengannya pada suatu waktu. Wadah yang termasuk dalam tugas yang sama juga dapat berkomunikasi melalui `localhost` antarmuka. Untuk informasi selengkapnya tentang VPCs dan subnet, lihat [Cara kerja Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/how-it-works.html) di Panduan Pengguna *Amazon VPC*.

Untuk tugas di Fargate untuk menarik gambar kontainer, tugas harus memiliki rute ke internet. Berikut ini menjelaskan bagaimana Anda dapat memverifikasi bahwa tugas Anda memiliki rute ke internet.
+ Saat menggunakan subnet publik, Anda dapat menetapkan alamat IP publik ke ENI tugas.
+ Saat menggunakan subnet privat, subnet bisa memiliki lampiran gateway NAT.
+ Saat menggunakan gambar kontainer yang di-host di Amazon ECR, Anda dapat mengonfigurasi Amazon ECR untuk menggunakan titik akhir VPC antarmuka dan penarikan gambar terjadi di atas alamat pribadi tugas. IPv4 Untuk informasi selengkapnya, lihat [Antarmuka Amazon ECR VPC endpoint AWS PrivateLink()](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html) di Panduan Pengguna *Amazon Elastic Container Registry*.

Karena setiap tugas mendapatkan ENI sendiri, Anda dapat menggunakan fitur jaringan seperti VPC Flow Logs, yang dapat Anda gunakan untuk memantau lalu lintas ke dan dari tugas Anda. Untuk informasi selengkapnya, lihat [Log Alur VPC](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) di *Panduan Pengguna Amazon VPC*.

Anda juga bisa memanfaatkannya AWS PrivateLink. Anda dapat mengonfigurasi titik akhir antarmuka VPC sehingga Anda dapat mengakses Amazon ECS APIs melalui alamat IP pribadi. AWS PrivateLink membatasi semua lalu lintas jaringan antara VPC Anda dan Amazon ECS ke jaringan Amazon. Anda tidak memerlukan sebuah gateway internet, perangkat NAT, atau gateway privat virtual. Untuk informasi selengkapnya, lihat [Titik akhir AWS PrivateLink VPC antarmuka Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/vpc-endpoints.html) ().

Untuk contoh cara menggunakan `NetworkConfiguration` sumber daya CloudFormation, lihat[CloudFormation contoh template untuk Amazon ECS](working-with-templates.md).

 ENIs Yang dibuat sepenuhnya dikelola oleh AWS Fargate. Selain itu, ada kebijakan IAM terkait yang digunakan untuk memberikan izin untuk Fargate. Untuk tugas yang menggunakan versi platform Fargate `1.4.0` atau yang lebih baru, tugas menerima ENI tunggal (disebut sebagai tugas ENI) dan semua lalu lintas jaringan mengalir melalui ENI tersebut dalam VPC Anda. Lalu lintas ini direkam dalam log aliran VPC Anda. Untuk tugas yang menggunakan versi platform Fargate `1.3.0` dan sebelumnya, selain tugas ENI, tugas juga menerima ENI milik Fargate terpisah, yang digunakan untuk beberapa lalu lintas jaringan yang tidak terlihat di log aliran VPC. Tabel berikut menjelaskan perilaku lalu lintas jaringan dan kebijakan IAM yang diperlukan untuk setiap versi platform.


|  Tindakan  |  Arus lalu lintas dengan versi platform Linux `1.3.0` dan sebelumnya  |  Arus lalu lintas dengan versi platform Linux `1.4.0`  |  Arus lalu lintas dengan versi platform Windows `1.0.0`  |  Izin IAM  | 
| --- | --- | --- | --- | --- | 
|  Mengambil kredensyal login Amazon ECR  |  Fargate dimiliki ENI  |  ENI tugas  |  ENI tugas  |  Peran IAM eksekusi tugas  | 
|  Tarikan citra  |  ENI tugas  |  ENI tugas  |  ENI tugas  |  Peran IAM eksekusi tugas  | 
|  Mengirim log melalui driver log  |  ENI tugas  |  ENI tugas  |  ENI tugas  |  Peran IAM eksekusi tugas  | 
|  Mengirim log melalui FireLens Amazon ECS  |  ENI tugas  |  ENI tugas  |  ENI tugas  |  Peran IAM tugas  | 
|  Mengambil rahasia dari Secrets Manager atau Systems Manager  |  Fargate dimiliki ENI  |  ENI tugas  |  ENI tugas  |  Peran IAM eksekusi tugas  | 
|  Lalu lintas sistem file Amazon EFS  |  Tidak tersedia  |  ENI tugas  |  ENI tugas  |  Peran IAM tugas  | 
|  Lalu lintas aplikasi  |  ENI tugas  |  ENI tugas  |  ENI tugas  |  Peran IAM tugas  | 

## Pertimbangan-pertimbangan
<a name="fargate-task-networking-considerations"></a>

Pertimbangkan hal berikut saat menggunakan jaringan tugas.
+ Peran terkait layanan Amazon ECS diperlukan untuk memberi Amazon ECS izin untuk melakukan panggilan ke layanan lain AWS atas nama Anda. Peran ini dibuat untuk Anda ketika Anda membuat klaster atau jika Anda membuat atau memperbarui layanan di Konsol Manajemen AWS. Untuk informasi selengkapnya, lihat [Menggunakan peran terkait layanan untuk Amazon ECS](using-service-linked-roles.md). Anda juga dapat membuat peran terkait layanan menggunakan perintah berikut AWS CLI .

  ```
  aws iam [create-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html) --aws-service-name ecs.amazonaws.com
  ```
+ Amazon ECS mengisi nama host tugas dengan nama host DNS yang disediakan Amazon saat `enableDnsSupport` opsi `enableDnsHostnames` dan opsi diaktifkan di VPC Anda. Jika opsi ini tidak diaktifkan, nama host DNS tugas disetel ke nama host acak. *Untuk informasi selengkapnya tentang pengaturan DNS untuk VPC, [lihat Menggunakan DNS dengan VPC Anda di Panduan Pengguna Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html).*
+ Anda hanya dapat menentukan hingga 16 subnet dan 5 grup keamanan untuk`awsVpcConfiguration`. Untuk informasi selengkapnya, lihat [AwsVpcConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_AwsVpcConfiguration.html)di *Referensi API Amazon Elastic Container Service*.
+ Anda tidak dapat secara manual melepaskan atau memodifikasi ENIs yang dibuat dan dilampirkan oleh Fargate. Ini untuk mencegah penghapusan ENI yang tidak disengaja yang terkait dengan tugas yang sedang berjalan. Untuk melepaskan tugas, hentikan tugas. ENIs 
+ Jika subnet VPC diperbarui untuk mengubah set opsi DHCP yang digunakannya, Anda juga tidak dapat menerapkan perubahan ini ke tugas yang ada yang menggunakan VPC. Mulai tugas baru, yang akan menerima pengaturan baru untuk bermigrasi dengan lancar saat menguji perubahan baru dan kemudian menghentikan yang lama, jika tidak diperlukan rollback.
+ Berikut ini berlaku untuk tugas yang dijalankan pada versi platform Fargate `1.4.0` atau yang lebih baru untuk Linux atau `1.0.0` untuk Windows. Tugas yang diluncurkan dalam subnet dual-stack menerima IPv4 alamat dan alamat. IPv6 Tugas yang diluncurkan di subnet IPv6 -only hanya menerima alamat. IPv6
+ Untuk tugas yang menggunakan versi platform `1.4.0` atau yang lebih baru untuk Linux atau `1.0.0` Windows, tugas ENIs mendukung bingkai jumbo. Antarmuka jaringan dikonfigurasi dengan unit transmisi maksimum (MTU), yang merupakan ukuran muatan terbesar yang muat dalam satu frame. Semakin besar MTU, semakin banyak muatan aplikasi yang termuat dalam satu frame, yang mengurangi overhead per frame dan meningkatkan efisiensi. Mendukung bingkai jumbo mengurangi overhead saat jalur jaringan antara tugas Anda dan tujuan mendukung bingkai jumbo.
+ Layanan dengan tugas yang menggunakan Fargate hanya mendukung Application Load Balancer dan Network Load Balancer. Classic Load Balancer tidak didukung. Saat Anda membuat grup target apa pun, Anda harus memilih `ip` sebagai jenis target, bukan`instance`. Untuk informasi selengkapnya, lihat [Menggunakan penyeimbangan beban untuk mendistribusikan lalu lintas layanan Amazon ECS](service-load-balancing.md).

## Menggunakan VPC dalam mode tumpukan dobel
<a name="fargate-task-networking-vpc-dual-stack"></a>

Saat menggunakan VPC dalam mode dual-stack, tugas Anda dapat berkomunikasi melalui IPv4 atau, atau IPv6 keduanya. IPv4 dan IPv6 alamat independen satu sama lain dan Anda harus mengonfigurasi perutean dan keamanan di VPC Anda secara terpisah IPv4 untuk dan. IPv6 Untuk informasi selengkapnya tentang mengonfigurasi VPC Anda untuk mode tumpukan ganda, [lihat Memigrasi ke IPv6 dalam Panduan Pengguna](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html) VPC *Amazon*.

Jika kondisi berikut terpenuhi, tugas Amazon ECS di Fargate diberi IPv6 alamat:
+ Setelan `dualStackIPv6` akun Amazon ECS Anda diaktifkan (`enabled`) untuk prinsipal IAM yang meluncurkan tugas Anda di Wilayah tempat Anda meluncurkan tugas. Pengaturan ini hanya dapat dimodifikasi menggunakan API atau AWS CLI. Anda memiliki opsi untuk mengaktifkan pengaturan ini untuk prinsipal IAM tertentu di akun Anda atau untuk seluruh akun Anda dengan menetapkan pengaturan default akun Anda. Untuk informasi selengkapnya, lihat [Akses fitur Amazon ECS dengan pengaturan akun](ecs-account-settings.md).
+ VPC dan subnet Anda diaktifkan untuk. IPv6 *Untuk informasi selengkapnya tentang cara mengonfigurasi VPC Anda untuk mode tumpukan ganda, lihat [Memigrasi ke dalam](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html) Panduan Pengguna VPC IPv6 Amazon.*
+ Subnet Anda diaktifkan untuk alamat penetapan otomatis IPv6 . Untuk informasi selengkapnya tentang cara mengonfigurasi subnet, lihat [Memodifikasi atribut IPv6 pengalamatan untuk subnet Anda di Panduan](https://docs.aws.amazon.com/vpc/latest/userguide/modify-subnets.html) Pengguna Amazon *VPC*.
+ Tugas atau layanan menggunakan versi platform Fargate `1.4.0` atau yang lebih baru untuk Linux.

Untuk tugas Amazon ECS di Fargate yang berjalan di VPC dalam mode dual-stack, untuk berkomunikasi dengan layanan ketergantungan yang digunakan dalam proses peluncuran tugas seperti ECR, SSM SecretManager dan, tabel rute subnet publik membutuhkan rute (0.0.0.0/0) ke gateway internet dan tabel rute subnet pribadi IPv4 membutuhkan rute (0.0.0.0/0) ke gateway NAT. IPv4 Untuk informasi selengkapnya, lihat [gateway Internet dan gateway](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html) [NAT di Panduan Pengguna](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) *Amazon* VPC. 

Untuk contoh cara mengonfigurasi VPC dual-stack, lihat Contoh konfigurasi VPC [dual-stack](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-example.html). 

## Menggunakan VPC dalam IPv6 mode -only
<a name="fargate-task-networking-vpc-ipv6-only"></a>

Dalam konfigurasi IPv6 -only, tugas Amazon ECS Anda berkomunikasi secara eksklusif. IPv6 Untuk mengatur VPCs dan subnet untuk konfigurasi IPv6 -only, Anda harus menambahkan blok IPv6 CIDR ke VPC dan membuat subnet yang hanya menyertakan blok CIDR. IPv6 Untuk informasi selengkapnya, lihat [ IPv6 Menambahkan dukungan untuk VPC Anda](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html) dan [Membuat subnet di Panduan](https://docs.aws.amazon.com/vpc/latest/userguide/create-subnets.html) Pengguna Amazon *VPC*. Anda juga harus memperbarui tabel rute dengan IPv6 target dan mengonfigurasi grup keamanan dengan IPv6 aturan. Untuk informasi selengkapnya, lihat [Mengonfigurasi tabel rute](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html) dan [Mengonfigurasi aturan grup keamanan](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-security-group-rules.html) di *Panduan Pengguna Amazon VPC*.

Pertimbangan berikut berlaku untuk instans Mac:
+ Anda dapat memperbarui layanan Amazon ECS IPv4 -only atau dualstack ke IPv6 konfigurasi -only dengan memperbarui layanan secara langsung untuk IPv6 menggunakan subnet -only atau dengan membuat layanan IPv6 paralel -only dan menggunakan penerapan biru-hijau Amazon ECS untuk mengalihkan lalu lintas ke layanan baru. Untuk informasi selengkapnya tentang penerapan biru-hijau Amazon ECS, lihat. [Penerapan Amazon ECS blue/green](deployment-type-blue-green.md)
+ Layanan Amazon ECS IPv6 khusus harus menggunakan penyeimbang beban dualstack dengan grup target. IPv6 Jika Anda memigrasikan layanan Amazon ECS yang ada di belakang Application Load Balancer atau Network Load Balancer, Anda dapat membuat penyeimbang beban dualstack baru dan mengalihkan lalu lintas dari penyeimbang beban lama, atau memperbarui jenis alamat IP penyeimbang beban yang ada.

   Untuk informasi selengkapnya tentang Network Load Balancer, lihat [Membuat Network Load](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html) Balancer [dan Memperbarui jenis alamat IP untuk Network Load Balancer Anda di *Panduan Pengguna* untuk Network Load](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-ip-address-type.html) Balancer. Untuk informasi selengkapnya tentang Application Load Balancer, lihat [Membuat Application Load](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html) Balancer [dan Memperbarui jenis alamat IP untuk Application Load Balancer Anda di *Panduan Pengguna* untuk Application Load](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-ip-address-type.html) Balancers.
+ IPv6-hanya konfigurasi tidak didukung padaWindows.
+ Untuk tugas Amazon ECS dalam konfigurasi IPv6 -only untuk berkomunikasi dengan titik akhir IPv4 -only, Anda dapat mengatur DNS64 dan NAT64 untuk terjemahan alamat jaringan dari ke. IPv6 IPv4 Untuk informasi selengkapnya, lihat [DNS64 dan NAT64](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-nat64-dns64.html) di *Panduan Pengguna Amazon VPC*.
+ IPv6Konfigurasi -only didukung pada `1.4.0` versi platform Fargate atau yang lebih baru.
+ Beban kerja Amazon ECS dalam konfigurasi IPv6 -only harus menggunakan titik akhir URI image dualstack Amazon ECR saat menarik gambar dari Amazon ECR. Untuk informasi selengkapnya, lihat [Memulai dengan membuat permintaan IPv6 di](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-requests.html#ipv6-access-getting-started) *Panduan Pengguna Amazon Elastic Container Registry*.
**catatan**  
Amazon ECR tidak mendukung titik akhir VPC antarmuka dualstack yang dapat digunakan tugas dalam konfigurasi -only. IPv6 Untuk informasi selengkapnya, lihat [Memulai dengan membuat permintaan IPv6 di](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-requests.html#ipv6-access-getting-started) *Panduan Pengguna Amazon Elastic Container Registry*.
+ Amazon ECS Exec tidak didukung dalam konfigurasi IPv6 -only.
+ Amazon CloudWatch tidak mendukung titik akhir FIPS dualstack yang dapat digunakan untuk memantau tugas Amazon ECS dalam konfigurasi IPv6 -only yang menggunakan kepatuhan FIPS-140. Untuk informasi lebih lanjut tentang FIPS-140, lihat. [AWS Fargate Standar Pemrosesan Informasi Federal (FIPS-140)](ecs-fips-compliance.md)

### Wilayah AWS yang mendukung mode IPv6 -only untuk Amazon ECS
<a name="fargate-task-networking-ipv6-only-regions"></a>

Anda dapat menjalankan tugas dalam konfigurasi IPv6 -only berikut ini Wilayah AWS yang tersedia di Amazon ECS:
+ AS Timur (Ohio)
+ AS Timur (Virginia Utara)
+ AS Barat (California Utara)
+ AS Barat (Oregon)
+ Afrika (Cape Town)
+ Asia Pasifik (Hong Kong)
+ Asia Pasifik (Hyderabad)
+ Asia Pasifik (Jakarta)
+ Asia Pasifik (Melbourne)
+ Asia Pasifik (Mumbai)
+ Asia Pasifik (Osaka)
+ Asia Pasifik (Seoul)
+ Asia Pasifik (Singapura)
+ Asia Pasifik (Sydney)
+ Asia Pasifik (Tokyo)
+ (Canada (Central)
+ Kanada Barat (Calgary)
+ China (Beijing)
+ Tiongkok (Ningxia)
+ Eropa (Frankfurt)
+ Eropa (London)
+ Eropa (Milan)
+ Eropa (Paris)
+ Eropa (Spanyol)
+ Israel (Tel Aviv)
+ Timur Tengah (Bahrain)
+ Timur Tengah (UEA)
+ Amerika Selatan (Sao Paulo)
+ AWS GovCloud (AS-Timur)
+ AWS GovCloud (AS-Barat)

# Opsi penyimpanan untuk tugas Amazon ECS
<a name="using_data_volumes"></a>

Amazon ECS memberi Anda opsi penyimpanan easy-to-use data yang fleksibel, hemat biaya, dan tergantung pada kebutuhan Anda. Amazon ECS mendukung opsi volume data berikut untuk kontainer:


| Volume data | Kapasitas yang didukung | Sistem operasi yang didukung | Kegigihan penyimpanan | Kasus penggunaan | 
| --- | --- | --- | --- | --- | 
| Amazon Elastic Block Store (Amazon EBS) | Fargate, Amazon EC2, Instans yang Dikelola Amazon ECS | Linux, Windows (hanya di Amazon EC2) | Dapat dipertahankan saat dilampirkan ke tugas mandiri. Ephemeral ketika dilampirkan pada tugas yang dikelola oleh layanan. | Volume Amazon EBS menyediakan penyimpanan blok yang hemat biaya, tahan lama, dan berkinerja tinggi untuk beban kerja kontainer intensif data. Kasus penggunaan umum termasuk beban kerja transaksional seperti database, desktop virtual dan volume root, dan beban kerja intensif throughput seperti pemrosesan log dan beban kerja ETL. Untuk informasi selengkapnya, lihat [Gunakan volume Amazon EBS dengan Amazon ECS](ebs-volumes.md). | 
| Amazon Elastic File System (Amazon EFS) | Fargate, Amazon EC2, Instans yang Dikelola Amazon ECS | Linux | Persisten | Volume Amazon EFS menyediakan penyimpanan file bersama yang sederhana, dapat diskalakan, dan persisten untuk digunakan dengan tugas Amazon ECS Anda yang tumbuh dan menyusut secara otomatis saat Anda menambahkan dan menghapus file. Volume Amazon EFS mendukung konkurensi dan berguna untuk aplikasi kontainer yang menskalakan secara horizontal dan membutuhkan fungsionalitas penyimpanan seperti latensi rendah, throughput tinggi, dan konsistensi. read-after-write Kasus penggunaan umum termasuk beban kerja seperti analisis data, pemrosesan media, manajemen konten, dan penayangan web. Untuk informasi selengkapnya, lihat [Gunakan volume Amazon EFS dengan Amazon ECS](efs-volumes.md). | 
| Amazon FSx untuk Server File Windows | Amazon EC2 | Windows | Persisten | FSx untuk Windows File Server volume menyediakan server file Windows yang dikelola sepenuhnya yang dapat Anda gunakan untuk menyediakan tugas Windows Anda yang memerlukan penyimpanan file persisten, didistribusikan, dibagikan, dan statis. Kasus penggunaan umum termasuk aplikasi.NET yang mungkin memerlukan folder lokal sebagai penyimpanan persisten untuk menyimpan output aplikasi. Amazon FSx untuk Windows File Server menawarkan folder lokal dalam wadah yang memungkinkan beberapa kontainer untuk membaca-tulis pada sistem file yang sama yang didukung oleh SMB Share. Untuk informasi selengkapnya, lihat [Gunakan FSx untuk volume Server File Windows dengan Amazon ECS](wfsx-volumes.md). | 
| Amazon FSx untuk NetApp ONTAP | Amazon EC2 | Linux | Persisten | Amazon FSx untuk volume NetApp ONTAP menyediakan sistem file NetApp ONTAP terkelola sepenuhnya yang dapat Anda gunakan untuk menyediakan tugas Linux Anda yang memerlukan penyimpanan file bersama yang persisten, berkinerja tinggi, dan kaya fitur. Amazon FSx untuk NetApp ONTAP mendukung protokol NFS dan SMB dan menyediakan fitur tingkat perusahaan seperti snapshot, kloning, dan deduplikasi data. Kasus penggunaan umum termasuk beban kerja komputasi berkinerja tinggi, repositori konten, dan aplikasi yang membutuhkan penyimpanan bersama yang sesuai dengan POSIX. Untuk informasi selengkapnya, lihat [Memasang Amazon FSx untuk sistem file NetApp ONTAP dari wadah Amazon ECS.](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/mount-ontap-ecs-containers.html) | 
| Volume Docker | Amazon EC2 | Windows, Linux | Persisten | Volume Docker adalah fitur runtime kontainer Docker yang memungkinkan kontainer menyimpan data dengan memasang direktori dari sistem file host. Driver volume Docker (juga disebut sebagai plugin) digunakan untuk mengintegrasikan volume kontainer dengan sistem penyimpanan eksternal. Volume Docker dapat dikelola oleh driver pihak ketiga atau oleh local driver bawaan. Kasus penggunaan umum untuk volume Docker termasuk menyediakan volume data persisten atau volume berbagi di lokasi yang berbeda pada kontainer yang berbeda pada instance kontainer yang sama. Untuk informasi selengkapnya, lihat [Gunakan volume Docker dengan Amazon ECS](docker-volumes.md). | 
| Pemasangan terikat | Fargate, Amazon EC2, Instans yang Dikelola Amazon ECS | Windows, Linux | Fana | Bind mount terdiri dari file atau direktori pada host, seperti instans Amazon EC2 AWS Fargate atau, yang dipasang ke wadah. Kasus penggunaan umum untuk pemasangan pengikat termasuk berbagi volume dari wadah sumber dengan wadah lain dalam tugas yang sama, atau memasang volume host atau volume kosong dalam satu atau lebih wadah. Untuk informasi selengkapnya, lihat [Gunakan bind mount dengan Amazon ECS](bind-mounts.md). | 

# Gunakan volume Amazon EBS dengan Amazon ECS
<a name="ebs-volumes"></a>

Volume Amazon Elastic Block Store (Amazon EBS) menyediakan penyimpanan blok berkinerja tinggi yang sangat tersedia, hemat biaya, tahan lama, dan berkinerja tinggi untuk beban kerja intensif data. Volume Amazon EBS dapat digunakan dengan tugas Amazon ECS untuk throughput tinggi dan aplikasi intensif transaksi. Untuk informasi selengkapnya tentang volume Amazon EBS, lihat [volume Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volumes.html) di Panduan Pengguna *Amazon EBS*.

Volume Amazon EBS yang dilampirkan ke tugas Amazon ECS dikelola oleh Amazon ECS atas nama Anda. Selama peluncuran tugas mandiri, Anda dapat memberikan konfigurasi yang akan digunakan untuk melampirkan satu volume EBS ke tugas. Selama pembuatan atau pembaruan layanan, Anda dapat memberikan konfigurasi yang akan digunakan untuk melampirkan satu volume EBS per tugas ke setiap tugas yang dikelola oleh layanan Amazon ECS. Anda dapat mengonfigurasi volume baru yang kosong untuk lampiran, atau Anda dapat menggunakan snapshot untuk memuat data dari volume yang ada.

**catatan**  
Bila Anda menggunakan snapshot untuk mengonfigurasi volume, Anda dapat menentukan`volumeInitializationRate`, dalam MIB/s, di mana data diambil dari snapshot untuk membuat volume yang sepenuhnya diinisialisasi dalam jumlah waktu yang dapat diprediksi. Untuk informasi selengkapnya tentang inisialisasi volume, lihat [Menginisialisasi volume Amazon EBS di Panduan](https://docs.aws.amazon.com/ebs/latest/userguide/initalize-volume.html) Pengguna *Amazon EBS*. Untuk informasi selengkapnya tentang mengonfigurasi volume Amazon EBS, lihat [Tunda konfigurasi volume untuk waktu peluncuran dalam definisi tugas Amazon ECS](specify-ebs-config.md) dan. [Tentukan konfigurasi volume Amazon EBS pada penerapan Amazon ECS](configure-ebs-volume.md)

Konfigurasi volume ditangguhkan untuk waktu peluncuran menggunakan `configuredAtLaunch` parameter dalam definisi tugas. Dengan menyediakan konfigurasi volume pada waktu peluncuran dan bukan dalam definisi tugas, Anda dapat membuat definisi tugas yang tidak dibatasi untuk tipe volume data tertentu atau pengaturan volume EBS tertentu. Anda kemudian dapat menggunakan kembali definisi tugas Anda di berbagai lingkungan runtime. Misalnya, Anda dapat memberikan lebih banyak throughput selama penerapan untuk beban kerja produksi Anda daripada lingkungan pra-prod Anda.

 Volume Amazon EBS yang dilampirkan ke tugas dapat dienkripsi dengan kunci AWS Key Management Service (AWS KMS) untuk melindungi data Anda. Untuk informasi selengkapnya, lihat [Enkripsi data yang disimpan dalam volume Amazon EBS yang dilampirkan ke tugas Amazon ECS](ebs-kms-encryption.md).

Untuk memantau kinerja volume, Anda juga dapat menggunakan CloudWatch metrik Amazon. Untuk informasi selengkapnya tentang metrik Amazon ECS untuk volume Amazon EBS, lihat dan metrik [Metrik Amazon ECS CloudWatch](available-metrics.md) [Amazon ECS Container](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-metrics-ECS.html) Insights.

Melampirkan volume Amazon EBS ke tugas didukung di semua komersial dan China yang [Wilayah AWS](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html?icmpid=docs_homepage_addtlrcs#region)mendukung Amazon ECS.

## Sistem operasi dan kapasitas yang didukung
<a name="ebs-volumes-configuration"></a>

Tabel berikut menyediakan sistem operasi yang didukung dan konfigurasi kapasitas.


| Kapasitas | Linux  | Windows | 
| --- | --- | --- | 
| Fargate |  Volume Amazon EBS didukung pada versi platform 1.4.0 atau yang lebih baru (Linux). Untuk informasi selengkapnya, lihat [Versi platform Fargate untuk Amazon ECS](platform-fargate.md). | Tidak didukung | 
| EC2 | Volume Amazon EBS didukung untuk tugas yang dihosting pada instans Nitro berbasis dengan Amazon Machine Images () yang dioptimalkan Amazon ECS. AMIs Untuk informasi selengkapnya tentang jenis instans, lihat [Jenis instans](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) di Panduan Pengguna Amazon EC2. Volume Amazon EBS didukung pada `20231219` AMI yang dioptimalkan ECS atau versi lebih baru. Untuk informasi selengkapnya, lihat [Mengambil metadata AMI yang dioptimalkan Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/retrieve-ecs-optimized_AMI.html). | Tugas yang dihosting pada instans Nitro berbasis dengan Amazon Machine Images AMIs () yang dioptimalkan Amazon ECS. Untuk informasi selengkapnya tentang jenis instans, lihat [Jenis instans](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) di Panduan Pengguna Amazon EC2. Volume Amazon EBS didukung pada `20241017` AMI yang dioptimalkan ECS atau versi lebih baru. Untuk informasi selengkapnya, lihat [Mengambil metadata Windows AMI yang dioptimalkan Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/retrieve-ecs-optimized_windows_AMI.html). | 
| Instans Terkelola Amazon ECS | Volume Amazon EBS didukung untuk tugas yang dihosting di Instans Terkelola Amazon ECS di Linux. | Tidak didukung | 

## Pertimbangan-pertimbangan
<a name="ebs-volume-considerations"></a>

 Pertimbangkan hal berikut saat menggunakan volume Amazon EBS:
+ Anda tidak dapat mengonfigurasi volume Amazon EBS untuk lampiran ke tugas Fargate Amazon ECS `use1-az3` di Availability Zone.
+ Jenis volume Amazon EBS magnetik (`standard`) tidak didukung untuk tugas yang dihosting di Fargate. Untuk informasi selengkapnya tentang jenis volume Amazon EBS, lihat [Volume Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html) di Panduan Pengguna *Amazon EC2*.
+ Peran IAM infrastruktur Amazon ECS diperlukan saat membuat layanan atau tugas mandiri yang mengonfigurasi volume saat penerapan. Anda dapat melampirkan kebijakan `AmazonECSInfrastructureRolePolicyForVolumes` IAM AWS terkelola ke peran, atau Anda dapat menggunakan kebijakan terkelola sebagai panduan untuk membuat dan melampirkan kebijakan Anda sendiri dengan izin yang memenuhi kebutuhan spesifik Anda. Untuk informasi selengkapnya, lihat [Peran IAM Infrastruktur Amazon ECS](infrastructure_IAM_role.md).
+ Anda dapat melampirkan paling banyak satu volume Amazon EBS ke setiap tugas Amazon ECS, dan itu harus berupa volume baru. Anda tidak dapat melampirkan volume Amazon EBS yang ada ke tugas. Namun, Anda dapat mengonfigurasi volume Amazon EBS baru saat penerapan menggunakan snapshot dari volume yang ada.
+ Untuk menggunakan volume Amazon EBS dengan layanan Amazon ECS, pengontrol penerapan harus. `ECS` Strategi rolling dan blue/green deployment didukung saat menggunakan pengontrol penerapan ini.
+ Agar wadah dalam tugas Anda dapat menulis ke volume Amazon EBS yang dipasang, penampung harus memiliki izin sistem file yang sesuai. Saat Anda menentukan pengguna non-root dalam definisi penampung, Amazon ECS secara otomatis mengonfigurasi volume dengan izin berbasis grup yang memungkinkan pengguna tertentu membaca dan menulis ke volume. Jika tidak ada pengguna yang ditentukan, wadah berjalan sebagai root dan memiliki akses penuh ke volume.
+ Amazon ECS secara otomatis menambahkan tag yang dipesan `AmazonECSCreated` dan `AmazonECSManaged` ke volume terlampir. Jika Anda menghapus tag ini dari volume, Amazon ECS tidak akan dapat mengelola volume atas nama Anda. Untuk informasi selengkapnya tentang menandai volume Amazon EBS, lihat [Menandai volume Amazon](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specify-ebs-config.html#ebs-volume-tagging) EBS. Untuk informasi selengkapnya tentang menandai sumber daya Amazon ECS, lihat [Menandai sumber daya Amazon ECS Anda](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html).
+ Penyediaan volume dari snapshot volume Amazon EBS yang berisi partisi tidak didukung.
+ Volume yang dilampirkan ke tugas yang dikelola oleh layanan tidak dipertahankan dan selalu dihapus setelah pemutusan tugas.
+ Anda tidak dapat mengonfigurasi volume Amazon EBS untuk lampiran ke tugas Amazon ECS yang sedang berjalan. AWS Outposts

# Perilaku pengguna non-root
<a name="ebs-non-root-behavior"></a>

Saat Anda menentukan pengguna non-root dalam definisi penampung, Amazon ECS secara otomatis mengonfigurasi volume Amazon EBS dengan izin berbasis grup yang memungkinkan pengguna tertentu membaca dan menulis ke volume. Volume dipasang dengan karakteristik sebagai berikut:
+ Volume dimiliki oleh pengguna root dan grup root.
+ Izin grup diatur untuk memungkinkan akses baca dan tulis.
+ Pengguna non-root ditambahkan ke grup yang sesuai untuk mengakses volume.

Ikuti praktik terbaik ini saat menggunakan volume Amazon EBS dengan wadah non-root:
+ Gunakan user IDs (UIDs) dan group IDs (GIDs) yang konsisten di seluruh gambar container Anda untuk memastikan izin yang konsisten.
+ Pra-buat direktori mount point di image container Anda dan atur kepemilikan dan izin yang sesuai.
+ Uji container Anda dengan volume Amazon EBS di lingkungan pengembangan untuk mengonfirmasi bahwa izin sistem file berfungsi seperti yang diharapkan.
+ Jika beberapa kontainer dalam tugas yang sama berbagi volume, pastikan mereka menggunakan kompatibel UIDs/GIDs atau memasang volume dengan ekspektasi akses yang konsisten.

# Tunda konfigurasi volume untuk waktu peluncuran dalam definisi tugas Amazon ECS
<a name="specify-ebs-config"></a>

Untuk mengonfigurasi volume Amazon EBS untuk lampiran ke tugas Anda, Anda harus menentukan konfigurasi titik pemasangan dalam definisi tugas dan memberi nama volume. Anda juga harus mengatur `configuredAtLaunch` ke `true` karena volume Amazon EBS tidak dapat dikonfigurasi untuk lampiran dalam definisi tugas. Sebagai gantinya, volume Amazon EBS dikonfigurasi untuk lampiran selama penerapan.

Untuk mendaftarkan definisi tugas dengan menggunakan AWS Command Line Interface (AWS CLI), simpan template sebagai file JSON, lalu berikan file sebagai input untuk `[register-task-definition](https://docs.aws.amazon.com/cli/latest/reference/ecs/register-task-definition.html)` perintah. 

Untuk membuat dan mendaftarkan definisi tugas menggunakan Konsol Manajemen AWS, lihat[Membuat definisi tugas Amazon ECS menggunakan konsol](create-task-definition.md).

Definisi tugas berikut menunjukkan sintaks untuk `mountPoints` dan `volumes` objek dalam definisi tugas. Untuk informasi selengkapnya tentang parameter definisi tugas, lihat[Parameter definisi tugas Amazon ECS untuk Fargate](task_definition_parameters.md). Untuk menggunakan contoh ini, ganti `user input placeholders`dengan informasi Anda sendiri.

## Linux
<a name="linux-example"></a>

```
{
    "family": "mytaskdef",
    "containerDefinitions": [
        {
            "name": "nginx",
            "image": "public.ecr.aws/nginx/nginx:latest",
            "networkMode": "awsvpc",
           "portMappings": [
                {
                    "name": "nginx-80-tcp",
                    "containerPort": 80,
                    "hostPort": 80,
                    "protocol": "tcp",
                    "appProtocol": "http"
                }
            ],
            "mountPoints": [
                {
                    "sourceVolume": "myEBSVolume",
                    "containerPath": "/mount/ebs",
                    "readOnly": true
                }
            ]
        }
    ],
    "volumes": [
        {
            "name": "myEBSVolume",
            "configuredAtLaunch": true
        }
    ],
    "requiresCompatibilities": [
        "FARGATE", "EC2"
    ],
    "cpu": "1024",
    "memory": "3072",
    "networkMode": "awsvpc"
}
```

## Windows
<a name="windows-example"></a>

```
{
    "family": "mytaskdef",
     "memory": "4096",
     "cpu": "2048",
    "family": "windows-simple-iis-2019-core",
    "executionRoleArn": "arn:aws:iam::012345678910:role/ecsTaskExecutionRole",
    "runtimePlatform": {"operatingSystemFamily": "WINDOWS_SERVER_2019_CORE"},
    "requiresCompatibilities": ["EC2"]
    "containerDefinitions": [
        {
             "command": ["New-Item -Path C:\\inetpub\\wwwroot\\index.html -Type file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p>'; C:\\ServiceMonitor.exe w3svc"],
            "entryPoint": [
                "powershell",
                "-Command"
            ],
            "essential": true,
            "cpu": 2048,
            "memory": 4096,
            "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
            "name": "sample_windows_app",
            "portMappings": [
                {
                    "hostPort": 443,
                    "containerPort": 80,
                    "protocol": "tcp"
                }
            ],
            "mountPoints": [
                {
                    "sourceVolume": "myEBSVolume",
                    "containerPath": "drive:\ebs",
                    "readOnly": true
                }
            ]
        }
    ],
    "volumes": [
        {
            "name": "myEBSVolume",
            "configuredAtLaunch": true
        }
    ],
    "requiresCompatibilities": [
        "FARGATE", "EC2"
    ],
    "cpu": "1024",
    "memory": "3072",
    "networkMode": "awsvpc"
}
```

`mountPoints`  
Tipe: Array objek  
Wajib: Tidak  
Titik pemasangan untuk volume data dalam penampung Anda. Parameter ini memetakan ke `Volumes` dalam create-container Docker API dan opsi `--volume` untuk docker run.  
Kontainer Windows dapat memasang seluruh direktori pada drive yang sama dengan `$env:ProgramData`. Kontainer Windows tidak dapat memasang direktori pada drive yang berbeda, dan titik pemasangan tidak dapat digunakan di seluruh drive. Anda harus menentukan titik pemasangan untuk melampirkan volume Amazon EBS langsung ke tugas Amazon ECS.    
`sourceVolume`  
Tipe: String  
Diperlukan: Ya, kapan `mountPoints` digunakan  
Nama volume yang akan dipasang.  
`containerPath`  
Tipe: String  
Diperlukan: Ya, kapan `mountPoints` digunakan  
Jalur dalam wadah tempat volume akan dipasang.  
`readOnly`  
Tipe: Boolean  
Wajib: Tidak  
Jika nilai ini adalah `true`, kontainer memiliki akses hanya-baca ke volume. Jika nilai ini adalah `false`, maka kontainer dapat menulis ke volume. Nilai default-nya adalah `false`.  
Untuk tugas yang berjalan pada instans EC2 yang menjalankan sistem operasi Windows, biarkan nilainya sebagai default. `false`

`name`  
Tipe: String  
Wajib: Tidak  
Nama volume. Hingga 255 huruf (huruf besar dan kecil), angka, tanda hubung (), dan garis bawah (`-`) diperbolehkan. `_` Nama ini direferensikan dalam `sourceVolume` parameter `mountPoints` objek definisi kontainer.

`configuredAtLaunch`  
Jenis: Boolean  
Wajib: Ya, saat Anda ingin menggunakan lampirkan volume EBS langsung ke tugas.  
Menentukan apakah volume dikonfigurasi saat peluncuran. Saat disetel ke`true`, Anda dapat mengonfigurasi volume saat menjalankan tugas mandiri, atau saat membuat atau memperbarui layanan. Saat disetel ke`false`, Anda tidak akan dapat memberikan konfigurasi volume lain dalam definisi tugas. Parameter ini harus disediakan dan diatur `true` untuk mengonfigurasi volume Amazon EBS untuk lampiran ke tugas.

# Enkripsi data yang disimpan dalam volume Amazon EBS yang dilampirkan ke tugas Amazon ECS
<a name="ebs-kms-encryption"></a>

Anda dapat menggunakan AWS Key Management Service (AWS KMS) untuk membuat dan mengelola kunci kriptografi yang melindungi data Anda. Volume Amazon EBS dienkripsi saat istirahat dengan menggunakan. AWS KMS keys Jenis data berikut dienkripsi:
+ Data disimpan saat istirahat pada volume
+ Disk I/O
+ Snapshot dibuat dari volume
+ Volume baru dibuat dari snapshot terenkripsi

Volume Amazon EBS yang dilampirkan ke tugas dapat dienkripsi dengan menggunakan default Kunci yang dikelola AWS dengan alias`alias/aws/ebs`, atau kunci terkelola pelanggan simetris yang ditentukan dalam konfigurasi volume. Default Kunci yang dikelola AWS unik untuk masing-masing Akun AWS per Wilayah AWS dan dibuat secara otomatis. *Untuk membuat kunci terkelola pelanggan simetris, ikuti langkah-langkah dalam [Membuat kunci KMS enkripsi simetris di Panduan Pengembang](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)AWS KMS .*

Anda dapat mengonfigurasi enkripsi Amazon EBS secara default sehingga semua volume baru yang dibuat dan dilampirkan ke tugas tertentu Wilayah AWS dienkripsi dengan menggunakan kunci KMS yang Anda tentukan untuk akun Anda. Untuk informasi selengkapnya tentang enkripsi dan enkripsi Amazon EBS secara default, lihat [enkripsi Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-encryption.html) di Panduan Pengguna *Amazon EBS*.

## Perilaku Instans Terkelola Amazon ECS
<a name="managed-instances"></a>

Anda mengenkripsi volume Amazon EBS dengan mengaktifkan enkripsi, baik menggunakan enkripsi secara default atau dengan mengaktifkan enkripsi saat Anda membuat volume yang ingin Anda enkripsi. Untuk informasi tentang cara mengaktifkan enkripsi secara default (di tingkat akun, lihat [Enkripsi secara default di Panduan](https://docs.aws.amazon.com/ebs/latest/userguide/encryption-by-default.html) Pengguna *Amazon EBS*.

Anda dapat mengonfigurasi kombinasi tombol-tombol ini. Urutan prioritas kunci KMS adalah sebagai berikut:

1. Kunci KMS ditentukan dalam konfigurasi volume. Saat Anda menentukan kunci KMS dalam konfigurasi volume, kunci ini akan mengganti default Amazon EBS dan kunci KMS apa pun yang ditentukan di tingkat akun.

1. Kunci KMS ditentukan pada tingkat akun. Saat Anda menentukan kunci KMS untuk enkripsi tingkat klaster penyimpanan terkelola Amazon ECS, kunci tersebut akan mengganti enkripsi default Amazon EBS tetapi tidak mengganti kunci KMS apa pun yang ditentukan dalam konfigurasi volume.

1. Enkripsi default Amazon EBS. Enkripsi default berlaku bila Anda tidak menentukan kunci KMS tingkat akun atau kunci dalam konfigurasi volume. Jika Anda mengaktifkan enkripsi Amazon EBS secara default, default adalah kunci KMS yang Anda tentukan untuk enkripsi secara default. Jika tidak, defaultnya adalah Kunci yang dikelola AWS dengan alias`alias/aws/ebs`.
**catatan**  
Jika Anda menyetel `encrypted` ke `false` dalam konfigurasi volume, tentukan tidak ada kunci KMS tingkat akun, dan aktifkan enkripsi Amazon EBS secara default, volume akan tetap dienkripsi dengan kunci yang ditentukan untuk enkripsi Amazon EBS secara default.

## Perilaku Instans Terkelola ECS Non-Amazon
<a name="non-managed-instances"></a>

Anda juga dapat mengatur enkripsi tingkat klaster Amazon ECS untuk penyimpanan terkelola Amazon ECS saat membuat atau memperbarui klaster. Enkripsi tingkat cluster berlaku pada tingkat tugas dan dapat digunakan untuk mengenkripsi volume Amazon EBS yang dilampirkan ke setiap tugas yang berjalan di klaster tertentu dengan menggunakan kunci KMS yang ditentukan. Untuk informasi selengkapnya tentang mengonfigurasi enkripsi di tingkat klaster untuk setiap tugas, lihat [ManagedStorageConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ManagedStorageConfiguration.html)di referensi *Amazon ECS API*.

Anda dapat mengonfigurasi kombinasi tombol-tombol ini. Urutan prioritas kunci KMS adalah sebagai berikut:

1. Kunci KMS ditentukan dalam konfigurasi volume. Saat Anda menentukan kunci KMS dalam konfigurasi volume, kunci ini akan mengganti default Amazon EBS dan kunci KMS apa pun yang ditentukan pada tingkat cluster.

1. Kunci KMS ditentukan pada tingkat cluster. Saat Anda menentukan kunci KMS untuk enkripsi tingkat klaster penyimpanan terkelola Amazon ECS, kunci tersebut akan mengganti enkripsi default Amazon EBS tetapi tidak mengganti kunci KMS apa pun yang ditentukan dalam konfigurasi volume.

1. Enkripsi default Amazon EBS. Enkripsi default berlaku ketika Anda tidak menentukan kunci KMS tingkat cluster atau kunci dalam konfigurasi volume. Jika Anda mengaktifkan enkripsi Amazon EBS secara default, default adalah kunci KMS yang Anda tentukan untuk enkripsi secara default. Jika tidak, defaultnya adalah Kunci yang dikelola AWS dengan alias`alias/aws/ebs`.
**catatan**  
Jika Anda menyetel `encrypted` ke `false` dalam konfigurasi volume, tentukan tidak ada kunci KMS tingkat cluster, dan aktifkan enkripsi Amazon EBS secara default, volume akan tetap dienkripsi dengan kunci yang ditentukan untuk enkripsi Amazon EBS secara default.

## Kebijakan kunci KMS yang dikelola pelanggan
<a name="ebs-kms-encryption-policy"></a>

Untuk mengenkripsi volume EBS yang dilampirkan ke tugas Anda dengan menggunakan kunci yang dikelola pelanggan, Anda harus mengonfigurasi kebijakan kunci KMS untuk memastikan bahwa peran IAM yang Anda gunakan untuk konfigurasi volume memiliki izin yang diperlukan untuk menggunakan kunci tersebut. Kebijakan utama harus menyertakan `kms:CreateGrant` dan `kms:GenerateDataKey*` izin. `kms:ReEncryptFrom`Izin `kms:ReEncryptTo` dan diperlukan untuk mengenkripsi volume yang dibuat menggunakan snapshot. Jika Anda ingin mengkonfigurasi dan mengenkripsi hanya volume baru yang kosong untuk lampiran, Anda dapat mengecualikan `kms:ReEncryptTo` dan `kms:ReEncryptFrom` izin. 

Cuplikan JSON berikut menunjukkan pernyataan kebijakan utama yang dapat Anda lampirkan ke kebijakan kunci KMS Anda. Menggunakan pernyataan ini akan memberikan akses bagi Amazon ECS untuk menggunakan kunci untuk mengenkripsi volume EBS. Untuk menggunakan contoh pernyataan kebijakan, ganti `user input placeholders` dengan informasi Anda sendiri. Seperti biasa, hanya konfigurasikan izin yang Anda butuhkan.

```
{
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::111122223333:role/ecsInfrastructureRole" },
      "Action": "kms:DescribeKey",
      "Resource":"*"
    },
    {
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::111122223333:role/ecsInfrastructureRole" },
      "Action": [
      "kms:GenerateDataKey*",
      "kms:ReEncryptTo",
      "kms:ReEncryptFrom"
      ],
      "Resource":"*",
      "Condition": {
        "StringEquals": {
          "kms:CallerAccount": "aws_account_id",
          "kms:ViaService": "ec2.region.amazonaws.com"
        },
        "ForAnyValue:StringEquals": {
          "kms:EncryptionContextKeys": "aws:ebs:id"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::111122223333:role/ecsInfrastructureRole" },
      "Action": "kms:CreateGrant",
      "Resource":"*",
      "Condition": {
        "StringEquals": {
          "kms:CallerAccount": "aws_account_id",
          "kms:ViaService": "ec2.region.amazonaws.com"
        },
        "ForAnyValue:StringEquals": {
          "kms:EncryptionContextKeys": "aws:ebs:id"
        },
        "Bool": {
          "kms:GrantIsForAWSResource": true
        }
      }
    }
```

Untuk informasi selengkapnya tentang kebijakan dan izin utama, lihat [Kebijakan kunci AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) dan [AWS KMS izin di Panduan AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) *Pengembang*. Untuk mengatasi masalah lampiran volume EBS yang terkait dengan izin kunci, lihat. [Memecahkan masalah lampiran volume Amazon EBS ke tugas Amazon ECS](troubleshoot-ebs-volumes.md)

# Tentukan konfigurasi volume Amazon EBS pada penerapan Amazon ECS
<a name="configure-ebs-volume"></a>

Setelah mendaftarkan definisi tugas dengan `configuredAtLaunch` parameter yang disetel ke`true`, Anda dapat mengonfigurasi volume Amazon EBS saat penerapan saat menjalankan tugas mandiri, atau saat membuat atau memperbarui layanan. Untuk informasi selengkapnya tentang menunda konfigurasi volume ke waktu peluncuran menggunakan `configuredAtLaunch` parameter, lihat. [Tunda konfigurasi volume untuk waktu peluncuran dalam definisi tugas Amazon ECS](specify-ebs-config.md)

Untuk mengonfigurasi volume, Anda dapat menggunakan Amazon ECS APIs, atau Anda dapat meneruskan file JSON sebagai input untuk perintah berikut: AWS CLI 
+ `[run-task](https://docs.aws.amazon.com/cli/latest/reference/ecs/run-task.html)`untuk menjalankan tugas ECS mandiri.
+ `[start-task](https://docs.aws.amazon.com/cli/latest/reference/ecs/start-task.html)`untuk menjalankan tugas ECS mandiri dalam instance kontainer tertentu. Perintah ini tidak berlaku untuk tugas Fargate.
+ `[create-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-service.html)`untuk membuat layanan ECS baru.
+ `[update-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/update-service.html)`untuk memperbarui layanan yang ada.

**catatan**  
Agar wadah dalam tugas Anda dapat menulis ke volume Amazon EBS yang dipasang, penampung harus memiliki izin sistem file yang sesuai. Saat Anda menentukan pengguna non-root dalam definisi penampung, Amazon ECS secara otomatis mengonfigurasi volume dengan izin berbasis grup yang memungkinkan pengguna tertentu membaca dan menulis ke volume. Jika tidak ada pengguna yang ditentukan, wadah berjalan sebagai root dan memiliki akses penuh ke volume.

 Anda juga dapat mengonfigurasi volume Amazon EBS dengan menggunakan file. Konsol Manajemen AWS Lihat informasi selengkapnya di [Menjalankan aplikasi sebagai tugas Amazon ECS](standalone-task-create.md), [Membuat penyebaran pembaruan bergulir Amazon ECS](create-service-console-v2.md), dan [Memperbarui layanan Amazon ECS](update-service-console-v2.md).

Cuplikan JSON berikut menunjukkan semua parameter volume Amazon EBS yang dapat dikonfigurasi saat penerapan. Untuk menggunakan parameter ini untuk konfigurasi volume, ganti `user input placeholders` dengan informasi Anda sendiri. Untuk informasi selengkapnya tentang parameter ini, lihat [Konfigurasi volume](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service_definition_parameters.html#sd-volumeConfigurations).

```
"volumeConfigurations": [
        {
            "name": "ebs-volume", 
            "managedEBSVolume": {
                "encrypted": true, 
                "kmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", 
                "volumeType": "gp3", 
                "sizeInGiB": 10, 
                "snapshotId": "snap-12345", 
                "volumeInitializationRate":100,
                "iops": 3000, 
                "throughput": 125, 
                "tagSpecifications": [
                    {
                        "resourceType": "volume", 
                        "tags": [
                            {
                                "key": "key1", 
                                "value": "value1"
                            }
                        ], 
                        "propagateTags": "NONE"
                    }
                ], 
                "roleArn": "arn:aws:iam::1111222333:role/ecsInfrastructureRole", 
                 "terminationPolicy": {
                    "deleteOnTermination": true//can't be configured for service-managed tasks, always true 
                },
                "filesystemType": "ext4"
            }
        }
    ]
```

**penting**  
Pastikan bahwa yang `volumeName` Anda tentukan dalam konfigurasi sama dengan yang `volumeName` Anda tentukan dalam definisi tugas Anda.

Untuk informasi tentang memeriksa status lampiran volume, lihat[Memecahkan masalah lampiran volume Amazon EBS ke tugas Amazon ECS](troubleshoot-ebs-volumes.md). Untuk informasi tentang peran infrastruktur Amazon ECS AWS Identity and Access Management (IAM) yang diperlukan untuk lampiran volume EBS, lihat. [Peran IAM Infrastruktur Amazon ECS](infrastructure_IAM_role.md)

Berikut ini adalah contoh cuplikan JSON yang menunjukkan konfigurasi volume Amazon EBS. Contoh-contoh ini dapat digunakan dengan menyimpan cuplikan dalam file JSON dan meneruskan file sebagai parameter (menggunakan `--cli-input-json file://filename` parameter) untuk perintah. AWS CLI Ganti `user input placeholders` dengan informasi Anda sendiri.

## Konfigurasikan volume untuk tugas mandiri
<a name="ebs-run-task"></a>

Cuplikan berikut menunjukkan sintaks untuk mengonfigurasi volume Amazon EBS untuk lampiran ke tugas mandiri. Cuplikan JSON berikut menunjukkan sintaks untuk mengkonfigurasi`volumeType`,,, `sizeInGiB` dan pengaturan. `encrypted` `kmsKeyId` Konfigurasi yang ditentukan dalam file JSON digunakan untuk membuat dan melampirkan volume EBS ke tugas mandiri.

```
{
   "cluster": "mycluster",
   "taskDefinition": "mytaskdef",
   "volumeConfigurations": [
        {
            "name": "datadir",
            "managedEBSVolume": {
                "volumeType": "gp3",
                "sizeInGiB": 100,
                "roleArn":"arn:aws:iam::1111222333:role/ecsInfrastructureRole",
                "encrypted": true,
                "kmsKeyId": "arn:aws:kms:region:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
            }
        }
   ]
}
```

## Konfigurasikan volume pada pembuatan layanan
<a name="ebs-create-service"></a>

Cuplikan berikut menunjukkan sintaks untuk mengonfigurasi volume Amazon EBS untuk lampiran ke tugas yang dikelola oleh layanan. Volume bersumber dari snapshot yang ditentukan menggunakan `snapshotId` parameter pada tingkat 200 MiB/s. Konfigurasi yang ditentukan dalam file JSON digunakan untuk membuat dan melampirkan volume EBS ke setiap tugas yang dikelola oleh layanan.

```
{
   "cluster": "mycluster",
   "taskDefinition": "mytaskdef",
   "serviceName": "mysvc",
   "desiredCount": 2,
   "volumeConfigurations": [
        {
            "name": "myEbsVolume",
            "managedEBSVolume": {
              "roleArn":"arn:aws:iam::1111222333:role/ecsInfrastructureRole",
              "snapshotId": "snap-12345",
              "volumeInitializationRate": 200
            }
        }
   ]
}
```

## Konfigurasikan volume pada pembaruan layanan
<a name="ebs-update-service"></a>

Cuplikan JSON berikut menunjukkan sintaks untuk memperbarui layanan yang sebelumnya tidak memiliki volume Amazon EBS yang dikonfigurasi untuk lampiran ke tugas. Anda harus memberikan ARN dari revisi definisi tugas dengan `configuredAtLaunch` set to. `true` Cuplikan JSON berikut menunjukkan sintaks untuk mengkonfigurasi`volumeType`,,, dan `sizeInGiB``throughput`, dan pengaturan. `iops` `filesystemType` Konfigurasi ini digunakan untuk membuat dan melampirkan volume EBS ke setiap tugas yang dikelola oleh layanan.

```
{
   "cluster": "mycluster",
   "taskDefinition": "mytaskdef",
   "service": "mysvc",
   "desiredCount": 2,
   "volumeConfigurations": [
        {
            "name": "myEbsVolume",
            "managedEBSVolume": {
              "roleArn":"arn:aws:iam::1111222333:role/ecsInfrastructureRole",
               "volumeType": "gp3",
                "sizeInGiB": 100,
                 "iops": 3000, 
                "throughput": 125, 
                "filesystemType": "ext4"
            }
        }
   ]
}
```

### Konfigurasikan layanan agar tidak lagi menggunakan volume Amazon EBS
<a name="ebs-service-disable-ebs"></a>

Cuplikan JSON berikut menunjukkan sintaks untuk memperbarui layanan agar tidak lagi menggunakan volume Amazon EBS. Anda harus memberikan ARN definisi tugas dengan `configuredAtLaunch` set to`false`, atau definisi tugas tanpa parameter. `configuredAtLaunch` Anda juga harus menyediakan `volumeConfigurations` objek kosong.

```
{
   "cluster": "mycluster",
   "taskDefinition": "mytaskdef",
   "service": "mysvc",
   "desiredCount": 2,
   "volumeConfigurations": []
}
```

## Kebijakan penghentian untuk volume Amazon EBS
<a name="ebs-volume-termination-policy"></a>

Saat tugas Amazon ECS dihentikan, Amazon ECS menggunakan `deleteOnTermination` nilainya untuk menentukan apakah volume Amazon EBS yang terkait dengan tugas yang dihentikan harus dihapus. Secara default, volume EBS yang dilampirkan ke tugas dihapus saat tugas dihentikan. Untuk tugas mandiri, Anda dapat mengubah setelan ini untuk mempertahankan volume saat penghentian tugas.

**catatan**  
Volume yang dilampirkan ke tugas yang dikelola oleh layanan tidak dipertahankan dan selalu dihapus pada saat pemutusan tugas.

## Tandai volume Amazon EBS
<a name="ebs-volume-tagging"></a>

Anda dapat menandai volume Amazon EBS dengan menggunakan `tagSpecifications` objek. Menggunakan objek, Anda dapat memberikan tag Anda sendiri dan mengatur propagasi tag dari definisi tugas atau layanan, tergantung pada apakah volume dilampirkan ke tugas mandiri atau tugas dalam layanan. Jumlah maksimum tag yang dapat dilampirkan ke volume adalah 50.

**penting**  
Amazon ECS secara otomatis melampirkan tag yang dikhususkan untuk `AmazonECSCreated` dan `AmazonECSManaged` ke volume Amazon EBS. Ini berarti Anda dapat mengontrol lampiran maksimal 48 tag tambahan ke volume. Tag tambahan ini dapat berupa tag yang ditentukan pengguna, dikelola ECS, atau disebarkan.

Jika Anda ingin menambahkan tag Amazon ECS yang dikelola ke volume Anda, Anda harus menyetel `enableECSManagedTags` ke `true` dalam`UpdateService`,`CreateService`, `RunTask` atau `StartTask` panggilan. Jika Anda mengaktifkan tag yang dikelola Amazon ECS, Amazon ECS akan menandai volume secara otomatis dengan informasi kluster dan layanan (`aws:ecs:clusterName`dan). `aws:ecs:serviceName` Untuk informasi selengkapnya tentang menandai sumber daya Amazon ECS, lihat [Menandai sumber daya Amazon ECS Anda](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html).

Cuplikan JSON berikut menunjukkan sintaks untuk menandai setiap volume Amazon EBS yang dilampirkan ke setiap tugas dalam layanan dengan tag yang ditentukan pengguna. Untuk menggunakan contoh ini untuk membuat layanan, ganti `user input placeholders` dengan informasi Anda sendiri.

```
{
   "cluster": "mycluster",
   "taskDefinition": "mytaskdef",
   "serviceName": "mysvc",
   "desiredCount": 2,
   "enableECSManagedTags": true,
   "volumeConfigurations": [
        {
            "name": "datadir",
            "managedEBSVolume": {
                "volumeType": "gp3",
                "sizeInGiB": 100,
                 "tagSpecifications": [
                    {
                        "resourceType": "volume", 
                        "tags": [
                            {
                                "key": "key1", 
                                "value": "value1"
                            }
                        ], 
                        "propagateTags": "NONE"
                    }
                ],
                "roleArn":"arn:aws:iam:1111222333:role/ecsInfrastructureRole",
                "encrypted": true,
                "kmsKeyId": "arn:aws:kms:region:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
            }
        }
   ]
}
```

**penting**  
Anda harus menentukan jenis `volume` sumber daya untuk menandai volume Amazon EBS.

# Kinerja volume Amazon EBS untuk tugas sesuai permintaan Fargate
<a name="ebs-fargate-performance-limits"></a>

Volume Amazon EBS dasar IOPS dan throughput yang tersedia untuk tugas sesuai permintaan Fargate bergantung pada total unit CPU yang Anda minta untuk tugas tersebut. Jika Anda meminta 0,25, 0,5, atau 1 unit CPU virtual (vCPU) untuk tugas Fargate Anda, kami sarankan Anda mengonfigurasi volume SSD Tujuan Umum `gp2` (`gp3`atau) atau volume Hard Disk Drive (HDD) (atau). `st1` `sc1` Jika Anda meminta lebih dari 1 vCPU untuk tugas Fargate Anda, batas kinerja dasar berikut berlaku untuk volume Amazon EBS yang dilampirkan ke tugas. Anda mungkin untuk sementara mendapatkan kinerja EBS yang lebih tinggi daripada batas berikut. Namun, kami menyarankan Anda merencanakan beban kerja Anda berdasarkan batas-batas ini.


| Unit CPU diminta (dalam vCPUs) | Dasar Amazon EBS IOPS (16 KiB I/O) | Throughput Amazon EBS Dasar (dalam, MiBps 128 KiB I/O) | Bandwidth dasar (dalam Mbps) | 
| --- | --- | --- | --- | 
| 2 | 3.000 | 75 | 360 | 
| 4 | 5.000 | 120 | 1.150 | 
| 8 | 10.000 | 250 | 2.300 | 
| 16 | 15.000 | 500 | 4,500 | 

**catatan**  
 Saat Anda mengonfigurasi volume Amazon EBS untuk lampiran ke tugas Fargate, batas kinerja Amazon EBS untuk tugas Fargate dibagi antara penyimpanan sementara tugas dan volume terlampir.

# Kinerja volume Amazon EBS untuk tugas EC2
<a name="ebs-fargate-performance-limits-ec2"></a>

Amazon EBS menyediakan jenis volume, yang berbeda dalam karakteristik kinerja dan harga, sehingga Anda dapat menyesuaikan kinerja penyimpanan dan biaya dengan kebutuhan aplikasi Anda. Untuk informasi tentang performa, termasuk IOPS per volume dan throughput per volume, lihat [Jenis volume Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html) di Panduan Pengguna *Amazon Elastic Block Store*.

# Kinerja volume Amazon EBS untuk tugas Instans Terkelola Amazon ECS
<a name="ebs-managed-instances-performance"></a>

Amazon EBS menyediakan jenis volume, yang berbeda dalam karakteristik kinerja dan harga, sehingga Anda dapat menyesuaikan kinerja penyimpanan dan biaya dengan kebutuhan aplikasi Anda. Untuk informasi tentang performa, termasuk IOPS per volume dan throughput per volume, lihat [Jenis volume Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html) di Panduan Pengguna *Amazon Elastic Block Store*.

# Memecahkan masalah lampiran volume Amazon EBS ke tugas Amazon ECS
<a name="troubleshoot-ebs-volumes"></a>

Anda mungkin perlu memecahkan masalah atau memverifikasi lampiran volume Amazon EBS ke tugas Amazon ECS.

## Periksa status lampiran volume
<a name="troubleshoot-ebs-volumes-location"></a>

Anda dapat menggunakan Konsol Manajemen AWS untuk melihat status lampiran volume Amazon EBS ke tugas Amazon ECS. Jika tugas dimulai dan lampiran gagal, Anda juga akan melihat alasan status yang dapat Anda gunakan untuk memecahkan masalah. Volume yang dibuat akan dihapus dan tugas akan dihentikan. Untuk informasi selengkapnya tentang alasan status, lihat[Alasan status untuk lampiran volume Amazon EBS ke tugas Amazon ECS](troubleshoot-ebs-volumes-scenarios.md).

**Untuk melihat status lampiran volume dan alasan status menggunakan konsol**

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

1. Pada halaman **Clusters**, pilih klaster tempat tugas Anda berjalan. Halaman detail cluster muncul.

1. Pada halaman detail cluster, pilih tab **Tugas**.

1. Pilih tugas yang ingin Anda lihat status lampiran volume. Anda mungkin perlu menggunakan **Filter status yang diinginkan** dan memilih **Berhenti** jika tugas yang ingin Anda periksa telah berhenti.

1. Pada halaman detail tugas, pilih tab **Volume**. Anda akan dapat melihat status lampiran volume Amazon EBS di bawah **status Lampiran**. Jika volume gagal dilampirkan ke tugas, Anda dapat memilih status di bawah **Status lampiran** untuk menampilkan penyebab kegagalan.

Anda juga dapat melihat status lampiran volume tugas dan alasan status terkait dengan menggunakan [DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html)API.

## Kegagalan layanan dan tugas
<a name="service-task-failures"></a>

Anda mungkin mengalami kegagalan layanan atau tugas yang tidak spesifik untuk volume Amazon EBS yang dapat memengaruhi lampiran volume. Untuk informasi selengkapnya, silakan lihat
+ [Pesan acara layanan](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-event-messages.html)
+ [Menghentikan kode kesalahan tugas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/stopped-task-error-codes.html)
+ [Alasan kegagalan API](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/api_failures_messages.html)

# Kontainer tidak dapat menulis ke volume Amazon EBS
<a name="troubleshoot-non-root-container"></a>

Pengguna non-root tanpa izin yang tepat  
Saat Anda menentukan pengguna non-root dalam definisi penampung Anda, Amazon ECS secara otomatis mengonfigurasi volume dengan izin berbasis grup untuk mengizinkan akses tulis. Namun, jika Anda masih mengalami masalah izin:  
+ Verifikasi bahwa `user` parameter ditentukan dengan benar dalam definisi kontainer Anda menggunakan format `uid:gid` (misalnya,`1001:1001`).
+ Pastikan image container Anda tidak mengganti izin pengguna setelah volume dipasang.
+ Periksa apakah aplikasi Anda berjalan dengan ID pengguna yang diharapkan dengan memeriksa log container atau menggunakan Amazon ECS Exec untuk memeriksa container yang sedang berjalan.

Root pengguna dengan masalah izin  
Jika tidak ada pengguna yang ditentukan dalam definisi penampung Anda, penampung berjalan sebagai root dan harus memiliki akses penuh ke volume. Jika Anda mengalami masalah:  
+ Verifikasi bahwa volume terpasang dengan benar dengan memeriksa titik pemasangan di dalam wadah.
+ Pastikan volume tidak dikonfigurasi sebagai hanya-baca dalam konfigurasi titik pemasangan Anda.

Tugas multi-kontainer dengan pengguna yang berbeda  
Dalam tugas dengan beberapa kontainer yang berjalan sebagai pengguna yang berbeda, Amazon ECS secara otomatis mengelola izin grup untuk memungkinkan semua pengguna tertentu menulis ke volume. Jika wadah tidak dapat menulis:  
+ Verifikasi bahwa semua kontainer yang memerlukan akses tulis memiliki `user` parameter yang dikonfigurasi dengan benar.
+ Periksa apakah volume dipasang di semua wadah yang membutuhkan akses ke sana.

Untuk informasi selengkapnya tentang mengonfigurasi pengguna dalam definisi penampung, lihat [Parameter definisi tugas Amazon ECS untuk Fargate](https://docs.aws.amazon.com/./task_definition_parameters.html). 

# Alasan status untuk lampiran volume Amazon EBS ke tugas Amazon ECS
<a name="troubleshoot-ebs-volumes-scenarios"></a>

Gunakan referensi berikut untuk memperbaiki masalah yang mungkin Anda temui dalam bentuk alasan status Konsol Manajemen AWS saat Anda mengonfigurasi volume Amazon EBS untuk lampiran ke tugas Amazon ECS. Untuk informasi selengkapnya tentang menemukan alasan status ini di konsol, lihat[Periksa status lampiran volume](troubleshoot-ebs-volumes.md#troubleshoot-ebs-volumes-location).

ECS tidak dapat mengasumsikan Peran Infrastruktur ECS yang dikonfigurasi 'arn:aws:iam: ::role/ '. *111122223333* *ecsInfrastructureRole* Harap verifikasi bahwa peran yang dilewati memiliki hubungan kepercayaan yang tepat dengan Amazon ECS  
Alasan status ini muncul dalam skenario berikut.  
+  Anda memberikan peran IAM tanpa kebijakan kepercayaan yang diperlukan. Amazon ECS tidak dapat mengakses peran IAM infrastruktur Amazon ECS yang Anda berikan jika peran tersebut tidak memiliki kebijakan kepercayaan yang diperlukan. Tugas itu bisa macet di `DEPROVISIONING` negara bagian. Untuk informasi lebih lanjut tentang kebijakan kepercayaan yang diperlukan, lihat[Peran IAM Infrastruktur Amazon ECS](infrastructure_IAM_role.md).
+ Pengguna IAM Anda tidak memiliki izin untuk meneruskan peran infrastruktur Amazon ECS ke Amazon ECS. Tugas itu bisa macet di `DEPROVISIONING` negara bagian. Untuk menghindari masalah ini, Anda dapat melampirkan `PassRole` izin ke pengguna Anda. Untuk informasi selengkapnya, lihat [Peran IAM Infrastruktur Amazon ECS](infrastructure_IAM_role.md).
+ Peran IAM Anda tidak memiliki izin yang diperlukan untuk lampiran volume Amazon EBS. Tugas itu bisa macet di `DEPROVISIONING` negara bagian. Untuk informasi selengkapnya tentang izin khusus yang diperlukan untuk melampirkan volume Amazon EBS ke tugas, lihat. [Peran IAM Infrastruktur Amazon ECS](infrastructure_IAM_role.md)
Anda juga dapat melihat pesan kesalahan ini karena penundaan dalam propagasi peran. Jika mencoba kembali menggunakan peran setelah menunggu beberapa menit tidak memperbaiki masalah, Anda mungkin telah salah mengonfigurasi kebijakan kepercayaan untuk peran tersebut.

ECS gagal mengatur volume EBS. Ditemui IdempotentParameterMismatch “; “Token klien yang Anda berikan dikaitkan dengan sumber daya yang sudah dihapus. Silakan gunakan token klien yang berbeda.”  
Skenario AWS KMS utama berikut dapat menyebabkan `IdempotentParameterMismatch` pesan muncul:  
+ Anda menentukan kunci KMS ARN, ID, atau alias yang tidak valid. Dalam skenario ini, tugas mungkin tampak berhasil diluncurkan, tetapi tugas akhirnya gagal karena AWS mengautentikasi kunci KMS secara asinkron. Untuk informasi selengkapnya, lihat [enkripsi Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-encryption.html) di Panduan *Pengguna Amazon EC2*.
+ Anda memberikan kunci terkelola pelanggan yang tidak memiliki izin yang memungkinkan peran IAM infrastruktur Amazon ECS menggunakan kunci untuk enkripsi. Untuk menghindari masalah izin kebijakan kunci, lihat contoh kebijakan AWS KMS kunci dalam [enkripsi data untuk volume Amazon EBS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ebs-volumes.html#ebs-kms-encryption).
Anda dapat mengatur Amazon EventBridge untuk mengirim peristiwa volume Amazon EBS dan peristiwa perubahan status tugas Amazon ECS ke target, seperti grup Amazon CloudWatch . Anda kemudian dapat menggunakan peristiwa ini untuk mengidentifikasi masalah terkait kunci yang dikelola pelanggan tertentu yang memengaruhi lampiran volume. Untuk informasi selengkapnya, silakan lihat  
+  [Bagaimana saya bisa membuat grup CloudWatch log untuk digunakan sebagai target EventBridge aturan?](https://repost.aws/knowledge-center/cloudwatch-log-group-eventbridge) di AWS re:post.
+ [Acara perubahan status tugas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_cwe_events.html#ecs_task_events).
+ [ EventBridge Acara Amazon untuk Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-cloud-watch-events.html) di *Panduan Pengguna Amazon EBS*.

Waktu ECS habis saat mengonfigurasi lampiran volume EBS ke Tugas Anda.  
Skenario format sistem file berikut menghasilkan pesan ini.  
+ Format sistem file yang Anda tentukan selama konfigurasi tidak kompatibel dengan [sistem operasi tugas](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RuntimePlatform.html).
+ Anda mengonfigurasi volume Amazon EBS yang akan dibuat dari snapshot, dan format sistem file snapshot tidak kompatibel dengan sistem operasi tugas. Untuk volume yang dibuat dari snapshot, Anda harus menentukan tipe sistem file yang sama yang digunakan volume saat snapshot dibuat.
Anda dapat menggunakan log agen penampung Amazon ECS untuk memecahkan masalah pesan ini untuk tugas EC2. Untuk informasi selengkapnya, lihat [lokasi file log Amazon ECS dan pengumpul](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/logs.html) [log Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-logs-collector.html).

# Gunakan volume Amazon EFS dengan Amazon ECS
<a name="efs-volumes"></a>

Amazon Elastic File System (Amazon EFS) menyediakan penyimpanan file yang sederhana dan dapat diskalakan untuk digunakan dengan tugas Amazon ECS Anda. Kapasitas penyimpanan Amazon EFS bersifat elastis. Hal ini bertumbuh dan menyusut secara otomatis seiring Anda menambahkan dan menghapus file. Aplikasi Anda dapat memiliki penyimpanan yang mereka butuhkan dan kapan mereka membutuhkannya.

Anda dapat menggunakan sistem file Amazon EFS dengan Amazon ECS untuk mengekspor data sistem file di seluruh armada instans kontainer Anda. Dengan begitu, tugas Anda memiliki akses ke penyimpanan tetap yang sama, terlepas dari instans tempat mereka mendarat. Definisi tugas Anda harus mereferensikan pemasangan volume pada instance container untuk menggunakan sistem file.

Untuk tutorial, lihat [Mengonfigurasi sistem file Amazon EFS untuk Amazon ECS menggunakan konsol](tutorial-efs-volumes.md).

## Pertimbangan-pertimbangan
<a name="efs-volume-considerations"></a>

 Pertimbangkan hal berikut saat menggunakan volume Amazon EFS:
+ Untuk tugas yang berjalan di EC2, dukungan sistem file Amazon EFS ditambahkan sebagai pratinjau publik dengan versi AMI Amazon ECS yang dioptimalkan dengan agen penampung `20191212` versi 1.35.0. Namun, dukungan sistem file Amazon EFS memasuki ketersediaan umum dengan versi AMI Amazon ECS yang dioptimalkan `20200319` dengan agen kontainer versi 1.38.0, yang berisi jalur akses Amazon EFS dan fitur otorisasi IAM. Kami menyarankan Anda menggunakan versi AMI Amazon ECS yang dioptimalkan `20200319` atau yang lebih baru untuk menggunakan fitur-fitur ini. Untuk informasi selengkapnya, lihat [Linux Amazon ECS yang dioptimalkan AMIs](ecs-optimized_AMI.md).
**catatan**  
Jika Anda membuat AMI sendiri, Anda harus menggunakan agen kontainer 1.38.0 atau yang lebih baru, `ecs-init` versi 1.38.0-1 atau yang lebih baru, dan jalankan perintah berikut di instans Amazon EC2 Anda untuk mengaktifkan plugin volume Amazon ECS. Perintah akan tergantung pada apakah Anda menggunakan Amazon Linux 2 atau Amazon Linux sebagai citra dasar Anda.  
Amazon Linux 2  

  ```
  yum install amazon-efs-utils
  systemctl enable --now amazon-ecs-volume-plugin
  ```
Amazon Linux  

  ```
  yum install amazon-efs-utils
  sudo shutdown -r now
  ```
+ Untuk tugas yang di-host di Fargate, sistem file Amazon EFS didukung pada platform versi 1.4.0 atau yang lebih baru (Linux). Untuk informasi selengkapnya, lihat [Versi platform Fargate untuk Amazon ECS](platform-fargate.md).
+ Saat menggunakan volume Amazon EFS untuk tugas yang di-host di Fargate, Fargate membuat wadah pengawas yang bertanggung jawab untuk mengelola volume Amazon EFS. Wadah supervisor menggunakan sejumlah kecil memori tugas dan CPU. Kontainer pengawas akan terlihat saat dilakukan kueri titik akhir metadata tugas versi 4. Selain itu, ini terlihat di CloudWatch Container Insights sebagai nama `aws-fargate-supervisor` kontainer. Untuk informasi lebih lanjut saat menggunakan EC2, lihat[Titik akhir metadata tugas Amazon ECS versi 4](task-metadata-endpoint-v4.md). Untuk informasi lebih lanjut saat menggunakan Fargate, lihat. [Titik akhir metadata tugas Amazon ECS versi 4 untuk tugas di Fargate](task-metadata-endpoint-v4-fargate.md)
+ Menggunakan volume Amazon EFS atau menentukan `EFSVolumeConfiguration` tidak didukung pada instans eksternal.
+ Menggunakan volume Amazon EFS didukung untuk tugas yang berjalan di Instans Terkelola Amazon ECS.
+ Kami menyarankan Anda mengatur `ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION` parameter dalam file konfigurasi agen ke nilai yang kurang dari default (sekitar 1 jam). Perubahan ini membantu mencegah kedaluwarsa kredensi pemasangan EFS dan memungkinkan pembersihan dudukan yang tidak digunakan.  Untuk informasi selengkapnya, lihat [Konfigurasi agen kontainer Amazon ECS](ecs-agent-config.md).

## Gunakan titik akses Amazon EFS
<a name="efs-volume-accesspoints"></a>

Titik akses Amazon EFS adalah titik masuk khusus aplikasi ke dalam sistem file EFS untuk mengelola akses aplikasi ke kumpulan data bersama. Untuk informasi lebih lanjut tentang titik akses Amazon EFS dan cara mengontrol akses ke sana, lihat [Bekerja dengan Titik Akses Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html) dalam *Panduan Pengguna Amazon Elastic File System*.

Titik akses dapat menerapkan identitas pengguna, termasuk grup POSIX pengguna, pada semua permintaan sistem file yang dibuat melalui titik akses. Titik akses juga dapat menerapkan direktori root yang berbeda untuk sistem file. Ini agar klien hanya dapat mengakses data di direktori yang ditentukan atau subdirektorinya.

**catatan**  
Saat membuat titik akses EFS, tentukan jalur pada sistem file untuk berfungsi sebagai direktori root. Saat mereferensikan sistem file EFS dengan ID titik akses dalam definisi tugas Amazon ECS Anda, direktori root harus dihilangkan atau disetel ke`/`, yang memberlakukan jalur yang disetel pada titik akses EFS.

Anda dapat menggunakan peran IAM tugas Amazon ECS untuk menegakkan bahwa aplikasi tertentu menggunakan titik akses tertentu. Dengan menggabungkan kebijakan IAM dengan titik akses, Anda dapat memberikan akses aman ke kumpulan data tertentu untuk aplikasi Anda. Untuk informasi selengkapnya tentang cara menggunakan peran IAM tugas, lihat[Peran IAM tugas Amazon ECS](task-iam-roles.md).

# Praktik terbaik untuk menggunakan volume Amazon EFS dengan Amazon ECS
<a name="efs-best-practices"></a>

Catat rekomendasi praktik terbaik berikut saat Anda menggunakan Amazon EFS dengan Amazon ECS.

## Kontrol keamanan dan akses untuk volume Amazon EFS
<a name="storage-efs-security"></a>

Amazon EFS menawarkan fitur kontrol akses yang dapat Anda gunakan untuk memastikan bahwa data yang disimpan dalam sistem file Amazon EFS aman dan hanya dapat diakses dari aplikasi yang membutuhkannya. Anda dapat mengamankan data dengan mengaktifkan enkripsi saat istirahat dan dalam perjalanan. Untuk informasi selengkapnya, lihat [Enkripsi data di Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/encryption.html) di *Panduan Pengguna Amazon Elastic File System*.

Selain enkripsi data, Anda juga dapat menggunakan Amazon EFS untuk membatasi akses ke sistem file. Ada tiga cara untuk menerapkan kontrol akses di EFS.
+ **Grup keamanan** —Dengan target pemasangan Amazon EFS, Anda dapat mengonfigurasi grup keamanan yang digunakan untuk mengizinkan dan menolak lalu lintas jaringan. Anda dapat mengonfigurasi grup keamanan yang dilampirkan ke Amazon EFS untuk mengizinkan lalu lintas NFS (port 2049) dari grup keamanan yang dilampirkan ke instans Amazon ECS Anda atau, saat menggunakan mode `awsvpc` jaringan, tugas Amazon ECS.
+ **IAM** —Anda dapat membatasi akses ke sistem file Amazon EFS menggunakan IAM. Saat dikonfigurasi, tugas Amazon ECS memerlukan peran IAM untuk akses sistem file untuk memasang sistem file EFS. Untuk informasi selengkapnya, lihat [Menggunakan IAM untuk mengontrol akses data sistem file](https://docs.aws.amazon.com/efs/latest/ug/iam-access-control-nfs-efs.html) di *Panduan Pengguna Amazon Elastic File System*.

  Kebijakan IAM juga dapat menerapkan kondisi yang telah ditentukan sebelumnya seperti mewajibkan klien untuk menggunakan TLS saat menyambung ke sistem file Amazon EFS. Untuk informasi selengkapnya, lihat [kunci kondisi Amazon EFS untuk klien](https://docs.aws.amazon.com/efs/latest/ug/iam-access-control-nfs-efs.html#efs-condition-keys-for-nfs) di *Panduan Pengguna Amazon Elastic File System*.
+ Jalur **akses Amazon EFS** —Jalur akses Amazon EFS adalah titik masuk khusus aplikasi ke dalam sistem file Amazon EFS. Anda dapat menggunakan titik akses untuk menegakkan identitas pengguna, termasuk grup POSIX pengguna, untuk semua permintaan sistem file yang dibuat melalui titik akses. Titik akses juga dapat menerapkan direktori root yang berbeda untuk sistem file. Ini agar klien hanya dapat mengakses data di direktori yang ditentukan atau sub-direktorinya.

### Kebijakan IAM
<a name="storage-efs-security-iam"></a>

Anda dapat menggunakan kebijakan IAM untuk mengontrol akses ke sistem file Amazon EFS.

Anda dapat menentukan tindakan berikut untuk klien yang mengakses sistem file menggunakan kebijakan sistem file.


| Tindakan | Deskripsi | 
| --- | --- | 
|  `elasticfilesystem:ClientMount`  |  Menyediakan akses read-only ke sistem file.  | 
|  `elasticfilesystem:ClientWrite`  |  Memberikan izin menulis pada sistem file.  | 
|  `elasticfilesystem:ClientRootAccess`  |  Menyediakan penggunaan pengguna root saat mengakses sistem file.  | 

Anda perlu menentukan setiap tindakan dalam kebijakan. Kebijakan dapat didefinisikan dengan cara-cara berikut:
+ Berbasis klien - Lampirkan kebijakan ke peran tugas

  Tetapkan opsi **otorisasi IAM** saat Anda membuat definisi tugas. 
+ Berbasis sumber daya - Lampirkan kebijakan ke sistem file Amazon EFS

  Jika kebijakan berbasis sumber daya tidak ada, secara default pada pembuatan sistem file akses diberikan kepada semua prinsipal (\$1). 

Saat Anda menyetel opsi **otorisasi IAM**, kami menggabungkan kebijakan yang terkait dengan peran tugas dan berbasis sumber daya Amazon EFS. Opsi **otorisasi IAM** meneruskan identitas tugas (peran tugas) dengan kebijakan ke Amazon EFS. Hal ini memungkinkan kebijakan berbasis sumber daya Amazon EFS memiliki konteks untuk pengguna IAM atau peran yang ditentukan dalam kebijakan. Jika Anda tidak menetapkan opsi, kebijakan tingkat sumber daya Amazon EFS mengidentifikasi pengguna IAM sebagai “anonim”.

Pertimbangkan untuk menerapkan ketiga kontrol akses pada sistem file Amazon EFS untuk keamanan maksimum. Misalnya, Anda dapat mengonfigurasi grup keamanan yang dilampirkan ke titik pemasangan Amazon EFS untuk hanya mengizinkan lalu lintas NFS masuk dari grup keamanan yang terkait dengan instance container atau tugas Amazon ECS Anda. Selain itu, Anda dapat mengonfigurasi Amazon EFS agar memerlukan peran IAM untuk mengakses sistem file, meskipun koneksi berasal dari grup keamanan yang diizinkan. Terakhir, Anda dapat menggunakan jalur akses Amazon EFS untuk menerapkan izin pengguna POSIX dan menentukan direktori root untuk aplikasi.

Cuplikan definisi tugas berikut menunjukkan cara memasang sistem file Amazon EFS menggunakan titik akses.

```
"volumes": [
    {
      "efsVolumeConfiguration": {
        "fileSystemId": "fs-1234",
        "authorizationConfig": {
          "accessPointId": "fsap-1234",
          "iam": "ENABLED"
        },
        "transitEncryption": "ENABLED",
        "rootDirectory": ""
      },
      "name": "my-filesystem"
    }
]
```

## Performa volume Amazon EFS
<a name="storage-efs-performance"></a>

Amazon EFS menawarkan dua mode kinerja: Tujuan Umum dan sistem I/O. General Purpose is suitable for latency-sensitive applications such as content management systems and CI/CD tools. In contrast, Max I/O file Max cocok untuk beban kerja seperti analisis data, pemrosesan media, dan pembelajaran mesin. Beban kerja ini perlu melakukan operasi paralel dari ratusan atau bahkan ribuan kontainer dan membutuhkan throughput agregat dan IOPS setinggi mungkin. Untuk informasi selengkapnya, lihat [mode kinerja Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/performance.html#performancemodes) di *Panduan Pengguna Amazon Elastic File System*.

Beberapa beban kerja sensitif latensi memerlukan I/O tingkat yang lebih tinggi yang disediakan oleh mode I/O kinerja Maks dan latensi yang lebih rendah yang disediakan oleh mode kinerja Tujuan Umum. Untuk jenis beban kerja ini, kami sarankan untuk membuat beberapa sistem file mode kinerja Tujuan Umum. Dengan begitu, Anda dapat menyebarkan beban kerja aplikasi Anda di semua sistem file ini, selama beban kerja dan aplikasi dapat mendukungnya.

## Throughput volume Amazon EFS
<a name="storage-efs-performance-throughput"></a>

*Semua sistem file Amazon EFS memiliki throughput terukur terkait yang ditentukan oleh jumlah throughput yang disediakan untuk sistem file yang menggunakan *Provisioned Throughput atau jumlah data yang disimpan dalam kelas penyimpanan EFS Standard atau One Zone untuk sistem file yang menggunakan Bursting Throughput*.* Untuk informasi selengkapnya, lihat [Memahami throughput terukur](https://docs.aws.amazon.com/efs/latest/ug/performance.html#read-write-throughput) di *Panduan Pengguna Amazon Elastic File System*.

Mode throughput default untuk sistem file Amazon EFS adalah mode bursting. Dengan mode bursting, throughput yang tersedia untuk sistem file masuk atau keluar saat sistem file tumbuh. Karena beban kerja berbasis file biasanya melonjak, membutuhkan tingkat throughput yang tinggi untuk periode waktu dan tingkat throughput yang lebih rendah sepanjang waktu, Amazon EFS dirancang untuk meledak untuk memungkinkan tingkat throughput yang tinggi untuk periode waktu tertentu. Selain itu, karena banyak beban kerja yang berat baca, operasi baca diukur pada rasio 1:3 terhadap operasi NFS lainnya (seperti menulis). 

Semua sistem file Amazon EFS memberikan kinerja dasar yang konsisten sebesar 50 MB/s untuk setiap TB penyimpanan Amazon EFS Standard atau Amazon EFS One Zone. Semua sistem file (terlepas dari ukurannya) dapat meledak hingga 100 MB/s. File systems with more than 1TB of EFS Standard or EFS One Zone storage can burst to 100 MB/s for each TB. Because read operations are metered at a 1:3 ratio, you can drive up to 300 MiBs/s untuk setiap TiB throughput baca. Saat Anda menambahkan data ke sistem file, throughput maksimum yang tersedia untuk sistem file akan diskalakan secara linier dan otomatis dengan penyimpanan Anda di kelas penyimpanan Amazon EFS Standard. Jika Anda membutuhkan lebih banyak throughput daripada yang dapat Anda capai dengan jumlah data yang disimpan, Anda dapat mengonfigurasi Throughput yang Disediakan ke jumlah tertentu yang dibutuhkan beban kerja Anda.

Throughput sistem file dibagikan di semua instans Amazon EC2 yang terhubung ke sistem file. Misalnya, sistem file 1TB yang dapat meledak hingga 100 MB/s throughput dapat mendorong 100 MB/s dari satu instans Amazon EC2 dapat masing-masing drive 10 MB/s. Untuk informasi selengkapnya, lihat [Performa Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/performance.html) di *Panduan Pengguna Amazon Elastic File System*.

## Mengoptimalkan biaya untuk volume Amazon EFS
<a name="storage-efs-costopt"></a>

Amazon EFS menyederhanakan penyimpanan penskalaan untuk Anda. Sistem file Amazon EFS tumbuh secara otomatis saat Anda menambahkan lebih banyak data. Terutama dengan mode Amazon EFS *Bursting Throughput*, throughput di Amazon EFS meningkat seiring dengan bertambahnya ukuran sistem file Anda di kelas penyimpanan standar. Untuk meningkatkan throughput tanpa membayar biaya tambahan untuk throughput yang disediakan pada sistem file EFS, Anda dapat berbagi sistem file Amazon EFS dengan beberapa aplikasi. Menggunakan jalur akses Amazon EFS, Anda dapat menerapkan isolasi penyimpanan dalam sistem file Amazon EFS bersama. Dengan demikian, meskipun aplikasi masih berbagi sistem file yang sama, mereka tidak dapat mengakses data kecuali Anda mengotorisasi itu.

Seiring pertumbuhan data Anda, Amazon EFS membantu Anda memindahkan file yang jarang diakses secara otomatis ke kelas penyimpanan yang lebih rendah. Kelas penyimpanan Amazon EFS Standard-Infrequent Access (IA) mengurangi biaya penyimpanan untuk file yang tidak diakses setiap hari. Ini dilakukan tanpa mengorbankan ketersediaan tinggi, daya tahan tinggi, elastisitas, dan akses sistem file POSIX yang disediakan Amazon EFS. Untuk informasi selengkapnya, lihat [kelas penyimpanan EFS](https://docs.aws.amazon.com/efs/latest/ug/features.html) di *Panduan Pengguna Amazon Elastic File System*.

Pertimbangkan untuk menggunakan kebijakan siklus hidup Amazon EFS untuk menghemat uang secara otomatis dengan memindahkan file yang jarang diakses ke penyimpanan Amazon EFS IA. Untuk informasi selengkapnya, lihat [Manajemen siklus hidup Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/lifecycle-management-efs.html) di *Panduan Pengguna Amazon Elastic File System*.

Saat membuat sistem file Amazon EFS, Anda dapat memilih apakah Amazon EFS mereplikasi data Anda di beberapa Availability Zone (Standar) atau menyimpan data Anda secara berlebihan dalam satu Availability Zone. Kelas penyimpanan Amazon EFS One Zone dapat mengurangi biaya penyimpanan dengan margin yang signifikan dibandingkan dengan kelas penyimpanan Amazon EFS Standard. Pertimbangkan untuk menggunakan kelas penyimpanan Amazon EFS One Zone untuk beban kerja yang tidak memerlukan ketahanan Multi-AZ. Anda dapat mengurangi biaya penyimpanan Amazon EFS One Zone dengan memindahkan file yang jarang diakses ke Amazon EFS One Zone-Infrequent Access. Untuk informasi selengkapnya, lihat [Amazon EFS Infrequent Access](https://aws.amazon.com/efs/features/infrequent-access/).

## Perlindungan data volume Amazon EFS
<a name="storage-efs-dataprotection"></a>

Amazon EFS menyimpan data Anda secara berlebihan di beberapa Availability Zone untuk sistem file yang menggunakan kelas penyimpanan Standar. Jika Anda memilih kelas penyimpanan Amazon EFS One Zone, data Anda disimpan secara berlebihan dalam satu Availability Zone. Selain itu, Amazon EFS dirancang untuk memberikan daya tahan 99,999999999% (11 9) selama tahun tertentu.

Seperti halnya lingkungan apa pun, ini adalah praktik terbaik untuk memiliki cadangan dan membangun perlindungan terhadap penghapusan yang tidak disengaja. Untuk data Amazon EFS, praktik terbaik tersebut mencakup penggunaan cadangan yang berfungsi dan diuji secara teratur AWS Backup. Sistem file yang menggunakan kelas penyimpanan Amazon EFS One Zone dikonfigurasi untuk secara otomatis mencadangkan file secara default pada pembuatan sistem file kecuali Anda memilih untuk menonaktifkan fungsi ini. Untuk informasi selengkapnya, lihat [Mencadangkan sistem file EFS](https://docs.aws.amazon.com/efs/latest/ug/awsbackup.html) di *Panduan Pengguna Amazon Elastic File System*.

# Menentukan sistem file Amazon EFS dalam definisi tugas Amazon ECS
<a name="specify-efs-config"></a>

Untuk menggunakan volume sistem file Amazon EFS untuk container, Anda harus menentukan konfigurasi volume dan mount point dalam definisi tugas. Cuplikan JSON definisi tugas berikut menunjukkan sintaks untuk `volumes` dan `mountPoints` objek untuk wadah.

```
{
    "containerDefinitions": [
        {
            "name": "container-using-efs",
            "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
            "entryPoint": [
                "sh",
                "-c"
            ],
            "command": [
                "ls -la /mount/efs"
            ],
            "mountPoints": [
                {
                    "sourceVolume": "myEfsVolume",
                    "containerPath": "/mount/efs",
                    "readOnly": true
                }
            ]
        }
    ],
    "volumes": [
        {
            "name": "myEfsVolume",
            "efsVolumeConfiguration": {
                "fileSystemId": "fs-1234",
                "rootDirectory": "/path/to/my/data",
                "transitEncryption": "ENABLED",
                "transitEncryptionPort": integer,
                "authorizationConfig": {
                    "accessPointId": "fsap-1234",
                    "iam": "ENABLED"
                }
            }
        }
    ]
}
```

`efsVolumeConfiguration`  
Tipe: Objek  
Wajib: Tidak  
Parameter ini ditentukan saat menggunakan volume Amazon EFS.    
`fileSystemId`  
Tipe: String  
Diperlukan: Ya  
ID sistem file Amazon EFS yang akan digunakan.  
`rootDirectory`  
Tipe: String  
Wajib: Tidak  
Direktori dalam sistem file Amazon EFS untuk pemasangan sebagai direktori asal di dalam host. Jika parameter ini diabaikan, asal volume Amazon EFS akan digunakan. Menentukan `/` memiliki efek yang sama seperti mengabaikan parameter ini.  
Jika titik akses EFS ditentukan dalam `authorizationConfig`, parameter direktori root harus dihilangkan atau diatur ke `/`, yang memberlakukan jalur yang diatur pada titik akses EFS.  
`transitEncryption`  
Jenis: String  
Nilai yang valid: `ENABLED` \$1 `DISABLED`  
Wajib: Tidak  
Menentukan apakah akan mengaktifkan enkripsi untuk data Amazon EFS dalam perjalanan antara host Amazon ECS dan server Amazon EFS. Jika otorisasi Amazon EFS IAM digunakan, enkripsi transit harus diaktifkan. Jika parameter ini diabaikan, nilai default `DISABLED` akan digunakan. Untuk informasi lebih lanjut, lihat [Pengenkripsian Data Saat Transit](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html) di *Panduan Pengguna Amazon Elastic File System*.  
`transitEncryptionPort`  
Tipe: Integer  
Wajib: Tidak  
Port yang akan digunakan saat mengirim data terenkripsi antara host Amazon ECS dan server Amazon EFS. Jika Anda tidak menentukan port enkripsi transit, strategi pemilihan port yang digunakan oleh pembantu pemasangan Amazon EFS akan digunakan. Untuk informasi lebih lanjut, lihat [Pembantu Pemasangan EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-mount-helper.html) dalam *Panduan Pengguna Amazon Elastic File System*.  
`authorizationConfig`  
Tipe: Objek  
Wajib: Tidak  
Detail konfigurasi otorisasi untuk sistem file Amazon EFS.    
`accessPointId`  
Tipe: String  
Wajib: Tidak  
ID titik akses yang akan digunakan. Jika titik akses ditentukan, nilai direktori root di dalam `efsVolumeConfiguration` harus dihilangkan atau disetel ke`/`, yang memberlakukan jalur yang ditetapkan pada titik akses EFS. Jika titik akses digunakan, enkripsi transit harus diaktifkan di `EFSVolumeConfiguration`. Untuk informasi lebih lanjut, lihat [Bekerja dengan Titik Akses Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html) dalam *Panduan Pengguna Amazon Elastic File System*.  
`iam`  
Tipe: String  
Nilai yang valid: `ENABLED` \$1 `DISABLED`  
Wajib: Tidak  
 Menentukan apakah akan menggunakan peran IAM tugas Amazon ECS yang ditentukan dalam definisi tugas saat memasang sistem file Amazon EFS. Jika diaktifkan, enkripsi transit harus diaktifkan di `EFSVolumeConfiguration`. Jika Anda menghilangkan parameter ini, nilai default `DISABLED` akan digunakan. Untuk informasi selengkapnya, lihat [IAM Role pada Tugas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html).

# Mengonfigurasi sistem file Amazon EFS untuk Amazon ECS menggunakan konsol
<a name="tutorial-efs-volumes"></a>

Pelajari cara menggunakan sistem file Amazon Elastic File System (Amazon EFS) dengan Amazon ECS.

## Langkah 1: Buat cluster Amazon ECS
<a name="efs-create-cluster"></a>

Gunakan langkah-langkah berikut untuk membuat cluster Amazon ECS. 

**Untuk membuat cluster baru (konsol Amazon ECS)**

Sebelum Anda mulai, tetapkan izin IAM yang sesuai. Untuk informasi selengkapnya, lihat [Contoh cluster Amazon ECS](security_iam_id-based-policy-examples.md#IAM_cluster_policies).

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

1. Dari bilah navigasi, pilih Wilayah untuk digunakan.

1. Di panel navigasi, pilih **Klaster**.

1. Pada halaman **Klaster**, pilih **Buat klaster**.

1. Di bawah **konfigurasi Cluster****, untuk nama Cluster**, masukkan `EFS-tutorial` untuk nama cluster.

1. (Opsional) Untuk mengubah VPC dan subnet tempat tugas dan layanan Anda diluncurkan, di bawah **Jaringan**, lakukan salah satu operasi berikut:
   + Untuk menghapus subnet, di bawah **Subnet**, pilih **X** untuk setiap subnet yang ingin Anda hapus.
   + **Untuk mengubah ke VPC selain VPC default, di bawah **VPC**, pilih **VPC yang ada, lalu** di bawah Subnet, pilih **setiap subnet**.**

1.  **Untuk menambahkan instans Amazon EC2 ke klaster, perluas **Infrastruktur**, lalu pilih instans Amazon EC2.** Selanjutnya, konfigurasikan grup Auto Scaling yang bertindak sebagai penyedia kapasitas:

   1. Untuk membuat grup Auto Scaling, dari grup **Auto Scaling (ASG**), **pilih Buat grup baru**, lalu berikan detail berikut tentang grup:
     + Untuk **Sistem Operasi/Arsitektur**, pilih Amazon Linux 2.
     + Untuk **Tipe instans EC2**, pilih `t2.micro`.

        Untuk **key pair SSH**, pilih pair yang membuktikan identitas Anda saat Anda terhubung ke instance.
     + Untuk **Kapasitas**, masukkan`1`.

1. Pilih **Buat**.

## Langkah 2: Buat grup keamanan untuk instans Amazon EC2 dan sistem file Amazon EFS
<a name="efs-security-group"></a>

Pada langkah ini, Anda membuat grup keamanan untuk instans Amazon EC2 yang memungkinkan lalu lintas jaringan masuk pada port 80 dan sistem file Amazon EFS Anda yang memungkinkan akses masuk dari instans kontainer Anda. 

Buat grup keamanan untuk instans Amazon EC2 Anda dengan opsi berikut:
+ **Nama grup keamanan** - nama unik untuk grup keamanan Anda.
+ **VPC** - VPC yang Anda identifikasi sebelumnya untuk cluster Anda.
+ **Aturan ke dalam**
  + **Jenis** - **HTTP**
  + **Sumber** - **0.0.0.0/0**.

Buat grup keamanan untuk sistem file Amazon EFS Anda dengan opsi berikut:
+ **Nama grup keamanan** - nama unik untuk grup keamanan Anda. Misalnya, `EFS-access-for-sg-dc025fa2`.
+ **VPC** - VPC yang Anda identifikasi sebelumnya untuk cluster Anda.
+ **Aturan ke dalam**
  + **Jenis** - **NFS**
  + **Sumber** - **Kustom** dengan ID grup keamanan yang Anda buat untuk instance Anda.

Untuk informasi tentang cara membuat grup keamanan, lihat [Membuat grup keamanan untuk instans Amazon EC2 Anda di Panduan](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-security-group.html) Pengguna *Amazon EC2*.

## Langkah 3: Buat sistem file Amazon EFS
<a name="efs-create-filesystem"></a>

Pada langkah ini, Anda membuat sistem file Amazon EFS.

**Untuk membuat sistem file Amazon EFS untuk tugas Amazon ECS.**

1. Buka konsol Amazon Elastic File System di [https://console.aws.amazon.com/efs/](https://console.aws.amazon.com/efs/).

1. Pilih **Buat sistem file**.

1. Masukkan nama untuk sistem file Anda dan kemudian pilih VPC tempat instance container Anda di-host. Secara default, setiap subnet di VPC tertentu menerima target pemasangan yang menggunakan grup keamanan default untuk VPC tersebut. Kemudian, pilih **Sesuaikan**.
**catatan**  
Tutorial ini mengasumsikan bahwa sistem file Amazon EFS, cluster Amazon ECS, instance container, dan tugas Anda berada dalam VPC yang sama. *Untuk informasi selengkapnya tentang memasang sistem file dari VPC yang berbeda, lihat [Panduan: Memasang sistem file dari VPC yang berbeda di Panduan Pengguna Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-different-vpc.html).*

1. Pada halaman **Pengaturan sistem file**, konfigurasikan pengaturan opsional dan kemudian di bawah **Pengaturan kinerja**, pilih mode throughput **meledak** untuk sistem file Anda. Setelah Anda mengonfigurasi pengaturan, pilih **Berikutnya**.

   1. (Opsional) Tambahkan untuk menandai untuk sistem file Anda. Sebagai contoh, Anda dapat menentukan nama unik untuk sistem file dengan memasukkan nama tersebut di kolom **Nilai** di samping kunci **Nama**.

   1. (Opsional) Aktifkan manajemen siklus hidup untuk menghemat uang pada penyimpanan yang jarang diakses. Untuk informasi selengkapnya, lihat [EFS Lifecycle Management](https://docs.aws.amazon.com/efs/latest/ug/lifecycle-management-efs.html) di *Panduan Pengguna Amazon Elastic File System*.

   1. (Opsional) Aktifkan enkripsi. Pilih kotak centang untuk mengaktifkan enkripsi sistem file Amazon EFS Anda saat istirahat.

1. Pada halaman **Akses jaringan**, di bawah **Target Mount**, ganti konfigurasi grup keamanan yang ada untuk setiap zona ketersediaan dengan grup keamanan yang Anda buat untuk sistem file, [Langkah 2: Buat grup keamanan untuk instans Amazon EC2 dan sistem file Amazon EFS](#efs-security-group) lalu pilih **Berikutnya**.

1.  Anda tidak perlu mengkonfigurasi **kebijakan sistem File** untuk tutorial ini, sehingga Anda dapat melewati bagian dengan memilih **Berikutnya**.

1. Tinjau opsi sistem file Anda dan pilih **Buat** untuk menyelesaikan proses.

1. Dari layar **Sistem file**, rekam **ID sistem File**. Pada langkah berikutnya, Anda akan mereferensikan nilai ini dalam definisi tugas Amazon ECS Anda.

## Langkah 4: Tambahkan konten ke sistem file Amazon EFS
<a name="efs-add-content"></a>

Pada langkah ini, Anda memasang sistem file Amazon EFS ke instans Amazon EC2 dan menambahkan konten ke dalamnya. Proses ini bertujuan untuk menguji tutorial ini, untuk menggambarkan sifat persisten data. Saat menggunakan fitur ini, Anda biasanya memiliki aplikasi atau metode lain untuk menulis data ke sistem file Amazon EFS Anda.

**Untuk membuat instans Amazon EC2 dan memasang sistem file Amazon EFS**

1. Buka konsol Amazon EC2 di. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Pilih **Luncurkan Instans**.

1. Di bawah Gambar **Aplikasi dan OS (Gambar Mesin Amazon)**, pilih **Amazon Linux 2 AMI (HVM**).

1. Di bawah **tipe Instance**, pertahankan tipe instance default,`t2.micro`.

1.  Di bawah **Key pair (login)**, pilih key pair untuk akses SSH ke instance.

1. Di bawah **Pengaturan jaringan**, pilih VPC yang Anda tentukan untuk sistem file Amazon EFS dan kluster Amazon ECS. Pilih subnet dan grup keamanan instance yang dibuat di[Langkah 2: Buat grup keamanan untuk instans Amazon EC2 dan sistem file Amazon EFS](#efs-security-group). Konfigurasikan grup keamanan instans. Pastikan bahwa **Auto-assign IP publik diaktifkan**.

1. Di bawah **Konfigurasi penyimpanan**, pilih tombol **Edit** untuk sistem file dan kemudian pilih **EFS**. Pilih sistem file yang Anda buat[Langkah 3: Buat sistem file Amazon EFS](#efs-create-filesystem). Anda dapat secara opsional mengubah titik pemasangan atau meninggalkan nilai default.
**penting**  
Anda harus memilih subnet sebelum Anda dapat menambahkan sistem file ke instance.

1. Hapus secara **otomatis membuat dan melampirkan grup keamanan**. Biarkan kotak centang lainnya dipilih. Pilih **Tambahkan sistem file bersama**.

1. Di bawah **Detail Lanjutan**, pastikan bahwa skrip data pengguna diisi secara otomatis dengan langkah-langkah pemasangan sistem file Amazon EFS.

1.  Di bawah **Ringkasan**, pastikan **Jumlah instans** adalah **1**. Pilih **Luncurkan instans**.

1. Pada halaman **Luncurkan instans**, pilih **Lihat semua instance** untuk melihat status instance Anda. Awalnya, status **status Instance** adalah`PENDING`. Setelah status berubah `RUNNING` dan instance melewati semua pemeriksaan status, instance siap digunakan.

Sekarang, Anda terhubung ke instans Amazon EC2 dan menambahkan konten ke sistem file Amazon EFS.

**Untuk terhubung ke instans Amazon EC2 dan menambahkan konten ke sistem file Amazon EFS**

1. SSH ke instans Amazon EC2 yang Anda buat. Untuk informasi selengkapnya, lihat [Connect ke instans Linux menggunakan SSH](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html) di Panduan *Pengguna Amazon EC2*.

1. Dari jendela terminal, jalankan **df -T** perintah untuk memverifikasi bahwa sistem file Amazon EFS sudah terpasang. Pada output berikut, kami telah menyoroti pemasangan sistem file Amazon EFS.

   ```
   $ df -T
   Filesystem     Type            1K-blocks    Used        Available Use% Mounted on
   devtmpfs       devtmpfs           485468       0           485468   0% /dev
   tmpfs          tmpfs              503480       0           503480   0% /dev/shm
   tmpfs          tmpfs              503480     424           503056   1% /run
   tmpfs          tmpfs              503480       0           503480   0% /sys/fs/cgroup
   /dev/xvda1     xfs               8376300 1310952          7065348  16% /
   127.0.0.1:/    nfs4     9007199254739968       0 9007199254739968   0% /mnt/efs/fs1
   tmpfs          tmpfs              100700       0           100700   0% /run/user/1000
   ```

1. Arahkan ke direktori tempat sistem file Amazon EFS dipasang. Dalam contoh di atas, yaitu `/mnt/efs/fs1`.

1. Buat file bernama `index.html` dengan konten berikut:

   ```
   <html>
       <body>
           <h1>It Works!</h1>
           <p>You are using an Amazon EFS file system for persistent container storage.</p>
       </body>
   </html>
   ```

## Langkah 5: Buat ketentuan tugas
<a name="efs-task-def"></a>

Ketentuan tugas berikut membuat volume data dengan nama `efs-html`. Pemasangan kontainer `nginx` volume data host pada root NGINX, `/usr/share/nginx/html`.

**Untuk membuat definisi tugas baru menggunakan konsol Amazon ECS**

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

1. Di panel navigasi, pilih **Definisi tugas**.

1. Pilih **Buat definisi tugas baru**, **Buat definisi tugas baru dengan JSON**.

1. Di kotak editor JSON, salin dan tempel teks JSON berikut, ganti `fileSystemId` dengan ID sistem file Amazon EFS Anda.

   ```
   {
       "containerDefinitions": [
           {
               "memory": 128,
               "portMappings": [
                   {
                       "hostPort": 80,
                       "containerPort": 80,
                       "protocol": "tcp"
                   }
               ],
               "essential": true,
               "mountPoints": [
                   {
                       "containerPath": "/usr/share/nginx/html",
                       "sourceVolume": "efs-html"
                   }
               ],
               "name": "nginx",
               "image": "public.ecr.aws/docker/library/nginx:latest"
           }
       ],
       "volumes": [
           {
               "name": "efs-html",
               "efsVolumeConfiguration": {
                   "fileSystemId": "fs-1324abcd",
                   "transitEncryption": "ENABLED"
               }
           }
       ],
       "family": "efs-tutorial",
       "executionRoleArn":"arn:aws:iam::111122223333:role/ecsTaskExecutionRole"
   }
   ```
**catatan**  
Peran IAM eksekusi tugas Amazon ECS tidak memerlukan izin khusus terkait Amazon EFS untuk memasang sistem file Amazon EFS. Secara default, jika tidak ada kebijakan berbasis sumber daya Amazon EFS, akses diberikan ke semua prinsipal (\$1) pada pembuatan sistem file.  
Peran tugas Amazon ECS hanya diperlukan jika “otorisasi EFS IAM” diaktifkan dalam definisi tugas Amazon ECS. Saat diaktifkan, identitas peran tugas harus diizinkan mengakses sistem file Amazon EFS dalam kebijakan berbasis sumber daya Amazon EFS, dan akses anonim harus dinonaktifkan.

1. Pilih **Buat**.

## Langkah 6: Jalankan tugas dan lihat hasilnya
<a name="efs-run-task"></a>

Sekarang setelah sistem file Amazon EFS Anda dibuat dan ada konten web untuk penampung NGINX untuk disajikan, Anda dapat menjalankan tugas menggunakan definisi tugas yang Anda buat. Server web NGINX melayani halaman HTML sederhana Anda. Jika Anda memperbarui konten di sistem file Amazon EFS Anda, perubahan tersebut disebarkan ke wadah apa pun yang juga telah memasang sistem file tersebut.

Tugas berjalan di subnet yang Anda tentukan untuk cluster.

**Untuk menjalankan tugas dan melihat hasilnya menggunakan konsol**

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

1. Pada halaman **klaster**, pilih klaster tempat tugas mandiri dijalankan.

   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/tutorial-efs-volumes.html)

1. (Opsional) Pilih bagaimana tugas terjadwal Anda didistribusikan di seluruh infrastruktur klaster Anda. Perluas **konfigurasi Compute**, lalu lakukan hal berikut:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonECS/latest/developerguide/tutorial-efs-volumes.html)

1. Untuk **Jenis aplikasi**, pilih **Tugas**.

1. Untuk **definisi Tugas**, pilih definisi `efs-tutorial` tugas yang Anda buat sebelumnya.

1. Untuk **tugas yang diinginkan**, masukkan`1`.

1. Pilih **Buat**.

1. Pada halaman **Cluster**, pilih **Infrastruktur**.

1. Di bawah **Instans Kontainer**, pilih instance kontainer untuk dihubungkan.

1. Pada halaman **Container Instance**, di bawah **Networking**, rekam **IP Publik** untuk instans Anda.

1. Buka browser dan masukkan alamat IP publik. Anda akan melihat pesan berikut:

   ```
   It works!
   You are using an Amazon EFS file system for persistent container storage.
   ```
**catatan**  
Jika Anda tidak melihat pesan, pastikan bahwa grup keamanan untuk instance container Anda mengizinkan lalu lintas jaringan masuk pada port 80 dan grup keamanan untuk sistem file Anda memungkinkan akses masuk dari instance container.

# Gunakan FSx untuk volume Server File Windows dengan Amazon ECS
<a name="wfsx-volumes"></a>

FSx untuk Windows File Server menyediakan server file Windows yang dikelola sepenuhnya, yang didukung oleh sistem file Windows. Saat menggunakan FSx untuk Windows File Server bersama dengan ECS, Anda dapat menyediakan tugas Windows Anda dengan penyimpanan file statis yang persisten, terdistribusi, bersama, dan statis. Untuk informasi selengkapnya, lihat [Apa itu FSx untuk Windows File Server?](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) .

**catatan**  
Instans EC2 yang menggunakan AMI Penuh Windows Server 2016 yang dioptimalkan Amazon ECS tidak mendukung FSx volume tugas Windows File Server ECS.  
Anda tidak dapat menggunakan FSx volume Windows File Server dalam wadah Windows pada konfigurasi Fargate. Sebagai gantinya, Anda dapat [memodifikasi kontainer untuk memasangnya saat startup](https://aws.amazon.com/blogs/containers/use-smb-storage-with-windows-containers-on-aws-fargate/).

Anda dapat menggunakan Windows File Server FSx untuk menyebarkan beban kerja Windows yang memerlukan akses ke penyimpanan eksternal bersama, penyimpanan Regional yang sangat tersedia, atau penyimpanan throughput tinggi. Anda dapat memasang satu atau beberapa FSx volume sistem file Windows File Server ke wadah Amazon ECS yang berjalan pada instans Amazon ECS Windows. Anda dapat berbagi FSx untuk volume sistem file Windows File Server antara beberapa wadah Amazon ECS dalam satu tugas Amazon ECS.

Untuk mengaktifkan penggunaan FSx untuk Windows File Server dengan ECS, sertakan FSx untuk Windows File Server ID sistem file dan informasi terkait dalam definisi tugas. Ini ada dalam contoh cuplikan JSON definisi tugas berikut. Sebelum Anda membuat dan menjalankan definisi tugas, Anda memerlukan yang berikut ini.
+ Instans ECS Windows EC2 yang bergabung ke domain yang valid. Ini dapat di-host oleh Active Directory lokal atau Direktori Aktif yang dihosting sendiri di Amazon EC2. [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html)
+ Parameter AWS Secrets Manager rahasia atau Systems Manager yang berisi kredensyal yang digunakan untuk bergabung dengan domain Active Directory dan melampirkan sistem file FSx untuk Windows File Server. Nilai kredensial adalah kredensial nama dan kata sandi yang Anda masukkan saat membuat Direktori Aktif.

Untuk tutorial terkait, lihat[Pelajari cara mengonfigurasi FSx sistem file Windows File Server untuk Amazon ECS](tutorial-wfsx-volumes.md).

## Pertimbangan-pertimbangan
<a name="wfsx-volume-considerations"></a>

Pertimbangkan hal berikut saat menggunakan FSx volume Windows File Server:
+ Volume FSx for Windows File Server didukung secara native dengan Amazon ECS pada instans Windows Amazon EC2 — Amazon ECS secara otomatis mengelola pemasangan melalui konfigurasi definisi tugas.

  Pada instans Amazon EC2 Linux, Amazon ECS tidak dapat secara otomatis memasang volume FSx for Windows File Server melalui definisi tugas. Namun, Anda dapat memasang file share FSx for Windows File Server secara manual pada instans Linux EC2 di tingkat host dan kemudian mengikat jalur itu ke wadah Amazon ECS Anda. Untuk informasi selengkapnya, lihat [Memasang berbagi FSx file Amazon dari Linux](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/map-shares-linux.html).
**penting**  
Ini adalah konfigurasi yang dikelola sendiri. Untuk panduan tentang pemasangan dan pemeliharaan FSx untuk berbagi file Windows File Server di Linux, lihat [dokumentasi FSx untuk Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/).
**penting**  
Saat menggunakan berbagi FSx for Windows File Server yang dipasang secara manual di instans Linux EC2, Amazon FSx ECS dan untuk Windows File Server beroperasi secara independen - Amazon ECS tidak memantau pemasangan FSx Amazon FSx , dan untuk Windows File Server tidak melacak penempatan tugas Amazon ECS atau peristiwa siklus hidup. Anda bertanggung jawab untuk memastikan jangkauan jaringan antara instans penampung Amazon ECS dan sistem FSx file Amazon, menerapkan pemeriksaan kesehatan pemasangan, dan menangani logika penyambungan ulang untuk mentolerir peristiwa failover.
+ FSx untuk Windows File Server dengan Amazon ECS tidak mendukung AWS Fargate.
+ FSx untuk Windows File Server dengan Amazon ECS tidak didukung di Instans Terkelola Amazon ECS.
+ FSx untuk Windows File Server dengan Amazon ECS dengan mode `awsvpc` jaringan memerlukan versi `1.54.0` atau yang lebih baru dari agen penampung.
+ Jumlah maksimum huruf drive yang dapat digunakan untuk tugas Amazon ECS adalah 23. Setiap tugas dengan volume FSx untuk Windows File Server mendapat huruf drive yang ditetapkan untuk itu.
+ Secara default, waktu pembersihan sumber daya tugas adalah tiga jam setelah tugas berakhir. Bahkan jika tidak ada tugas yang menggunakannya, pemetaan file yang dibuat oleh tugas tetap ada selama tiga jam. Waktu pembersihan default dapat dikonfigurasi dengan menggunakan variabel lingkungan Amazon ECS. `ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION` Untuk informasi selengkapnya, lihat [Konfigurasi agen kontainer Amazon ECS](ecs-agent-config.md).
+ Tugas biasanya hanya berjalan di VPC yang sama dengan sistem file FSx untuk Windows File Server. Namun, dimungkinkan untuk memiliki dukungan lintas-VPC jika ada konektivitas jaringan yang mapan antara VPC cluster Amazon ECS dan sistem file FSx untuk Windows File Server melalui VPC peering.
+ Anda mengontrol akses ke sistem file FSx for Windows File Server di tingkat jaringan dengan mengonfigurasi grup keamanan VPC. Hanya tugas yang di-host pada instans EC2 yang bergabung ke domain Active Directory dengan grup keamanan Active Directory yang dikonfigurasi dengan benar yang dapat mengakses berbagi file FSx untuk Windows File Server. Jika grup keamanan salah dikonfigurasi, Amazon ECS gagal meluncurkan tugas dengan pesan galat berikut: `unable to mount file system fs-id` 
+ FSx untuk Windows File Server terintegrasi dengan AWS Identity and Access Management (IAM) untuk mengontrol tindakan yang dapat dilakukan oleh pengguna dan grup IAM Anda secara spesifik FSx untuk sumber daya Windows File Server. Dengan otorisasi klien, pelanggan dapat menentukan peran IAM yang memungkinkan atau menolak akses ke spesifik FSx untuk sistem file Windows File Server, secara opsional memerlukan akses hanya-baca, dan secara opsional mengizinkan atau melarang akses root ke sistem file dari klien. Untuk informasi selengkapnya, lihat [Keamanan](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/security.html) di Panduan Pengguna Amazon FSx Windows.

# Praktik terbaik FSx untuk menggunakan Windows File Server dengan Amazon ECS
<a name="wfsx-best-practices"></a>

Catat rekomendasi praktik terbaik berikut saat Anda menggunakan FSx Windows File Server dengan Amazon ECS.

## Kontrol keamanan dan akses FSx untuk Windows File Server
<a name="wfsx-security-access-controls"></a>

FSx untuk Windows File Server menawarkan fitur kontrol akses berikut yang dapat Anda gunakan untuk memastikan bahwa data yang FSx disimpan dalam sistem file Windows File Server aman dan hanya dapat diakses dari aplikasi yang membutuhkannya.

### Enkripsi data FSx untuk volume Windows File Server
<a name="storage-fsx-security-encryption"></a>

FSx untuk Windows File Server mendukung dua bentuk enkripsi untuk sistem file. Mereka adalah enkripsi data dalam perjalanan dan enkripsi saat istirahat. Enkripsi data dalam perjalanan didukung pada berbagi file yang dipetakan pada instance kontainer yang mendukung protokol SMB 3.0 atau yang lebih baru. Enkripsi data saat istirahat diaktifkan secara otomatis saat membuat sistem FSx file Amazon. Amazon FSx secara otomatis mengenkripsi data dalam perjalanan menggunakan enkripsi SMB saat Anda mengakses sistem file Anda tanpa perlu memodifikasi aplikasi Anda. Untuk informasi selengkapnya, lihat [Enkripsi data FSx di Amazon](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/encryption.html) *di Panduan Pengguna Server File Amazon FSx untuk Windows*.

### Gunakan Windows ACLs untuk kontrol akses tingkat folder
<a name="storage-fsx-security-access"></a>

Instans Windows Amazon EC2 mengakses berbagi FSx file Amazon menggunakan kredensyal Direktori Aktif. Ini menggunakan daftar kontrol akses Windows standar (ACLs) untuk kontrol akses tingkat file dan tingkat folder berbutir halus. Anda dapat membuat beberapa kredensil, masing-masing untuk folder tertentu dalam berbagi yang memetakan ke tugas tertentu.

Dalam contoh berikut, tugas memiliki akses ke folder `App01` menggunakan kredensi yang disimpan di Secrets Manager. Nama Sumber Daya Amazon (ARN) adalah. `1234`

```
"rootDirectory": "\\path\\to\\my\\data\App01",
"credentialsParameter": "arn-1234",
"domain": "corp.fullyqualified.com",
```

Dalam contoh lain, tugas memiliki akses ke folder `App02` menggunakan kredensi yang disimpan di Secrets Manager. ARN-nya adalah. `6789`

```
"rootDirectory": "\\path\\to\\my\\data\App02",
"credentialsParameter": "arn-6789",
"domain": "corp.fullyqualified.com",
```

# Tentukan sistem file Windows File Server FSx untuk Windows dalam definisi tugas Amazon ECS
<a name="specify-wfsx-config"></a>

 FSx Untuk menggunakan volume sistem file Windows File Server untuk container Anda, tentukan konfigurasi volume dan mount point dalam definisi tugas Anda. Cuplikan JSON definisi tugas berikut menunjukkan sintaks untuk `volumes` dan `mountPoints` objek untuk wadah.

```
{
    "containerDefinitions": [
        {
            "entryPoint": [
                "powershell",
                "-Command"
            ],
            "portMappings": [],
            "command": ["New-Item -Path C:\\fsx-windows-dir\\index.html -ItemType file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>It Works!</h2> <p>You are using Amazon FSx for Windows File Server file system for persistent container storage.</p>' -Force"],
            "cpu": 512,
            "memory": 256,
            "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
            "essential": false,
            "name": "container1",
            "mountPoints": [
                {
                    "sourceVolume": "fsx-windows-dir",
                    "containerPath": "C:\\fsx-windows-dir",
                    "readOnly": false
                }
            ]
        },
        {
            "entryPoint": [
                "powershell",
                "-Command"
            ],
            "portMappings": [
                {
                    "hostPort": 443,
                    "protocol": "tcp",
                    "containerPort": 80
                }
            ],
            "command": ["Remove-Item -Recurse C:\\inetpub\\wwwroot\\* -Force; Start-Sleep -Seconds 120; Move-Item -Path C:\\fsx-windows-dir\\index.html -Destination C:\\inetpub\\wwwroot\\index.html -Force; C:\\ServiceMonitor.exe w3svc"],
            "mountPoints": [
                {
                    "sourceVolume": "fsx-windows-dir",
                    "containerPath": "C:\\fsx-windows-dir",
                    "readOnly": false
                }
            ],
            "cpu": 512,
            "memory": 256,
            "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
            "essential": true,
            "name": "container2"
        }
    ],
    "family": "fsx-windows",
    "executionRoleArn": "arn:aws:iam::111122223333:role/ecsTaskExecutionRole",
    "volumes": [
        {
            "name": "fsx-windows-dir",
            "fsxWindowsFileServerVolumeConfiguration": {
                "fileSystemId": "fs-0eeb5730b2EXAMPLE",
                "authorizationConfig": {
                    "domain": "example.com",
                    "credentialsParameter": "arn:arn-1234"
                },
                "rootDirectory": "share"
            }
        }
    ]
}
```

`FSxWindowsFileServerVolumeConfiguration`  
Tipe: Objek  
Wajib: Tidak  
Parameter ini ditentukan saat Anda menggunakan FSx sistem [file Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) untuk penyimpanan tugas.    
`fileSystemId`  
Tipe: String  
Diperlukan: Ya  
ID sistem file Windows File Server untuk digunakan. FSx   
`rootDirectory`  
Tipe: String  
Diperlukan: Ya  
Direktori dalam sistem file FSx untuk Windows File Server untuk dipasang sebagai direktori root di dalam host.  
`authorizationConfig`    
`credentialsParameter`  
Tipe: String  
Wajib: Ya  
Opsi kredensial otorisasi:  
+ Nama Sumber Daya Amazon (ARN) dari [rahasia Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html).
+ Nama Sumber Daya Amazon (ARN) dari parameter [Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/integration-ps-secretsmanager.html).  
`domain`  
Tipe: String  
Diperlukan: Ya  
Nama domain yang sepenuhnya memenuhi syarat yang di-host oleh direktori [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html)(AWS Managed Microsoft AD) atau Direktori Aktif EC2 yang dihosting sendiri.

## Metode FSx untuk menyimpan kredensyal volume Windows File Server
<a name="creds"></a>

Ada dua metode yang berbeda untuk menyimpan kredensial untuk digunakan dengan parameter kredensial.
+ **AWS Secrets Manager rahasia**

  Kredensi ini dapat dibuat di AWS Secrets Manager konsol dengan menggunakan kategori *rahasia jenis lain*. Anda menambahkan baris untuk setiap key/value pasangan, username/admin dan kata sandi/*password*.
+ **Parameter Systems Manager**

  Kredensyal ini dapat dibuat di konsol parameter Systems Manager dengan memasukkan teks dalam formulir yang ada di cuplikan kode contoh berikut.

  ```
  {
    "username": "admin",
    "password": "password"
  }
  ```

`FSxWindowsFileServerVolumeConfiguration`Parameter `credentialsParameter` dalam definisi tugas memegang ARN rahasia atau parameter Systems Manager ARN. Untuk informasi selengkapnya, lihat [Apa itu AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) di *Panduan Pengguna Secrets* [Manager dan Parameter Store Systems](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) *Manager dari Panduan Pengguna Systems Manager*.

# Pelajari cara mengonfigurasi FSx sistem file Windows File Server untuk Amazon ECS
<a name="tutorial-wfsx-volumes"></a>

Pelajari cara meluncurkan instans Windows Amazon ECS yang dioptimalkan FSx untuk menghosting sistem file Windows File Server dan container yang dapat mengakses sistem file. Untuk melakukan ini, pertama-tama Anda membuat Direktori Aktif Microsoft Directory Service AWS Terkelola. Kemudian, Anda membuat sistem file dan cluster FSx for Windows File Server File Server dengan instans Amazon EC2 dan definisi tugas. Anda mengonfigurasi definisi tugas untuk kontainer Anda untuk menggunakan sistem file Windows File Server FSx untuk Windows. Akhirnya, Anda menguji sistem file.

Dibutuhkan 20 hingga 45 menit setiap kali Anda meluncurkan atau menghapus baik Active Directory atau FSx untuk sistem file Windows File Server. Bersiaplah untuk menyimpan setidaknya 90 menit untuk menyelesaikan tutorial atau menyelesaikan tutorial selama beberapa sesi.

## Prasyarat untuk tutorial
<a name="wfsx-prerequisites"></a>
+ Pengguna administratif. Lihat [Siapkan untuk menggunakan Amazon ECS](get-set-up-for-amazon-ecs.md).
+ (Opsional) Sebuah `PEM` key pair untuk menghubungkan ke instans Windows EC2 Anda melalui akses RDP. Untuk informasi tentang cara membuat pasangan kunci, lihat pasangan kunci [Amazon EC2 dan instans Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) di Panduan Pengguna Amazon *EC2*.
+ Sebuah VPC dengan setidaknya satu subnet publik dan satu subnet privat, dan satu grup keamanan. Anda dapat menggunakan VPC default Anda. Anda tidak memerlukan gateway atau perangkat NAT. Directory Service tidak mendukung Network Address Translation (NAT) dengan Direktori Aktif. Agar ini berfungsi, Active Directory, FSx for Windows File Server sistem file, ECS Cluster, dan instans EC2 harus berada di dalam VPC Anda. Untuk informasi selengkapnya mengenai VPCs dan Direktori Aktif, lihat [Membuat VPC](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html) [dan Prasyarat untuk](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_getting_started.html#ms_ad_getting_started_prereqs) membuat iklan Microsoft Terkelola. AWS 
+ Izin IAM ecsInstanceRole dan ecsTaskExecution Peran dikaitkan dengan akun Anda. Peran terkait layanan ini memungkinkan layanan melakukan panggilan API dan mengakses kontainer, rahasia, direktori, dan server file atas nama Anda.

## Langkah 1: Buat peran akses IAM
<a name="iam-roles"></a>

**Buat klaster dengan Konsol Manajemen AWS.**

1. Lihat [Peran IAM instans kontainer Amazon ECS](instance_IAM_role.md) untuk memeriksa apakah Anda memiliki ecsInstanceRole dan untuk melihat bagaimana Anda dapat membuatnya jika Anda tidak memilikinya.

1. Kami merekomendasikan bahwa kebijakan peran disesuaikan untuk izin minimum di lingkungan produksi aktual. Untuk tujuan mengerjakan tutorial ini, verifikasi bahwa kebijakan AWS terkelola berikut ini melekat pada AndaecsInstanceRole. Lampirkan kebijakan jika belum dilampirkan.
   + EC2ContainerServiceforEC2Peran Amazon
   + Amazon SSMManaged InstanceCore
   + Amazon SSMDirectory ServiceAccess

   Untuk melampirkan kebijakan AWS terkelola.

   1. Buka [konsol IAM](https://console.aws.amazon.com//iam/).

   1. Di panel navigasi, pilih **Peran**.

   1. Pilih **peran yang AWS dikelola**.

   1. Pilih **Izin, Lampirkan kebijakan**.

   1. Untuk mempersempit kebijakan tersedia yang akan dilampirkan, gunakan **Filter**.

   1. Pilih kebijakan yang sesuai dan pilih **Lampirkan kebijakan**.

1. Lihat [Peran IAM pelaksanaan tugas Amazon ECS](task_execution_IAM_role.md) untuk memeriksa apakah Anda memiliki ecsTaskExecution Peran dan untuk melihat bagaimana Anda dapat membuatnya jika Anda tidak memilikinya.

   Kami merekomendasikan bahwa kebijakan peran disesuaikan untuk izin minimum di lingkungan produksi aktual. Untuk tujuan mengerjakan tutorial ini, verifikasi bahwa kebijakan AWS terkelola berikut dilampirkan ke ecsTaskExecution Peran Anda. Lampirkan kebijakan jika mereka belum dilampirkan. Gunakan prosedur yang diberikan di bagian sebelumnya untuk melampirkan kebijakan yang AWS dikelola.
   + SecretsManagerReadWrite
   + Amazon FSx ReadOnlyAccess
   + Amazon SSMRead OnlyAccess
   + Amazon ECSTask ExecutionRolePolicy

## Langkah 2: Membuat Direktori Aktif Windows (AD)
<a name="wfsx-create-ads"></a>

1. Ikuti langkah-langkah yang dijelaskan dalam [Membuat Microsoft AD yang AWS Dikelola](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_getting_started.html#ms_ad_getting_started_create_directory) di *Panduan Administrasi Layanan AWS Direktori*. Gunakan VPC yang telah Anda tunjuk untuk tutorial ini. Pada Langkah 3 *Membuat iklan Microsoft AWS Terkelola Anda*, simpan nama pengguna dan kata sandi admin untuk digunakan dalam langkah berikut. Juga, perhatikan nama DNS direktori yang memenuhi syarat untuk langkah-langkah masa depan. Anda dapat menyelesaikan langkah berikut saat Active Directory sedang dibuat.

1. Buat AWS rahasia Secrets Manager untuk digunakan dalam langkah-langkah berikut. Untuk informasi selengkapnya, lihat [Memulai Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html#get-started) di *Panduan Pengguna AWS Secrets Manager*.

   1. Buka [konsol Secrets Manager](https://console.aws.amazon.com//secretsmanager/).

   1. Klik **Menyimpan rahasia baru**.

   1. Pilih **Tipe rahasia lainnya**.

   1. Untuk **Kunci/nilai rahasia**, di baris pertama, buat kunci **username** dengan nilai **admin**. Klik pada **\$1 Tambahkan baris**.

   1. Di baris baru, buat kunci **password**. Untuk nilai, ketik kata sandi yang Anda masukkan di Langkah 3 *Buat Direktori AD AWS Terkelola Anda*.

   1. Klik pada tombol **Selanjutnya**.

   1. Masukkan nama dan deskripsi. Klik **Berikutnya**.

   1. Klik **Berikutnya**. Klik **Simpan**.

   1. Dari daftar halaman **Rahasia**, klik pada rahasia yang baru saja Anda buat.

   1. Simpan ARN rahasia baru untuk digunakan dalam langkah-langkah berikut.

   1. Anda dapat melanjutkan ke langkah berikutnya selagi Direktori Aktif sedang dibuat.

## Langkah 3: Verifikasi dan perbarui grup keamanan
<a name="wfsx-sg"></a>

Pada langkah ini, Anda memverifikasi dan memperbarui aturan untuk grup keamanan yang Anda gunakan. Untuk hal ini, Anda dapat menggunakan grup keamanan default yang dibuat untuk VPC Anda.

**Verifikasi dan perbarui grup keamanan.**

Anda perlu membuat atau mengedit grup keamanan untuk mengirim data dari dan ke port, yang dijelaskan dalam [Grup Keamanan VPC Amazon](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/limit-access-security-groups.html#fsx-vpc-security-groups) di *Panduan Pengguna Server File Windows FSx untuk Windows*. Anda dapat melakukan ini dengan membuat aturan grup keamanan inbound ditampilkan di baris pertama dari tabel aturan inbound berikut. Mengizinkan lalu lintas masuk dari antarmuka jaringan (dan instans terkait-nya) yang ditugaskan ke grup keamanan. Semua sumber daya cloud yang Anda buat berada dalam VPC yang sama dan melekat pada grup keamanan yang sama. Oleh karena itu, aturan ini memungkinkan lalu lintas dikirim ke dan dari sistem file Windows File Server, Active Directory, dan ECS seperti yang diperlukan. FSx Aturan inbound lainnya mengizinkan lalu lintas untuk melayani situs web dan akses RDP untuk menghubungkan ke instans ECS Anda.

Tabel berikut menunjukkan aturan grup keamanan inbound mana yang diperlukan untuk tutorial ini.


| Tipe | Protokol | Rentang port | Sumber | 
| --- | --- | --- | --- | 
|  Semua Lalu lintas  |  Semua  |  Semua  |  *sg-securitygroup*  | 
|  HTTPS  |  TCP  |  443  |  0.0.0.0/0  | 
|  RDP  |  TCP  |  3389  |  alamat IP laptop Anda  | 

Tabel berikut menunjukkan aturan grup keamanan inbound mana yang diperlukan untuk tutorial ini.


| Tipe | Protokol | Rentang Port | Tujuan | 
| --- | --- | --- | --- | 
|  Semua lalu lintas  |  Semua  |  Semua  |  0.0.0.0/0  | 

1. Buka [Konsol EC2](https://console.aws.amazon.com//ec2/) dan pilih **Grup Keamanan** dari menu sebelah kiri.

1. Dari daftar grup keamanan yang sekarang ditampilkan, pilih centang pada kotak centang di sebelah kiri grup keamanan yang Anda gunakan untuk tutorial ini.

   Detail grup keamanan Anda ditampilkan.

1. Edit aturan inbound dan outbound dengan memilih tab **Aturan inbound** atau **Aturan outbound** dan memilih tombol **Edit aturan inbound** atau **Edit aturan outbound**. Edit aturan untuk mencocokkan yang ditampilkan dalam tabel sebelumnya. *Setelah Anda membuat instans EC2 nanti dalam tutorial ini, edit sumber RDP aturan masuk dengan alamat IP publik instans EC2 Anda seperti yang dijelaskan dalam [Connect to instance Windows Anda menggunakan RDP](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connecting_to_windows_instance.html) dari Panduan Pengguna Amazon EC2.*

## Langkah 4: Buat sistem file Windows File Server FSx untuk Windows
<a name="wfsx-create-fsx"></a>

Setelah grup keamanan Anda diverifikasi dan diperbarui dan Direktori Aktif Anda dibuat dan berada dalam status aktif, buat sistem file FSx untuk Windows File Server di VPC yang sama dengan Direktori Aktif Anda. Gunakan langkah-langkah berikut FSx untuk membuat sistem file Windows File Server untuk tugas Windows Anda.

**Buat sistem file pertama Anda.**

1. Buka [ FSx konsol Amazon](https://console.aws.amazon.com//fsx/).

1. Pada dasbor, pilih **Buat sistem file** untuk memulai wizard pembuatan sistem file.

1. Pada halaman **Pilih jenis sistem file**, pilih **FSx untuk Windows File Server**, lalu pilih **Berikutnya**. Halaman **Buat sistem file** akan muncul.

1. Pada bagian **Detail sistem file**, berikan nama untuk sistem file Anda. Penamaan sistem file Anda membuatnya lebih mudah untuk menemukan dan mengelola sistem file tersebut. Anda dapat menggunakan hingga 256 karakter Unicode. Karakter yang diizinkan adalah huruf, angka, spasi, dan karakter khusus plus tanda (\$1). tanda minus (-), tanda sama dengan (=), titik (.), garis bawah (\$1), titik dua (:), garis miring (/).

1. Untuk **Tipe deployment** Pilih **Single-AZ** untuk men-deploy sistem file yang di-deploy di Availability Zone tunggal. *Single-Az 2* adalah generasi terbaru dari sistem file Availability Zone tunggal, dan mendukung penyimpanan SSD dan HDD.

1. Untuk **jenis Penyimpanan**, pilih **HDD**.

1. Untuk **kapasitas penyimpanan**, masukkan kapasitas penyimpanan minimum. 

1. Pertahankan **Kapasitas throughput** pada pengaturan default-nya.

1. Di bagian **Jaringan & keamanan**, pilih VPC Amazon yang sama yang Anda pilih untuk direktori Anda Directory Service .

1. Untuk **Grup Keamanan VPC**, pilih grup keamanan yang Anda verifikasi di *Langkah 3: Verifikasi dan perbarui grup keamanan*.

1. Untuk **otentikasi Windows**, pilih **Direktori Aktif Microsoft AWS Terkelola**, lalu pilih Directory Service direktori Anda dari daftar.

1. Untuk **Enkripsi**, simpan default pengaturan **Kunci enkripsi** dari **aws/fsx (default)**.

1. Simpan pengaturan default untuk **Preferensi pemeliharaan**.

1. Klik pada tombol **Selanjutnya**.

1. Tinjau konfigurasi sistem file yang ditampilkan pada halaman **Buat sistem file**. Untuk referensi Anda, perhatikan pengaturan sistem file mana yang dapat Anda modifikasi setelah sistem file dibuat. Pilih **Buat sistem file**. 

1. Catat ID sistem file. Anda perlu menggunakannya di langkah selanjutnya.

   Anda dapat melanjutkan ke langkah berikutnya untuk membuat cluster dan instans EC2 sementara sistem file FSx untuk Windows File Server sedang dibuat.

## Langkah 5: Buat cluster Amazon ECS
<a name="wfsx-create-cluster"></a>

**Buat cluster menggunakan konsol Amazon ECS**

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

1. Dari bilah navigasi, pilih Wilayah untuk digunakan.

1. Di panel navigasi, pilih **Klaster**.

1. Pada halaman **Klaster**, pilih **Buat klaster**.

1. Di bawah **konfigurasi Cluster****, untuk nama Cluster**, masukkan **windows-fsx-cluster**.

1. Perluas **Infrastruktur**, hapus AWS Fargate (tanpa server) lalu pilih instans **Amazon EC2**.

   1. Untuk membuat grup Auto Scaling, dari grup **Auto Scaling (ASG**), **pilih Buat grup baru**, lalu berikan detail berikut tentang grup:
     + Untuk **Sistem Operasi/Arsitektur**, pilih **Windows Server 2019 Core**.
     + Untuk **jenis instans EC2**, pilih t2.medium atau t2.micro.

1. Pilih **Buat**.

## Langkah 6: Buat instans Amazon EC2 Amazon ECS yang dioptimalkan oleh Amazon
<a name="wfsx-create-instance"></a>

Buat instance penampung Amazon ECS Windows.

**Untuk membuat instans Amazon ECS**

1. Gunakan `aws ssm get-parameters` perintah untuk mengambil nama AMI untuk Wilayah yang menghosting VPC Anda. Untuk informasi selengkapnya, lihat [Mengambil metadata AMI yang dioptimalkan Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/retrieve-ecs-optimized_windows_AMI.html).

1. Gunakan konsol Amazon EC2 untuk meluncurkan instans.

   1. Buka konsol Amazon EC2 di. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

   1. Dari bilah navigasi, pilih Wilayah untuk digunakan.

   1. Dari **Dasbor EC2**, pilih **Meluncurkan instans**.

   1. Untuk **Nama**, masukkan nama unik.

   1. Untuk Gambar **Aplikasi dan OS (Gambar Mesin Amazon)**, di bidang **pencarian**, masukkan nama AMI yang Anda ambil.

   1. Untuk **jenis Instance**, pilih t2.medium atau t2.micro.

   1. Untuk **Key pair (login)**, pilih key pair. Jika Anda tidak menentukan key pair, Anda 

   1. Di bawah **Pengaturan jaringan**, untuk **VPC** dan **Subnet, pilih** VPC Anda dan subnet publik.

   1. Di bawah **Pengaturan jaringan**, untuk **grup Keamanan**, pilih grup keamanan yang ada, atau buat yang baru. Pastikan grup keamanan yang Anda pilih memiliki aturan masuk dan keluar yang ditentukan [Prasyarat untuk tutorial](#wfsx-prerequisites)

   1. **Di bawah **Pengaturan jaringan**, untuk **Auto-assign IP Publik**, pilih Aktifkan.** 

   1. Perluas **Detail lanjutan**, lalu untuk **direktori Gabung Domain**, pilih ID Direktori Aktif yang Anda buat. Domain opsi ini bergabung dengan AD Anda ketika instans EC2 diluncurkan.

   1. Di bawah **Detail lanjutan**, untuk **profil instans IAM**, pilih **ecsInstanceRole**.

   1. Konfigurasikan instans penampung Amazon ECS Anda dengan data pengguna berikut. Di bawah **Detail Lanjutan**, tempelkan skrip berikut ke bidang **Data pengguna**, ganti *cluster\$1name* dengan nama cluster Anda.

      ```
      <powershell>
      Initialize-ECSAgent -Cluster windows-fsx-cluster -EnableTaskIAMRole
      </powershell>
      ```

   1. Saat Anda siap, pilih bidang pengakuan, lalu pilih **Luncurkan Instans**. 

   1. Halaman konfirmasi memberi tahu Anda bahwa instans Anda akan diluncurkan. Pilih **Lihat Instans** untuk menutup halaman konfirmasi dan kembali ke konsol tersebut.

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

1. Di panel navigasi, pilih **Cluster**, lalu pilih. **windows-fsx-cluster**

1. Pilih tab **Infrastructure** dan verifikasi bahwa instans Anda telah terdaftar di **windows-fsx-cluster**cluster.

## Langkah 7: Daftarkan ketentuan tugas Windows
<a name="register_windows_task_def"></a>

Sebelum Anda dapat menjalankan wadah Windows di cluster Amazon ECS Anda, Anda harus mendaftarkan definisi tugas. Contoh definisi tugas berikut menampilkan halaman web sederhana. Tugas meluncurkan dua kontainer yang memiliki akses ke sistem FSx file. Kontainer pertama menulis file HTML ke sistem file. Kontainer kedua mengunduh file HTML dari sistem file dan menyediakan halaman web.

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

1. Di panel navigasi, pilih **Definisi tugas**.

1. Pilih **Buat definisi tugas baru**, **Buat definisi tugas baru dengan JSON**.

1. Di kotak editor JSON, ganti nilai untuk peran eksekusi tugas Anda dan detail tentang sistem FSx file Anda, lalu pilih **Simpan**.

   ```
   {
       "containerDefinitions": [
           {
               "entryPoint": [
                   "powershell",
                   "-Command"
               ],
               "portMappings": [],
               "command": ["New-Item -Path C:\\fsx-windows-dir\\index.html -ItemType file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>It Works!</h2> <p>You are using Amazon FSx for Windows File Server file system for persistent container storage.</p>' -Force"],
               "cpu": 512,
               "memory": 256,
               "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
               "essential": false,
               "name": "container1",
               "mountPoints": [
                   {
                       "sourceVolume": "fsx-windows-dir",
                       "containerPath": "C:\\fsx-windows-dir",
                       "readOnly": false
                   }
               ]
           },
           {
               "entryPoint": [
                   "powershell",
                   "-Command"
               ],
               "portMappings": [
                   {
                       "hostPort": 443,
                       "protocol": "tcp",
                       "containerPort": 80
                   }
               ],
               "command": ["Remove-Item -Recurse C:\\inetpub\\wwwroot\\* -Force; Start-Sleep -Seconds 120; Move-Item -Path C:\\fsx-windows-dir\\index.html -Destination C:\\inetpub\\wwwroot\\index.html -Force; C:\\ServiceMonitor.exe w3svc"],
               "mountPoints": [
                   {
                       "sourceVolume": "fsx-windows-dir",
                       "containerPath": "C:\\fsx-windows-dir",
                       "readOnly": false
                   }
               ],
               "cpu": 512,
               "memory": 256,
               "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
               "essential": true,
               "name": "container2"
           }
       ],
       "family": "fsx-windows",
       "executionRoleArn": "arn:aws:iam::111122223333:role/ecsTaskExecutionRole",
       "volumes": [
           {
               "name": "fsx-windows-dir",
               "fsxWindowsFileServerVolumeConfiguration": {
                   "fileSystemId": "fs-0eeb5730b2EXAMPLE",
                   "authorizationConfig": {
                       "domain": "example.com",
                       "credentialsParameter": "arn:arn-1234"
                   },
                   "rootDirectory": "share"
               }
           }
       ]
   }
   ```

## Langkah 8: Jalankan tugas dan lihat hasilnya
<a name="wfsx-run-task"></a>

Sebelum menjalankan tugas, verifikasi bahwa status sistem file Windows File Server Anda FSx **tersedia**. Setelah tersedia, Anda dapat menjalankan tugas menggunakan ketentuan tugas yang Anda buat. Tugas dimulai dengan membuat kontainer yang mengacak file HTML di antara mereka menggunakan sistem file. Setelah pengacakan, web server melayani halaman HTML sederhana.

**catatan**  
Anda mungkin tidak dapat terhubung ke situs web dari VPN.

**Jalankan tugas dan lihat hasilnya dengan konsol Amazon ECS.**

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

1. Di panel navigasi, pilih **Cluster**, lalu pilih. **windows-fsx-cluster**

1. Pilih tab **Tugas**, lalu pilih **Jalankan tugas baru**.

1. Untuk **Tipe peluncuran**, pilih **EC2**.

1. **Di bawah konfigurasi Deployment, untuk **Task Definition**, pilih **fsx-windows**, lalu pilih Create.**

1. Saat status tugas Anda SEDANG **BERJALAN**, pilih ID tugas.

1. Di bawah **Container**, saat status container1 STOPTED**,** pilih container2 untuk melihat detail kontainer.

1.  Di bawah **rincian Container untuk container2**, pilih **Network binding** dan kemudian klik pada alamat IP eksternal yang terkait dengan container. Peramban Anda akan membuka dan menampilkan pesan berikut.

   ```
   Amazon ECS Sample App
   It Works! 
   You are using Amazon FSx for Windows File Server file system for persistent container storage.
   ```
**catatan**  
Mungkin perlu beberapa menit agar pesan ditampilkan. Jika Anda tidak melihat pesan ini setelah beberapa menit, periksa apakah Anda tidak menjalankan VPN dan pastikan bahwa grup keamanan untuk instance container Anda mengizinkan lalu lintas HTTP jaringan masuk pada port 443.

## Langkah 9: Membersihkan
<a name="wfsx-cleanup"></a>

**catatan**  
Dibutuhkan 20 hingga 45 menit FSx untuk menghapus sistem file Windows File Server atau AD. Anda harus menunggu sampai operasi penghapusan sistem file Windows File Server selesai sebelum memulai operasi penghapusan AD. FSx 

**Hapus FSx untuk sistem file Windows File Server.**

1. Buka [ FSx konsol Amazon](https://console.aws.amazon.com//fsx/)

1. Pilih tombol radio di sebelah kiri FSx untuk sistem file Windows File Server yang baru saja Anda buat.

1. Pilih **Tindakan**.

1. Pilih **sistem file untuk dihapus**.

**Hapus iklan.**

1. Buka [konsol Directory Service](https://console.aws.amazon.com//directoryservicev2/).

1. Pilih tombol radio di sebelah kiri AD yang baru saja Anda buat.

1. Pilih **Tindakan**.

1. Pilih **Hapus direktori**.

**Hapus klaster .**

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

1. Di panel navigasi, pilih **Cluster**, lalu pilih. **windows-fsx-cluster**

1. Pilih **Hapus klaster**.

1. Masukkan frasa dan kemudian pilih **Hapus**.

**Mengakhiri instans EC2.**

1. Buka [konsol Amazon EC2](https://console.aws.amazon.com//ec2/).

1. Dari menu sebelah kiri, pilih **Instans**.

1. Centang kotak di sebelah kiri instans EC2 yang Anda buat.

1. Klik **status Instance**, **Terminate instance**.

**Hapus rahasia.**

1. Buka [konsol Secrets Manager](https://console.aws.amazon.com//secretsmanager/).

1. Pilih rahasia yang Anda buat untuk perjalanan ini.

1. Klik **Tindakan**.

1. Pilih **Hapus rahasia**.

# Gunakan volume Docker dengan Amazon ECS
<a name="docker-volumes"></a>

Saat menggunakan volume Docker, built-in driver `local` atau driver volume pihak ke tiga dapat digunakan. Volume Docker dikelola oleh Docker dan direktori dibuat di `/var/lib/docker/volumes` pada instans kontainer yang berisi data volume.

Untuk menggunakan volume Docker, tentukan `dockerVolumeConfiguration` dalam ketentuan tugas Anda. Untuk informasi selengkapnya, lihat [Volume](https://docs.docker.com/engine/storage/volumes/) dalam Docker dokumentasi.

Beberapa kasus penggunaan umum untuk volume Docker adalah sebagai berikut:
+ Untuk menyediakan volume data tetap untuk digunakan dengan kontainer
+ Untuk berbagi volume data yang ditetapkan di lokasi yang berbeda pada kontainer yang berbeda pada instans kontainer yang sama
+ Untuk menentukan volume data kosong, tidak tetap dan memasangnya pada beberapa kontainer dalam tugas yang sama
+ Untuk memberikan volume data ke tugas Anda yang dikelola oleh driver pihak ketiga

## Pertimbangan untuk menggunakan volume Docker
<a name="docker-volume-considerations"></a>

Pertimbangkan hal berikut saat menggunakan volume Docker:
+ Volume Docker hanya didukung saat menggunakan tipe peluncuran EC2 atau instance eksternal.
+ Kontainer Windows hanya mendukung penggunaan driver `local`.
+ Jika driver pihak ketiga digunakan, pastikan itu diinstal dan aktif pada instance kontainer sebelum agen kontainer dimulai. Jika driver pihak ketiga tidak aktif sebelum agen dimulai, Anda dapat memulai ulang agen kontainer menggunakan salah satu perintah berikut:
  + Untuk Amazon ECS yang dioptimalkan Amazon Linux 2 AMI:

    ```
    sudo systemctl restart ecs
    ```
  + Untuk Amazon ECS yang dioptimalkan Amazon Linux AMI:

    ```
    sudo stop ecs && sudo start ecs
    ```

Untuk informasi tentang cara menentukan volume Docker dalam definisi tugas, lihat[Menentukan volume Docker dalam definisi tugas Amazon ECS](specify-volume-config.md).

# Menentukan volume Docker dalam definisi tugas Amazon ECS
<a name="specify-volume-config"></a>

Sebelum kontainer Anda dapat menggunakan volume data, Anda harus menentukan konfigurasi volume dan titik pemasangan dalam ketentuan tugas Anda. Bagian ini menjelaskan konfigurasi volume untuk kontainer. Untuk tugas yang menggunakan volume Docker, tentukan `dockerVolumeConfiguration`. Untuk tugas yang menggunakan volume host pemasangan terikat, tentukan `host` dan `sourcePath` opsional.

Definisi tugas berikut JSON menunjukkan sintaks untuk `volumes` dan `mountPoints` objek untuk wadah.

```
{
    "containerDefinitions": [
        {
            "mountPoints": [
                {
                    "sourceVolume": "string",
                    "containerPath": "/path/to/mount_volume",
                    "readOnly": boolean
                }
            ]
        }
    ],
    "volumes": [
        {
            "name": "string",
            "dockerVolumeConfiguration": {
                "scope": "string",
                "autoprovision": boolean,
                "driver": "string",
                "driverOpts": {
                    "key": "value"
                },
                "labels": {
                    "key": "value"
                }
            }
        }
    ]
}
```

`name`  
Tipe: String  
Wajib: Tidak  
Nama volume. Hingga 255 huruf (huruf besar dan kecil), angka, tanda hubung (), dan garis bawah (`-`) diperbolehkan. `_` Nama ini direferensikan dalam `sourceVolume` parameter `mountPoints` objek definisi kontainer.

`dockerVolumeConfiguration`  
Jenis: [DockerVolumeConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DockerVolumeConfiguration.html)Objek  
Wajib: Tidak  
Parameter ini ditentukan saat menggunakan volume Docker. Volume Docker hanya didukung saat menjalankan tugas pada instans EC2. Kontainer Windows hanya mendukung penggunaan driver `local`. Untuk menggunakan pemasangan mengikat, tentukan `host` saja.    
`scope`  
Tipe: String  
Nilai Valid: `task` \$1 `shared`  
Wajib: Tidak  
Cakupan untuk volume Docker, yang menentukan siklus hidupnya. Volume Docker yang tercakup ke `task` secara otomatis disediakan saat tugas dimulai dan dihancurkan saat tugas berhenti. Volume Docker yang tercakup sebagai `shared` dipertahankan setelah tugas berhenti.  
`autoprovision`  
Jenis: Boolean  
Nilai default: `false`  
Wajib: Tidak  
Jika nilai ini`true`, volume Docker dibuat jika belum ada. Bidang ini hanya digunakan jika `scope` ada`shared`. Jika `scope` ya`task`, maka parameter ini harus dihilangkan.  
`driver`  
Tipe: String  
Wajib: Tidak  
Driver volume Docker yang digunakan. Nilai driver harus sesuai dengan nama driver yang disediakan oleh Docker karena nama ini digunakan untuk penempatan tugas. Jika driver diinstal dengan menggunakan CLI plugin Docker, `docker plugin ls` gunakan untuk mengambil nama driver dari instance container Anda. Jika driver diinstal dengan menggunakan metode lain, gunakan penemuan plugin Docker untuk mengambil nama driver.  
`driverOpts`  
Tipe: String  
Wajib: Tidak  
Peta opsi khusus driver Docker untuk dilewati. Parameter ini dipetakan ke `DriverOpts` bagian Create a volume dari Docker.  
`labels`  
Tipe: String  
Wajib: Tidak  
Metadata kustom untuk ditambahkan ke volume Docker.

`mountPoints`  
Tipe: Array objek  
Wajib: Tidak  
Titik pemasangan untuk volume data dalam penampung Anda. Parameter ini memetakan ke `Volumes` dalam create-container Docker API dan opsi `--volume` untuk docker run.  
Kontainer Windows dapat memasang seluruh direktori pada drive yang sama dengan `$env:ProgramData`. Kontainer Windows tidak dapat memasang direktori pada drive yang berbeda, dan titik pemasangan tidak dapat digunakan di seluruh drive. Anda harus menentukan titik pemasangan untuk melampirkan volume Amazon EBS langsung ke tugas Amazon ECS.    
`sourceVolume`  
Tipe: String  
Diperlukan: Ya, kapan `mountPoints` digunakan  
Nama volume yang akan dipasang.  
`containerPath`  
Tipe: String  
Diperlukan: Ya, kapan `mountPoints` digunakan  
Jalur dalam wadah tempat volume akan dipasang.  
`readOnly`  
Tipe: Boolean  
Wajib: Tidak  
Jika nilai ini adalah `true`, kontainer memiliki akses hanya-baca ke volume. Jika nilai ini adalah `false`, maka kontainer dapat menulis ke volume. Nilai default-nya adalah `false`.  
Untuk tugas yang berjalan pada instans EC2 yang menjalankan sistem operasi Windows, biarkan nilainya sebagai default. `false`

# Contoh volume Docker untuk Amazon ECS
<a name="docker-volume-examples"></a>

Contoh berikut menunjukkan cara menyediakan penyimpanan sementara untuk wadah dan cara menyediakan volume bersama untuk beberapa kontainer, dan cara menyediakan penyimpanan persisten NFS untuk sebuah wadah.

**Untuk menyediakan penyimpanan sementara untuk wadah menggunakan volume Docker**

Dalam contoh ini, wadah menggunakan volume data kosong yang dibuang setelah tugas selesai. Salah satu contoh kasus penggunaan adalah Anda mungkin memiliki wadah yang perlu mengakses beberapa lokasi penyimpanan file awal selama tugas. Tugas ini dapat dicapai dengan menggunakan volume Docker.

1. Dalam ketentuan tugas bagian `volumes`, tentukan volume data dengan `name` dan nilai `DockerVolumeConfiguration`. Dalam contoh ini, kami menentukan ruang lingkup sebagai `task` jadi volume dihapus setelah tugas berhenti dan menggunakan built-in driver `local`.

   ```
   "volumes": [
       {
           "name": "scratch",
           "dockerVolumeConfiguration" : {
               "scope": "task",
               "driver": "local",
               "labels": {
                   "scratch": "space"
               }
           }
       }
   ]
   ```

1. Di bagian `containerDefinitions`, mendefiniskan sebuah kontainer dengan nilai-nilai `mountPoints` yang mereferensikan nama volume yang didefinisikan dan nilai `containerPath` untuk memasang volume pada kontainer.

   ```
   "containerDefinitions": [
       {
           "name": "container-1",
           "mountPoints": [
               {
                 "sourceVolume": "scratch",
                 "containerPath": "/var/scratch"
               }
           ]
       }
   ]
   ```

**Untuk menyediakan penyimpanan persisten untuk beberapa kontainer menggunakan volume Docker**

Dalam contoh ini, Anda ingin volume bersama untuk beberapa kontainer untuk digunakan dan Anda ingin tetap ada setelah satu tugas yang menggunakannya dihentikan. `local`Driver bawaan sedang digunakan. Ini agar volume masih terikat dengan siklus hidup instance container.

1. Dalam ketentuan tugas bagian `volumes`, tentukan volume data dengan `name` dan nilai `DockerVolumeConfiguration`. Dalam contoh ini, tentukan `shared` cakupan sehingga volume tetap ada, setel penyediaan otomatis ke. `true` Ini agar volume dibuat untuk digunakan. Kemudian, gunakan juga `local` driver bawaan.

   ```
   "volumes": [
       {
           "name": "database",
           "dockerVolumeConfiguration" : {
               "scope": "shared",
               "autoprovision": true,
               "driver": "local",
               "labels": {
                   "database": "database_name"
               }
           }
       }
   ]
   ```

1. Di bagian `containerDefinitions`, mendefiniskan sebuah kontainer dengan nilai-nilai `mountPoints` yang mereferensikan nama volume yang didefinisikan dan nilai `containerPath` untuk memasang volume pada kontainer.

   ```
   "containerDefinitions": [
       {
           "name": "container-1",
           "mountPoints": [
           {
             "sourceVolume": "database",
             "containerPath": "/var/database"
           }
         ]
       },
       {
         "name": "container-2",
         "mountPoints": [
           {
             "sourceVolume": "database",
             "containerPath": "/var/database"
           }
         ]
       }
     ]
   ```

**Untuk menyediakan penyimpanan persisten NFS untuk wadah menggunakan volume Docker**

 Dalam contoh ini, kontainer menggunakan volume data NFS yang dipasang secara otomatis saat tugas dimulai dan dilepas saat tugas berhenti. Ini menggunakan `local` driver bawaan Docker. Salah satu contoh kasus penggunaan adalah Anda mungkin memiliki penyimpanan NFS lokal dan perlu mengaksesnya dari tugas ECS Anywhere. Ini dapat dicapai dengan menggunakan volume Docker dengan opsi driver NFS.

1. Dalam ketentuan tugas bagian `volumes`, tentukan volume data dengan `name` dan nilai `DockerVolumeConfiguration`. Dalam contoh ini, tentukan `task` cakupan sehingga volume dilepas setelah tugas berhenti. Gunakan `local` driver dan konfigurasikan `driverOpts` dengan`type`,`device`, dan `o` opsi yang sesuai. Ganti `NFS_SERVER` dengan endpoint server NFS.

   ```
   "volumes": [
          {
              "name": "NFS",
              "dockerVolumeConfiguration" : {
                  "scope": "task",
                  "driver": "local",
                  "driverOpts": {
                      "type": "nfs",
                      "device": "$NFS_SERVER:/mnt/nfs",
                      "o": "addr=$NFS_SERVER"
                  }
              }
          }
      ]
   ```

1. Di `containerDefinitions` bagian tersebut, tentukan wadah dengan `mountPoints` nilai yang mereferensikan nama volume yang ditentukan dan `containerPath` nilai untuk memasang volume pada wadah.

   ```
   "containerDefinitions": [
          {
              "name": "container-1",
              "mountPoints": [
                  {
                    "sourceVolume": "NFS",
                    "containerPath": "/var/nfsmount"
                  }
              ]
          }
      ]
   ```

# Gunakan bind mount dengan Amazon ECS
<a name="bind-mounts"></a>

Dengan pemasangan bind, file atau direktori pada host, seperti instans Amazon EC2, dipasang ke dalam wadah. Bind mount didukung untuk tugas yang di-host di instans Fargate dan Amazon EC2. Dudukan pengikat diikat ke siklus hidup wadah yang menggunakannya. Setelah semua container yang menggunakan bind mount dihentikan, seperti saat tugas dihentikan, data akan dihapus. Untuk tugas yang dihosting di instans Amazon EC2, data dapat dikaitkan dengan siklus hidup instans Amazon EC2 host dengan menentukan nilai dan opsional dalam definisi tugas Anda. `host` `sourcePath` Untuk informasi selengkapnya, lihat [Bind mount](https://docs.docker.com/engine/storage/bind-mounts/) di dokumentasi Docker.

Berikut ini adalah kasus penggunaan umum untuk pemasangan terikat.
+ Untuk menyediakan volume data kosong untuk memasang dalam satu atau lebih kontainer.
+ Untuk memasang volume data host dalam satu atau lebih kontainer.
+ Untuk berbagi volume data dari kontainer sumber dengan kontainer lain dalam tugas yang sama.
+ Untuk mengekspos jalur dan isinya dari Dockerfile ke satu atau lebih kontainer.

## Pertimbangan saat menggunakan pemasangan terikat
<a name="bind-mount-considerations"></a>

Saat menggunakan bind mount, pertimbangkan hal berikut.
+ Secara default, tugas yang di-host saat AWS Fargate menggunakan versi platform `1.4.0` atau yang lebih baru (Linux) `1.0.0` atau yang lebih baru (Windows) menerima minimal 20 GiB penyimpanan sementara untuk bind mount. Anda dapat meningkatkan jumlah total penyimpanan sementara hingga maksimum 200 GiB dengan menentukan `ephemeralStorage` parameter dalam definisi tugas Anda.
+ Untuk mengekspos file dari Dockerfile ke volume data saat tugas dijalankan, bidang data Amazon ECS mencari arahan. `VOLUME` Jika jalur absolut yang ditentukan dalam `VOLUME` direktif sama dengan yang ditentukan dalam definisi tugas, data di jalur `VOLUME` direktif akan disalin ke volume data. `containerPath` Dalam contoh Dockerfile berikut, file yang diberi nama `examplefile` dalam `/var/log/exported` direktori ditulis ke host dan kemudian dipasang di dalam wadah.

  ```
  FROM public.ecr.aws/amazonlinux/amazonlinux:latest
  RUN mkdir -p /var/log/exported
  RUN touch /var/log/exported/examplefile
  VOLUME ["/var/log/exported"]
  ```

  Secara default, izin volume diatur ke `0755` dan pemilik sebagai `root`. Anda dapat menyesuaikan izin ini di Dockerfile. Contoh berikut mendefinisikan pemilik direktori sebagai `node`.

  ```
  FROM public.ecr.aws/amazonlinux/amazonlinux:latest
  RUN yum install -y shadow-utils && yum clean all
  RUN useradd node
  RUN mkdir -p /var/log/exported && chown node:node /var/log/exported
  RUN touch /var/log/exported/examplefile
  USER node
  VOLUME ["/var/log/exported"]
  ```
+ Untuk tugas yang dihosting di instans Amazon EC2, saat `sourcePath` nilai `host` dan tidak ditentukan, daemon Docker mengelola pemasangan pengikat untuk Anda. Ketika tidak ada kontainer yang mereferensikan pemasangan pengikat ini, layanan pembersihan tugas agen penampung Amazon ECS akhirnya menghapusnya. Secara default, ini terjadi tiga jam setelah wadah keluar. Namun, Anda dapat mengonfigurasi durasi ini dengan variabel `ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION` agen. Untuk informasi selengkapnya, lihat [Konfigurasi agen kontainer Amazon ECS](ecs-agent-config.md). Jika Anda memerlukan data ini untuk bertahan di luar siklus hidup penampung, tentukan `sourcePath` nilai untuk bind mount.
+ Untuk tugas yang di-host di Instans Terkelola Amazon ECS, bagian dari sistem file root hanya bisa dibaca. Read/write bind mount harus menggunakan direktori yang dapat ditulis seperti `/var` untuk data persisten atau `/tmp` untuk data sementara. Mencoba membuat read/write bind mount ke direktori lain mengakibatkan tugas gagal diluncurkan dengan kesalahan yang mirip dengan yang berikut:

  ```
  error creating empty volume: error while creating volume path '/path': mkdir /path: read-only file system
  ```

  Dudukan bind read-only (dikonfigurasi dengan `mountPoints` parameter) dapat mengarah ke direktori apa pun yang dapat diakses `"readOnly": true` di host.

  Untuk melihat daftar lengkap jalur yang dapat ditulis, Anda dapat menjalankan tugas di Instans Terkelola Amazon ECS dan menggunakannya untuk memeriksa tabel pemasangan instans. Buat definisi tugas dengan pengaturan berikut untuk mengakses sistem file host:

  ```
  {
      "pidMode": "host",
      "containerDefinitions": [{
          "privileged": true,
          ...
      }]
  }
  ```

  Kemudian jalankan perintah berikut dari dalam wadah:

  ```
  # List writable mounts
  cat /proc/1/root/proc/1/mounts | awk '$4 ~ /^rw,/ || $4 == "rw" {print $2}' | sort
  
  # List read-only mounts
  cat /proc/1/root/proc/1/mounts | awk '$4 ~ /^ro,/ || $4 == "ro" {print $2}' | sort
  ```
**penting**  
`privileged`Pengaturan memberikan kemampuan yang diperluas pada wadah pada host, setara dengan akses root. Dalam contoh ini, digunakan untuk memeriksa tabel pemasangan host untuk tujuan diagnostik. Untuk informasi selengkapnya, lihat [Hindari menjalankan kontainer sebagai hak istimewa (Amazon EC2)](security-tasks-containers.md#security-tasks-containers-recommendations-avoid-privileged-containers).

  Untuk informasi selengkapnya tentang menjalankan perintah secara interaktif dalam kontainer, lihat[Memantau Kontainer Amazon ECS dengan ECS Exec](ecs-exec.md).

# Menentukan pemasangan pengikat dalam definisi tugas Amazon ECS
<a name="specify-bind-mount-config"></a>

Untuk tugas Amazon ECS yang di-host di instance Fargate atau Amazon EC2, cuplikan JSON definisi tugas berikut menunjukkan sintaks untuk,, dan objek untuk `volumes` definisi tugas. `mountPoints` `ephemeralStorage`

```
{
   "family": "",
   ...
   "containerDefinitions" : [
      {
         "mountPoints" : [
            {
               "containerPath" : "/path/to/mount_volume",
               "sourceVolume" : "string"
            }
          ],
          "name" : "string"
       }
    ],
    ...
    "volumes" : [
       {
          "name" : "string"
       }
    ],
    "ephemeralStorage": {
	   "sizeInGiB": integer
    }
}
```

Untuk tugas Amazon ECS yang dihosting di instans Amazon EC2, Anda dapat menggunakan parameter `host` opsional dan saat menentukan `sourcePath` detail volume tugas. Ketika ditentukan, itu mengikat mount ke siklus hidup tugas daripada wadah.

```
"volumes" : [
    {
        "host" : {
            "sourcePath" : "string"
        },
        "name" : "string"
    }
]
```

Berikut ini adalah penjelasan yang lebih detail untuk setiap parameter ketentuan tugas.

`name`  
Tipe: String  
Wajib: Tidak  
Nama volume. Hingga 255 huruf (huruf besar dan kecil), angka, tanda hubung (), dan garis bawah (`-`) diperbolehkan. `_` Nama ini direferensikan dalam `sourceVolume` parameter `mountPoints` objek definisi kontainer.

`host`  
Wajib: Tidak  
`host`Parameter ini digunakan untuk mengikat siklus hidup bind mount ke instans Amazon EC2 host, bukan tugas, dan tempat penyimpanannya. Jika `host` parameternya kosong, maka daemon Docker menetapkan jalur host untuk volume data Anda, tetapi data tidak dijamin akan bertahan setelah wadah yang terkait dengannya berhenti berjalan.  
Kontainer Windows dapat memasang seluruh direktori pada drive yang sama dengan `$env:ProgramData`.  
`sourcePath`Parameter hanya didukung saat menggunakan tugas yang dihosting di instans Amazon EC2 atau Instans Terkelola Amazon ECS.  
`sourcePath`  
Tipe: String  
Wajib: Tidak  
Saat `host` parameter digunakan, tentukan a `sourcePath` untuk mendeklarasikan jalur pada instans Amazon EC2 host yang disajikan ke wadah. Jika parameter ini kosong, daemon Docker akan menetapkan jalur host untuk Anda. Jika `host` parameter berisi lokasi `sourcePath` file, maka volume data tetap ada di lokasi yang ditentukan pada instans Amazon EC2 host hingga Anda menghapusnya secara manual. Jika `sourcePath` nilai tidak ada pada instans Amazon EC2 host, daemon Docker membuatnya. Jika lokasinya memang ada, konten dari folder jalur sumber diekspor.

`mountPoints`  
Tipe: Array objek  
Wajib: Tidak  
Titik pemasangan untuk volume data dalam penampung Anda. Parameter ini memetakan ke `Volumes` dalam create-container Docker API dan opsi `--volume` untuk docker run.  
Kontainer Windows dapat memasang seluruh direktori pada drive yang sama dengan `$env:ProgramData`. Kontainer Windows tidak dapat memasang direktori pada drive yang berbeda, dan titik pemasangan tidak dapat digunakan di seluruh drive. Anda harus menentukan titik pemasangan untuk melampirkan volume Amazon EBS langsung ke tugas Amazon ECS.    
`sourceVolume`  
Tipe: String  
Diperlukan: Ya, kapan `mountPoints` digunakan  
Nama volume yang akan dipasang.  
`containerPath`  
Tipe: String  
Diperlukan: Ya, kapan `mountPoints` digunakan  
Jalur dalam wadah tempat volume akan dipasang.  
`readOnly`  
Tipe: Boolean  
Wajib: Tidak  
Jika nilai ini adalah `true`, kontainer memiliki akses hanya-baca ke volume. Jika nilai ini adalah `false`, maka kontainer dapat menulis ke volume. Nilai default-nya adalah `false`.  
Untuk tugas yang berjalan pada instans EC2 yang menjalankan sistem operasi Windows, biarkan nilainya sebagai default. `false`

`ephemeralStorage`  
Tipe: Objek  
Wajib: Tidak  
Jumlah penyimpanan sementara yang dialokasikan untuk tugas. Parameter ini digunakan untuk memperluas jumlah total penyimpanan sementara yang tersedia, di luar jumlah default, untuk tugas yang dihosting AWS Fargate menggunakan versi platform atau yang lebih baru (Linux) `1.4.0` atau `1.0.0` atau yang lebih baru (Windows).  
Anda dapat menggunakan Copilot CLI CloudFormation, AWS SDK atau CLI untuk menentukan penyimpanan sementara untuk pemasangan pengikat.

# Contoh Bind mount untuk Amazon ECS
<a name="bind-mount-examples"></a>

Contoh berikut mencakup kasus penggunaan umum untuk menggunakan dudukan pengikat untuk wadah Anda.

**Untuk mengalokasikan peningkatan jumlah ruang penyimpanan sementara untuk tugas Fargate**

Untuk tugas Amazon ECS yang di-host di Fargate menggunakan `1.4.0` versi platform atau yang lebih baru (Linux) `1.0.0` atau (Windows), Anda dapat mengalokasikan lebih dari jumlah penyimpanan sementara default untuk wadah dalam tugas yang akan digunakan. Contoh ini dapat dimasukkan ke dalam contoh lain untuk mengalokasikan lebih banyak penyimpanan sementara untuk tugas Fargate Anda.
+ Dalam ketentuan tugas, tentukan objek `ephemeralStorage`. `sizeInGiB` harus integer antara nilai-nilai `21` dan `200` dinyatakan dalam GiB.

  ```
  "ephemeralStorage": {
      "sizeInGiB": integer
  }
  ```

**Untuk menyediakan volume data kosong untuk satu atau lebih kontainer.**

Dalam beberapa kasus, Anda ingin menyediakan kontainer dalam tugas beberapa ruang scratch. Misalnya, Anda mungkin memiliki dua wadah database yang perlu mengakses lokasi penyimpanan file awal yang sama selama tugas. Hal ini dapat dicapai dengan menggunakan pemasangan terikat.

1. Dalam ketentuan tugas bagian `volumes`, tentukan pemasangan terikat dengan nama `database_scratch`.

   ```
     "volumes": [
       {
         "name": "database_scratch"
       }
     ]
   ```

1. Di `containerDefinitions` bagian ini, buat definisi wadah database. Ini agar mereka memasang volume.

   ```
   "containerDefinitions": [
       {
         "name": "database1",
         "image": "my-repo/database",
         "cpu": 100,
         "memory": 100,
         "essential": true,
         "mountPoints": [
           {
             "sourceVolume": "database_scratch",
             "containerPath": "/var/scratch"
           }
         ]
       },
       {
         "name": "database2",
         "image": "my-repo/database",
         "cpu": 100,
         "memory": 100,
         "essential": true,
         "mountPoints": [
           {
             "sourceVolume": "database_scratch",
             "containerPath": "/var/scratch"
           }
         ]
       }
     ]
   ```

**Untuk mengekspos jalur dan isinya dari Dockerfile ke kontainer.**

Dalam contoh ini, Anda memiliki Dockerfile yang menulis data yang ingin Anda pasang di dalam kontainer. Contoh ini berfungsi untuk tugas yang di-host di instance Fargate atau Amazon EC2.

1. Buat Dockerfile. Contoh berikut menggunakan image kontainer Amazon Linux 2 publik dan membuat file yang diberi nama `examplefile` di `/var/log/exported` direktori yang ingin kita pasang di dalam wadah. Direktif `VOLUME` harus menentukan jalur absolut.

   ```
   FROM public.ecr.aws/amazonlinux/amazonlinux:latest
   RUN mkdir -p /var/log/exported
   RUN touch /var/log/exported/examplefile
   VOLUME ["/var/log/exported"]
   ```

   Secara default, izin volume diatur ke `0755` dan pemilik sebagai `root`. Izin ini dapat diubah di Dockerfile. Contoh berikut mendefinisikan pemilik direktori `/var/log/exported` diatur ke `node`.

   ```
   FROM public.ecr.aws/amazonlinux/amazonlinux:latest
   RUN yum install -y shadow-utils && yum clean all
   RUN useradd node
   RUN mkdir -p /var/log/exported && chown node:node /var/log/exported					    
   USER node
   RUN touch /var/log/exported/examplefile
   VOLUME ["/var/log/exported"]
   ```

1. Dalam ketentuan tugas bagian `volumes`, tentukan volume dengan nama `application_logs`.

   ```
     "volumes": [
       {
         "name": "application_logs"
       }
     ]
   ```

1. Di `containerDefinitions` bagian ini, buat definisi wadah aplikasi. Ini agar mereka memasang penyimpanan. `containerPath`Nilai harus cocok dengan jalur absolut yang ditentukan dalam `VOLUME` arahan dari Dockerfile.

   ```
     "containerDefinitions": [
       {
         "name": "application1",
         "image": "my-repo/application",
         "cpu": 100,
         "memory": 100,
         "essential": true,
         "mountPoints": [
           {
             "sourceVolume": "application_logs",
             "containerPath": "/var/log/exported"
           }
         ]
       },
       {
         "name": "application2",
         "image": "my-repo/application",
         "cpu": 100,
         "memory": 100,
         "essential": true,
         "mountPoints": [
           {
             "sourceVolume": "application_logs",
             "containerPath": "/var/log/exported"
           }
         ]
       }
     ]
   ```

**Untuk menyediakan volume data kosong untuk wadah yang terkait dengan siklus hidup instans Amazon EC2 host**

Untuk tugas yang di-host di instans Amazon EC2, Anda dapat menggunakan mount bind dan memiliki data yang terkait dengan siklus hidup instans Amazon EC2 host. Anda dapat melakukan ini dengan menggunakan `host` parameter dan menentukan `sourcePath` nilai. File apa pun yang ada di `sourcePath` disajikan ke wadah pada `containerPath` nilainya. File apa pun yang ditulis dengan `containerPath` nilai ditulis ke `sourcePath` nilai pada instans Amazon EC2 host.
**penting**  
Amazon ECS tidak menyinkronkan penyimpanan Anda di seluruh instans Amazon EC2. Tugas yang menggunakan penyimpanan persisten dapat ditempatkan pada instans Amazon EC2 apa pun di klaster Anda yang memiliki kapasitas yang tersedia. [Jika tugas Anda memerlukan penyimpanan persisten setelah berhenti dan memulai ulang, selalu tentukan instans Amazon EC2 yang sama pada waktu peluncuran tugas dengan AWS CLI perintah start-task.](https://docs.aws.amazon.com/cli/latest/reference/ecs/start-task.html) Anda juga dapat menggunakan volume Amazon EFS untuk penyimpanan persisten. Untuk informasi selengkapnya, lihat [Gunakan volume Amazon EFS dengan Amazon ECS](efs-volumes.md).

1. Dalam ketentuan tugas bagian `volumes`, tentukan pemasangan terikat dengan `name` dan nilai `sourcePath`. Dalam contoh berikut, instans Amazon EC2 host berisi data `/ecs/webdata` yang ingin Anda pasang di dalam wadah.

   ```
     "volumes": [
       {
         "name": "webdata",
         "host": {
           "sourcePath": "/ecs/webdata"
         }
       }
     ]
   ```

1. Di bagian `containerDefinitions`, mendefiniskan sebuah kontainer dengan nilai-nilai `mountPoints` yang mereferensikan nama pemasangan terikat dan nilai `containerPath` untuk memasang pemasangan terikat pada kontainer.

   ```
     "containerDefinitions": [
       {
         "name": "web",
         "image": "public.ecr.aws/docker/library/nginx:latest",
         "cpu": 99,
         "memory": 100,
         "portMappings": [
           {
             "containerPort": 80,
             "hostPort": 80
           }
         ],
         "essential": true,
         "mountPoints": [
           {
             "sourceVolume": "webdata",
             "containerPath": "/usr/share/nginx/html"
           }
         ]
       }
     ]
   ```

**Untuk memasang volume yang ditetapkan pada beberapa kontainer di lokasi yang berbeda**

Anda dapat menentukan volume data dalam ketentuan tugas dan memasang volume tersebut di lokasi yang berbeda pada kontainer yang berbeda. Misalnya, wadah host Anda memiliki folder data situs web di`/data/webroot`. Anda mungkin ingin me-mount volume data tersebut sebagai read-only pada dua server web berbeda yang memiliki akar dokumen yang berbeda.

1. Dalam ketentuan tugas bagian `volumes`, tentukan volume data dengan nama `webroot` dan jalur sumber `/data/webroot`.

   ```
     "volumes": [
       {
         "name": "webroot",
         "host": {
           "sourcePath": "/data/webroot"
         }
       }
     ]
   ```

1. Di bagian `containerDefinitions`, tentukan kontainer untuk setiap server web dengan nilai-nilai `mountPoints` yang mengasosiasikan volume `webroot` dengan nilai `containerPath` menunjuk ke akar dokumen untuk kontainer itu.

   ```
     "containerDefinitions": [
       {
         "name": "web-server-1",
         "image": "my-repo/ubuntu-apache",
         "cpu": 100,
         "memory": 100,
         "portMappings": [
           {
             "containerPort": 80,
             "hostPort": 80
           }
         ],
         "essential": true,
         "mountPoints": [
           {
             "sourceVolume": "webroot",
             "containerPath": "/var/www/html",
             "readOnly": true
           }
         ]
       },
       {
         "name": "web-server-2",
         "image": "my-repo/sles11-apache",
         "cpu": 100,
         "memory": 100,
         "portMappings": [
           {
             "containerPort": 8080,
             "hostPort": 8080
           }
         ],
         "essential": true,
         "mountPoints": [
           {
             "sourceVolume": "webroot",
             "containerPath": "/srv/www/htdocs",
             "readOnly": true
           }
         ]
       }
     ]
   ```

**Untuk memasang volume dari kontainer lain menggunakan `volumesFrom`.**

Untuk tugas yang dihosting di instans Amazon EC2, Anda dapat menentukan satu atau beberapa volume pada penampung, lalu menggunakan `volumesFrom` parameter dalam definisi container yang berbeda dalam tugas yang sama untuk memasang semua volume dari titik pemasangan yang `sourceContainer` ditentukan semula. Parameter`volumesFrom` berlaku untuk volume yang didefinisikan dalam ketentuan tugas, dan volume yang dibangun ke dalam citra dengan Dockerfile.

1. (Opsional) Untuk berbagi volume yang dibangun ke dalam gambar, gunakan `VOLUME` instruksi di Dockerfile. Contoh berikut Dockerfile menggunakan `httpd` gambar, dan kemudian menambahkan volume dan memasangnya `dockerfile_volume` di root dokumen Apache. Ini adalah folder yang digunakan oleh server `httpd` web.

   ```
   FROM httpd
   VOLUME ["/usr/local/apache2/htdocs/dockerfile_volume"]
   ```

   Anda dapat membangun citra dengan Dockerfile ini dan mendorongnya ke repositori, seperti Docker Hub, dan menggunakannya dalam ketentuan tugas Anda. Contoh `my-repo/httpd_dockerfile_volume` gambar yang digunakan dalam langkah-langkah berikut dibuat dengan Dockerfile sebelumnya.

1. Buat ketentuan tugas yang mendefinisikan volume lain dan memasang titik untuk kontainer. Dalam contoh bagian `volumes` ini, Anda akan membuat volume kosong yang disebut `empty`, yang dikelola oleh daemon Docker. Ada juga volume host yang ditentukan yang disebut`host_etc`. Ini mengekspor `/etc` folder pada instance wadah host.

   ```
   {
     "family": "test-volumes-from",
     "volumes": [
       {
         "name": "empty",
         "host": {}
       },
       {
         "name": "host_etc",
         "host": {
           "sourcePath": "/etc"
         }
       }
     ],
   ```

   Di bagian ketentuan kontainer, buat kontainer yang memasang volume yang didefinisikan sebelumnya. Dalam contoh ini, `web` wadah memasang `host_etc` volume `empty` dan. Ini adalah wadah yang menggunakan gambar yang dibangun dengan volume di Dockerfile.

   ```
   "containerDefinitions": [
       {
         "name": "web",
         "image": "my-repo/httpd_dockerfile_volume",
         "cpu": 100,
         "memory": 500,
         "portMappings": [
           {
             "containerPort": 80,
             "hostPort": 80
           }
         ],
         "mountPoints": [
           {
             "sourceVolume": "empty",
             "containerPath": "/usr/local/apache2/htdocs/empty_volume"
           },
           {
             "sourceVolume": "host_etc",
             "containerPath": "/usr/local/apache2/htdocs/host_etc"
           }
         ],
         "essential": true
       },
   ```

   Buat kontainer lain yang menggunakan `volumesFrom` untuk memasang semua volume yang terkait dengan kontainer `web`. Semua volume pada `web` wadah juga dipasang pada `busybox` wadah. Ini termasuk volume yang ditentukan dalam Dockerfile yang digunakan untuk membangun gambar. `my-repo/httpd_dockerfile_volume`

   ```
       {
         "name": "busybox",
         "image": "busybox",
         "volumesFrom": [
           {
             "sourceContainer": "web"
           }
         ],
         "cpu": 100,
         "memory": 500,
         "entryPoint": [
           "sh",
           "-c"
         ],
         "command": [
           "echo $(date) > /usr/local/apache2/htdocs/empty_volume/date && echo $(date) > /usr/local/apache2/htdocs/host_etc/date && echo $(date) > /usr/local/apache2/htdocs/dockerfile_volume/date"
         ],
         "essential": false
       }
     ]
   }
   ```

   Saat tugas ini dijalankan, kedua kontainer memasang volume, dan `command` dalam `busybox` wadah menulis tanggal dan waktu ke file. File ini dipanggil `date` di setiap folder volume. Folder kemudian terlihat di situs web yang ditampilkan oleh kontainer `web`.
**catatan**  
Karena kontainer `busybox` menjalankan perintah cepat dan kemudian keluar, itu harus ditetapkan sebagai `"essential": false` dalam ketentuan kontainer. Jika tidak, kontainer berhenti seluruh tugas ketika keluar.

# Mengelola ruang memori swap kontainer di Amazon ECS
<a name="container-swap"></a>

Dengan Amazon ECS, Anda dapat mengontrol penggunaan ruang memori swap pada instans Amazon EC2 berbasis Linux di tingkat penampung. Menggunakan konfigurasi swap per kontainer, setiap kontainer dalam definisi tugas dapat mengaktifkan swap atau dinonaktifkan. Bagi mereka yang mengaktifkannya, jumlah maksimum ruang swap yang digunakan dapat dibatasi. Misalnya, container latency-critical dapat menonaktifkan swap. Sebaliknya, wadah dengan permintaan memori transien yang tinggi dapat mengaktifkan swap untuk mengurangi kemungkinan out-of-memory kesalahan saat wadah sedang dimuat.

Konfigurasi swap untuk kontainer dikelola oleh parameter definisi kontainer berikut.

`maxSwap`  
Jumlah total memori tukar (dalam MiB) yang dapat digunakan oleh kontainer. Parameter ini diterjemahkan ke `--memory-swap` opsi untuk docker run di mana nilainya adalah jumlah memori kontainer ditambah nilainya. `maxSwap`  
Jika nilai `maxSwap` sebesar `0` ditentukan, kontainer tidak menggunakan swap. Nilai yang diterima adalah `0` atau bilangan bulat positif. Jika `maxSwap` parameter diabaikan, kontainer menggunakan konfigurasi swap untuk instans kontainer tempatnya berjalan. Nilai `maxSwap` harus ditetapkan untuk parameter `swappiness` yang akan digunakan.

`swappiness`  
Anda dapat menggunakan ini untuk menyetel perilaku swappiness memori kontainer. `swappiness`Nilai `0` penyebab pertukaran tidak terjadi kecuali diperlukan. `swappiness`Nilai `100` penyebab halaman ditukar secara agresif. Nilai yang diterima adalah bilangan bulat antara `0` dan `100`. Jika parameter `swappiness` tidak ditentukan, nilai default sebesar `60` akan digunakan. Jika nilai tidak ditentukan untuk`maxSwap`, parameter ini diabaikan. Parameter ini memetakan ke `--memory-swappiness` opsi untuk docker run.

Dalam contoh berikut, sintaks JSON disediakan.

```
"containerDefinitions": [{
        ...
        "linuxParameters": {
            "maxSwap": integer,
            "swappiness": integer
        },
        ...
}]
```

## Pertimbangan-pertimbangan
<a name="container-swap-considerations"></a>

Pertimbangkan hal berikut ketika Anda menggunakan konfigurasi swap per kontainer.
+ Ruang swap harus diaktifkan dan dialokasikan pada instans Amazon EC2 yang menghosting tugas Anda agar kontainer dapat digunakan. Secara default, Amazon ECS yang dioptimalkan AMIs tidak mengaktifkan swap. Anda harus mengaktifkan swap di instans untuk menggunakan fitur ini. Untuk informasi selengkapnya, lihat [Volume Swap Toko Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-store-swap-volumes.html) di *Panduan Pengguna Amazon EC2* atau [Bagaimana cara mengalokasikan memori agar berfungsi sebagai ruang swap di instans Amazon EC2?](https://repost.aws/knowledge-center/ec2-memory-swap-file) .
+ Parameter definisi wadah ruang swap hanya didukung untuk definisi tugas yang menentukan EC2. Parameter ini tidak didukung untuk definisi tugas yang ditujukan hanya untuk Amazon ECS pada penggunaan Fargate.
+ Fitur ini hanya didukung untuk kontainer Linux. Kontainer Windows tidak didukung saat ini.
+ Jika parameter definisi `maxSwap` dan `swappiness` kontainer dihilangkan dari definisi tugas, setiap kontainer memiliki `swappiness` nilai default. `60` Selain itu, total penggunaan swap dibatasi hingga dua kali memori kontainer.
+ Jika Anda menggunakan tugas di Amazon Linux 2023, `swappiness` parameter tidak didukung.

# Perbedaan definisi tugas Amazon ECS untuk Instans Terkelola Amazon ECS
<a name="managed-instances-tasks-services"></a>

Untuk menggunakan Instans Terkelola Amazon ECS, Anda harus mengonfigurasi definisi tugas untuk menggunakan jenis peluncuran Instans Terkelola Amazon ECS. Ada pertimbangan tambahan saat menggunakan Instans Terkelola Amazon ECS.

## Parameter definisi tugas
<a name="managed-instances-task-parameters"></a>

Tugas yang menggunakan Instans Terkelola Amazon ECS mendukung sebagian besar parameter definisi tugas Amazon ECS yang tersedia. Namun, beberapa parameter memiliki perilaku atau batasan tertentu saat digunakan dengan tugas Instans Terkelola Amazon ECS.

Parameter definisi tugas berikut tidak valid dalam tugas Instans Terkelola Amazon ECS:
+ `disableNetworking`
+ `dnsSearchDomains`
+ `dnsServers`
+ `dockerLabels`
+ `dockerSecurityOptions`
+ `dockerVolumeConfiguration`
+ `ephemeralStorage`
+ `extraHosts`
+ `fsxWindowsFileServerVolumeConfiguration`
+ `hostname`
+ `inferenceAccelerator`
+ `ipcMode`
+ `links`
+ `maxSwap`
+ `proxyConfiguration`
+ `sharedMemorySize`
+ Volume `sourcepath`
+ `swappiness`
+ `tmpfs`

Parameter definisi tugas berikut valid dalam tugas Instans Terkelola Amazon ECS, tetapi memiliki batasan yang harus diperhatikan:
+ `networkConfiguration`- Tugas Instans Terkelola Amazon ECS menggunakan mode `awsvpc` atau `host` jaringan.
+ `placementConstraints`- Atribut kendala berikut didukung.
  + `ecs.subnet-id`
  + `ecs.availability-zone`
  + `ecs.instance-type`
  + `ecs.cpu-architecture`
+ `requiresCompatibilities`- Harus disertakan `MANAGED_INSTANCES` untuk memastikan definisi tugas kompatibel dengan Instans Terkelola Amazon ECS.
+ `resourceRequirement`- `InferenceAccelerator` tidak didukung.
+ `operatingSystemFamily`- Penggunaan Instans Terkelola Amazon ECS. `LINUX`
+ `volumes`- Saat menggunakan bind mount dengan a`sourcePath`, jalur harus menunjuk ke direktori yang dapat ditulis pada host. Bagian dari sistem file Instans Terkelola Amazon ECS bersifat hanya-baca. Direktori yang dapat ditulis termasuk `/var` dan. `/tmp` Untuk informasi selengkapnya, lihat [Gunakan bind mount dengan Amazon ECS](bind-mounts.md).

Untuk memastikan bahwa definisi tugas Anda memvalidasi untuk digunakan dengan Instans Terkelola Amazon ECS, Anda dapat menentukan hal berikut saat mendaftarkan definisi tugas: 
+ Di bidang Konsol Manajemen AWS, untuk **Memerlukan Kompatibilitas**, tentukan. `MANAGED_INSTANCES`
+ Dalam AWS CLI, tentukan `--requires-compatibilities` opsi.
+ Di Amazon ECS API, tentukan `requiresCompatibilities` flag.

# Perbedaan definisi tugas Amazon ECS untuk Fargate
<a name="fargate-tasks-services"></a>

Untuk menggunakan Fargate, Anda harus mengonfigurasi definisi tugas Anda untuk menggunakan jenis peluncuran Fargate. Ada pertimbangan tambahan saat menggunakan Fargate.

## Parameter definisi tugas
<a name="fargate-task-parameters"></a>

Tugas yang menggunakan Fargate tidak mendukung semua parameter definisi tugas Amazon ECS yang tersedia. Beberapa parameter tidak didukung sama sekali, dan yang lain berperilaku berbeda untuk tugas Fargate.

Parameter definisi tugas berikut tidak valid dalam tugas Fargate:
+ `disableNetworking`
+ `dnsSearchDomains`
+ `dnsServers`
+ `dockerSecurityOptions`
+ `extraHosts`
+ `gpu`
+ `ipcMode`
+ `links`
+ `placementConstraints`
+ `privileged`
+ `maxSwap`
+ `swappiness`

Parameter definisi tugas berikut valid dalam tugas Fargate, tetapi memiliki batasan yang harus diperhatikan:
+ `linuxParameters`— Saat menentukan opsi khusus Linux yang diterapkan ke wadah, satu-satunya kemampuan yang dapat Anda tambahkan adalah. `capabilities` `CAP_SYS_PTRACE` Parameter `devices`, `sharedMemorySize`, dan `tmpfs` tidak didukung. Untuk informasi selengkapnya, lihat [Parameter Linux](task_definition_parameters.md#container_definition_linuxparameters).
+ `volumes`— Tugas Fargate hanya mendukung volume host bind mount, sehingga `dockerVolumeConfiguration` parameternya tidak didukung. Untuk informasi selengkapnya, lihat [volume](task_definition_parameters.md#volumes).
+ `cpu`- Untuk wadah Windows aktifAWS Fargate, nilainya tidak boleh kurang dari 1 vCPU.
+ `networkConfiguration`- Tugas Fargate selalu menggunakan mode `awsvpc` jaringan.

Untuk memastikan bahwa definisi tugas Anda memvalidasi untuk digunakan dengan Fargate, Anda dapat menentukan hal berikut saat mendaftarkan definisi tugas: 
+ Di bidang Konsol Manajemen AWS, untuk **Memerlukan Kompatibilitas**, tentukan. `FARGATE`
+ Dalam AWS CLI, tentukan `--requires-compatibilities` opsi.
+ Di Amazon ECS API, tentukan `requiresCompatibilities` flag.

## Sistem Operasi dan Arsitektur
<a name="fargate-task-os"></a>

Saat Anda mengonfigurasi definisi tugas dan kontainerAWS Fargate, Anda harus menentukan Sistem Operasi tempat penampung berjalan. Sistem Operasi berikut didukung untukAWS Fargate:
+ Amazon Linux 2
**catatan**  
Kontainer Linux hanya menggunakan konfigurasi kernel dan kernel dari Sistem Operasi host. Misalnya, konfigurasi kernel mencakup kontrol `sysctl` sistem. Gambar kontainer Linux dapat dibuat dari gambar dasar yang berisi file dan program dari distribusi Linux apa pun. Jika arsitektur CPU cocok, Anda dapat menjalankan container dari image container Linux apa pun di Sistem Operasi apa pun.
+ Windows Server 2019 Full
+ Windows Server 2019 Core
+ Windows Server 2022 Lengkap
+ Windows Server 2022 Inti

Ketika Anda menjalankan wadah WindowsAWS Fargate, Anda harus memiliki arsitektur CPU X86\$164.

Saat menjalankan kontainer LinuxAWS Fargate, Anda dapat menggunakan arsitektur CPU X86\$164, atau ARM64 arsitektur untuk aplikasi berbasis ARM Anda. Untuk informasi selengkapnya, lihat [Definisi tugas Amazon ECS untuk beban kerja ARM 64-bit](ecs-arm64.md).

## CPU dan memori tugas
<a name="fargate-tasks-size"></a>

Definisi tugas Amazon ECS untuk AWS Fargate mengharuskan Anda menentukan CPU dan memori pada tingkat tugas. Sebagian besar kasus penggunaan terpenuhi dengan hanya menentukan sumber daya ini pada tingkat tugas. Tabel berikut menunjukkan kombinasi yang valid antara CPU dan memori tingkat tugas. Anda dapat menentukan nilai memori dalam definisi tugas sebagai string di MiB atau GB. Misalnya, Anda dapat menentukan nilai memori baik seperti `3072` di MiB atau `3 GB` GB. Anda dapat menentukan nilai CPU dalam file JSON sebagai string dalam unit CPU atau virtual CPUs (vCPUs). Misalnya, Anda dapat menentukan nilai CPU baik seperti `1024` dalam unit CPU atau `1 vCPU` di vCPUs.


|  Nilai CPU  |  Nilai memori  |  Sistem operasi yang didukung untuk AWS Fargate  | 
| --- | --- | --- | 
|  256 (.25 vCPU)  |  512 MiB, 1 GB, 2 GB  |  Linux  | 
|  512 (.5 vCPU)  |  1 GB, 2 GB, 3 GB, 4 GB  |  Linux  | 
|  1024 (1 vCPU)  |  2 GB, 3 GB, 4 GB, 5 GB, 6 GB, 7 GB, 8 GB  |  Linux, Windows  | 
|  2048 (2 vCPU)  |  Antara 4 GB dan 16 GB dalam peningkatan 1 GB  |  Linux, Windows  | 
|  4096 (4 vCPU)  |  Antara 8 GB dan 30 GB dalam peningkatan 1 GB  |  Linux, Windows  | 
|  8192 (8 vCPU)  Opsi ini membutuhkan platform Linux `1.4.0` atau yang lebih baru.   |  Antara 16 GB dan 60 GB dalam peningkatan 4 GB  |  Linux  | 
|  16384 (16vCPU)  Opsi ini membutuhkan platform Linux `1.4.0` atau yang lebih baru.   |  Antara 32 GB dan 120 GB dalam peningkatan 8 GB  |  Linux  | 

## Jaringan tugas
<a name="fargate-tasks-services-networking"></a>

Tugas Amazon ECS untuk AWS Fargate memerlukan mode `awsvpc` jaringan, yang menyediakan setiap tugas dengan antarmuka network elastis. Ketika Anda menjalankan tugas atau membuat layanan dengan mode jaringan ini, Anda harus menentukan satu subnet atau lebih untuk melampirkan antarmuka jaringan dan satu grup keamanan atau lebih untuk diterapkan ke antarmuka jaringan. 

Jika Anda menggunakan subnet publik, putuskan apakah Anda ingin untuk memberikan alamat IP publik untuk antarmuka jaringan atau tidak. Untuk tugas Fargate di subnet publik untuk menarik gambar kontainer, alamat IP publik perlu ditetapkan ke antarmuka network elastis tugas, dengan rute ke internet atau gateway NAT yang dapat merutekan permintaan ke internet. Untuk tugas Fargate di subnet pribadi untuk menarik gambar kontainer, Anda memerlukan gateway NAT di subnet untuk merutekan permintaan ke internet. Saat Anda meng-host gambar penampung Anda di Amazon ECR, Anda dapat mengonfigurasi Amazon ECR untuk menggunakan titik akhir VPC antarmuka. Dalam hal ini, IPv4 alamat pribadi tugas digunakan untuk penarikan gambar. Untuk informasi selengkapnya tentang titik akhir antarmuka Amazon ECR, lihat Titik akhir [VPC antarmuka Amazon ECR ()AWS PrivateLink di Panduan Pengguna Registri](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html) *Amazon* Elastic Container.

Berikut ini adalah contoh `networkConfiguration` bagian untuk layanan Fargate:

```
"networkConfiguration": { 
   "awsvpcConfiguration": { 
      "assignPublicIp": "ENABLED",
      "securityGroups": [ "sg-12345678" ],
      "subnets": [ "subnet-12345678" ]
   }
}
```

## Batas sumber daya tugas
<a name="fargate-resource-limits"></a>

Definisi tugas Amazon ECS untuk kontainer Linux AWS Fargate mendukung `ulimits` parameter untuk menentukan batas sumber daya yang akan ditetapkan untuk wadah.

Definisi tugas Amazon ECS untuk Windows aktif AWS Fargate tidak mendukung `ulimits` parameter untuk menentukan batas sumber daya yang akan ditetapkan untuk wadah.

Tugas Amazon ECS yang dihosting di Fargate menggunakan nilai batas sumber daya default yang ditetapkan oleh sistem operasi dengan pengecualian parameter batas sumber daya. `nofile` Batas `nofile` sumber daya menetapkan batasan pada jumlah file terbuka yang dapat digunakan wadah. Di Fargate, batas `nofile` lunak default adalah ` 65535` dan batas keras adalah. `65535` Anda dapat mengatur nilai dari kedua batas hingga`1048576`.

Berikut ini adalah contoh potongan ketentuan tugas yang menunjukkan cara untuk menentukan batas `nofile` kustom yang telah dilipatgandakan:

```
"ulimits": [
    {
       "name": "nofile",
       "softLimit": 2048,
       "hardLimit": 8192
    }
]
```

Untuk informasi lebih lanjut tentang batas sumber daya lain yang dapat disesuaikan, lihat [Batas sumber daya](task_definition_parameters.md#container_definition_limits).

## Pencatatan log
<a name="fargate-tasks-logging"></a>

### Pencatatan peristiwa
<a name="fargate-event-logging"></a>

Amazon ECS mencatat tindakan yang diperlukan. EventBridge Anda dapat menggunakan acara Amazon ECS EventBridge untuk menerima notifikasi mendekati waktu nyata mengenai status klaster, layanan, dan tugas Amazon ECS Anda saat ini. Selain itu, Anda dapat mengotomatiskan tindakan untuk menanggapi peristiwa ini. Untuk informasi selengkapnya, lihat [Otomatiskan tanggapan terhadap kesalahan Amazon ECS menggunakan EventBridge](cloudwatch_event_stream.md).

### Pencatatan siklus hidup tugas
<a name="fargate-task-status"></a>

Tugas yang berjalan di Fargate menerbitkan stempel waktu untuk melacak tugas melalui status siklus hidup tugas. Anda dapat melihat stempel waktu dalam detail tugas di Konsol Manajemen AWS dan dengan menjelaskan tugas di dan. AWS CLI SDKs Misalnya, Anda dapat menggunakan stempel waktu untuk mengevaluasi berapa banyak waktu yang dihabiskan tugas untuk mengunduh gambar kontainer dan memutuskan apakah Anda harus mengoptimalkan ukuran gambar kontainer, atau menggunakan indeks OCI Seekable. Untuk informasi selengkapnya tentang praktik gambar kontainer, lihat[Praktik Terbaik untuk Image Kontainer Amazon ECS](container-considerations.md).

### Pencatatan aplikasi
<a name="fargate-app-logging"></a>

Definisi tugas Amazon ECS untuk AWS Fargate mendukung`awslogs`,`splunk`, dan driver `awsfirelens` log untuk konfigurasi log.

Driver `awslogs` log mengonfigurasi tugas Fargate Anda untuk mengirim informasi log ke Amazon CloudWatch Logs. Berikut ini menunjukkan potongan ketentuan tugas di tempat driver log `awslogs` dikonfigurasi:

```
"logConfiguration": { 
   "logDriver": "awslogs",
   "options": { 
      "awslogs-group" : "/ecs/fargate-task-definition",
      "awslogs-region": "us-east-1",
      "awslogs-stream-prefix": "ecs"
   }
}
```

Untuk informasi selengkapnya tentang penggunaan driver `awslogs` log dalam definisi tugas untuk mengirim log kontainer Anda ke CloudWatch Log, lihat[Kirim log Amazon ECS ke CloudWatch](using_awslogs.md).

Untuk informasi selengkapnya tentang driver log `awsfirelens` dalam ketentuan tugas, lihat [Kirim log Amazon ECS ke AWS layanan atau AWS Partner](using_firelens.md).

Untuk informasi selengkapnya tentang penggunaan driver log `splunk` dalam ketentuan tugas, lihat [`splunk`driver log](example_task_definitions.md#example_task_definition-splunk).

## Penyimpanan tugas
<a name="fargate-tasks-storage"></a>

Untuk tugas Amazon ECS yang dihosting di Fargate, jenis penyimpanan berikut didukung:
+ Volume Amazon EBS menyediakan penyimpanan blok yang hemat biaya, tahan lama, dan berkinerja tinggi untuk beban kerja kontainer intensif data. Untuk informasi selengkapnya, lihat [Gunakan volume Amazon EBS dengan Amazon ECS](ebs-volumes.md).
+ Volume Amazon EFS untuk penyimpanan persisten. Untuk informasi selengkapnya, lihat [Gunakan volume Amazon EFS dengan Amazon ECS](efs-volumes.md).
+ Bind mount untuk penyimpanan sementara. Untuk informasi selengkapnya, lihat [Gunakan bind mount dengan Amazon ECS](bind-mounts.md).

## Lazy loading gambar kontainer menggunakan Seekable OCI (SOCI)
<a name="fargate-tasks-soci-images"></a>

Tugas Amazon ECS di Fargate yang menggunakan `1.4.0` versi platform Linux dapat menggunakan Seekable OCI (SOCI) untuk membantu memulai tugas lebih cepat. Dengan SOCI, kontainer hanya menghabiskan beberapa detik pada penarikan gambar sebelum mereka dapat memulai, menyediakan waktu untuk pengaturan lingkungan dan instantiasi aplikasi saat gambar diunduh di latar belakang. Ini disebut *lazy loading*. Saat Fargate memulai tugas Amazon ECS, Fargate secara otomatis mendeteksi apakah indeks SOCI ada untuk gambar dalam tugas dan memulai penampung tanpa menunggu seluruh gambar diunduh.

Untuk kontainer yang berjalan tanpa indeks SOCI, gambar kontainer diunduh sepenuhnya sebelum penampung dimulai. Perilaku ini sama pada semua versi platform Fargate lainnya dan pada AMI yang dioptimalkan Amazon ECS di instans Amazon EC2.

Seekable OCI (SOCI) adalah teknologi open source yang dikembangkan oleh AWS yang dapat meluncurkan kontainer lebih cepat dengan malas memuat gambar kontainer. SOCI bekerja dengan membuat indeks (Indeks SOCI) dari file dalam gambar kontainer yang ada. Indeks ini membantu meluncurkan kontainer lebih cepat, memberikan kemampuan untuk mengekstrak file individual dari gambar kontainer sebelum mengunduh seluruh gambar. Indeks SOCI harus disimpan sebagai artefak di repositori yang sama dengan gambar dalam registri kontainer. Anda hanya boleh menggunakan indeks SOCI dari sumber tepercaya, karena indeks adalah sumber otoritatif untuk konten gambar. Untuk informasi selengkapnya, lihat [Memperkenalkan OCI yang Dapat Dicari untuk memuat gambar kontainer yang lambat](https://aws.amazon.com/about-aws/whats-new/2022/09/introducing-seekable-oci-lazy-loading-container-images/).

Pelanggan yang ingin menggunakan SOCI hanya akan dapat menggunakan manifes indeks SOCI v2. Pelanggan lama yang sebelumnya telah menggunakan SOCI di Fargate dapat terus menggunakan SOCI Index Manifest v1, namun kami sangat menyarankan pelanggan tersebut untuk bermigrasi ke SOCI Index Manifest v2. SOCI Index Manifest v2 menciptakan hubungan eksplisit antara gambar kontainer dan indeks SOCI mereka untuk memastikan penerapan yang konsisten.
<a name="fargate-soci-considerations"></a>
**Pertimbangan-pertimbangan**  
Jika Anda ingin Fargate menggunakan indeks SOCI untuk memuat gambar kontainer dengan malas dalam suatu tugas, pertimbangkan hal berikut:
+ Hanya tugas yang berjalan pada versi platform Linux yang `1.4.0` dapat menggunakan indeks SOCI. Tugas yang menjalankan kontainer Windows di Fargate tidak didukung.
+ Tugas yang berjalan pada X86\$164 atau arsitektur ARM64 CPU didukung.
+ Gambar kontainer dalam definisi tugas harus disimpan dalam registri gambar yang kompatibel. Berikut ini daftar registri yang kompatibel:
  + Pendaftar pribadi Amazon ECR.
+ Hanya gambar kontainer yang menggunakan gzip kompresi, atau tidak dikompresi yang didukung. Gambar kontainer yang menggunakan zstd kompresi tidak didukung.
+ Untuk SOCI Index Manifest v2, membuat manifes indeks SOCI memodifikasi manifes gambar kontainer saat kami menambahkan anotasi untuk indeks SOCI. Ini menghasilkan intisari gambar kontainer baru. Isi lapisan filesystem gambar kontainer tidak berubah.
+ Untuk SOCI Index Manifest v2, ketika gambar kontainer telah disimpan di repositori gambar kontainer, setelah indeks SOCI dibuat, Anda perlu mendorong ulang gambar kontainer. Mendorong kembali gambar kontainer tidak akan meningkatkan biaya penyimpanan dengan menduplikasi lapisan sistem file, itu hanya mengunggah file manifes baru.
+ Kami menyarankan Anda mencoba lazy loading dengan gambar kontainer yang lebih besar dari ukuran 250 MiB terkompresi. Anda cenderung tidak melihat pengurangan waktu untuk memuat gambar yang lebih kecil.
+ Karena lazy loading dapat mengubah berapa lama tugas Anda dimulai, Anda mungkin perlu mengubah berbagai timeout seperti masa tenggang pemeriksaan kesehatan untuk Elastic Load Balancing.
+ Jika Anda ingin mencegah gambar kontainer dimuat secara malas, gambar kontainer perlu didorong ulang tanpa indeks SOCI terpasang.
<a name="create-soci"></a>
**Membuat indeks OCI Seekable**  
Agar gambar kontainer dimuat lambat, diperlukan indeks SOCI (file metadata) yang dibuat dan disimpan di repositori gambar kontainer di sepanjang sisi gambar kontainer. Untuk membuat dan mendorong indeks SOCI, Anda dapat menggunakan alat CLI [soci-snapshotter](https://github.com/awslabs/soci-snapshotter) open source. GitHub Atau, Anda dapat menerapkan CloudFormation AWS SOCI Index Builder. Ini adalah solusi tanpa server yang secara otomatis membuat dan mendorong indeks SOCI saat gambar kontainer didorong ke Amazon ECR. Untuk informasi selengkapnya tentang solusi dan langkah-langkah penginstalan, lihat [Pembuat Indeks CloudFormation AWS SOCI](https://awslabs.github.io/cfn-ecr-aws-soci-index-builder/) di GitHub. CloudFormation AWS SOCI Index Builder adalah cara untuk mengotomatisasi memulai dengan SOCI, sementara alat soci open source memiliki lebih banyak fleksibilitas seputar pembuatan indeks dan kemampuan untuk mengintegrasikan pembuatan indeks dalam pipeline integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) Anda.

**catatan**  
Agar indeks SOCI dibuat untuk gambar, gambar harus ada di penyimpanan containerd gambar di komputer yang sedang berjalan`soci-snapshotter`. Jika gambar ada di toko Docker gambar, gambar tidak dapat ditemukan.
<a name="verify-soci"></a>
**Memverifikasi bahwa tugas menggunakan pemuatan lambat**  
Untuk memverifikasi bahwa tugas dimuat dengan malas menggunakan SOCI, periksa titik akhir metadata tugas dari dalam tugas. Saat Anda menanyakan titik akhir metadata tugas versi 4, ada `Snapshotter` bidang di jalur default untuk wadah yang Anda kueri. Selain itu, ada `Snapshotter` bidang untuk setiap kontainer di `/task` jalur. Nilai default untuk bidang ini adalah`overlayfs`, dan bidang ini diatur ke `soci` jika SOCI digunakan. Untuk memverifikasi bahwa gambar kontainer memiliki SOCI Index Manifest v2 yang dilampirkan, Anda dapat mengambil Image Index dari Amazon ECR menggunakan. AWS CLI

```
IMAGE_REPOSITORY=r
IMAGE_TAG=latest

aws ecr batch-get-image \
    --repository-name=$IMAGE_REPOSITORY \
    --image-ids imageTag=$IMAGE_TAG \
    --query 'images[0].imageManifest' --output text | jq -r '.manifests[] | select(.artifactType=="application/vnd.amazon.soci.index.v2+json")'
```

Untuk memverifikasi bahwa image container memiliki SOCI Index Manifest v1 yang terpasang, Anda dapat menggunakan OCI Referrers API.

```
ACCOUNT_ID=111222333444
AWS_REGION=us-east-1
IMAGE_REPOSITORY=nginx-demo
IMAGE_TAG=latest
IMAGE_DIGEST=$(aws ecr describe-images --repository-name $IMAGE_REPOSITORY --image-ids imageTag=$IMAGE_TAG --query 'imageDetails[0].imageDigest' --output text)
ECR_PASSWORD=$(aws ecr get-login-password)

curl \
    --silent \
    --user AWS:$ECR_PASSWORD \
    https://$ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/v2/$IMAGE_REPOSITORY/referrers/$IMAGE_DIGEST?artifactType=application%2Fvnd.amazon.soci.index.v1%2Bjson | jq -r '.'
```

# Perbedaan definisi tugas Amazon ECS untuk instans EC2 yang menjalankan Windows
<a name="windows_task_definitions"></a>

Tugas yang berjalan pada instans EC2 Windows tidak mendukung semua parameter definisi tugas Amazon ECS yang tersedia. Beberapa parameter tidak didukung sama sekali, dan yang lain berperilaku berbeda.

Parameter definisi tugas berikut tidak didukung untuk definisi tugas Amazon EC2 Windows:
+ `containerDefinitions`
  + `disableNetworking`
  + `dnsServers`
  + `dnsSearchDomains`
  + `extraHosts`
  + `links`
  + `linuxParameters`
  + `privileged`
  + `readonlyRootFilesystem`
  + `user`
  + `ulimits`
+ `volumes`
  + `dockerVolumeConfiguration`
+ `cpu`

  Kami merekomendasikan agar CPU tingkat-kontainer ditentukan untuk kontainer Windows.
+ `memory`

  Kami merekomendasikan agar CPU tingkat-kontainer ditentukan untuk kontainer Windows.
+ `proxyConfiguration`
+ `ipcMode`
+ `pidMode`
+ `taskRoleArn`

  Peran IAM untuk tugas pada fitur instans Windows EC2 memerlukan konfigurasi tambahan, tetapi sebagian besar konfigurasi ini mirip dengan mengonfigurasi peran IAM untuk tugas pada instance container Linux. Untuk mengetahui informasi selengkapnya, lihat [Konfigurasi tambahan instans Amazon EC2 Windows](task-iam-roles.md#windows_task_IAM_roles).

# Membuat definisi tugas Amazon ECS menggunakan konsol
<a name="create-task-definition"></a>

Anda membuat definisi tugas sehingga Anda dapat menentukan aplikasi yang Anda jalankan sebagai tugas atau layanan.

Saat Anda membuat definisi tugas untuk jenis peluncuran eksternal, Anda perlu membuat definisi tugas menggunakan editor JSON dan mengatur `requireCapabilities` parameternya. `EXTERNAL`

Anda dapat membuat definisi tugas dengan menggunakan pengalaman konsol, atau dengan menentukan file JSON. Anda dapat meminta Amazon Q memberikan rekomendasi saat Anda menggunakan editor JSON. Untuk informasi selengkapnya, lihat [Menggunakan Amazon Q Developer untuk memberikan rekomendasi definisi tugas di konsol Amazon ECS](using-amazon-q.md)

## Validasi JSON
<a name="json-validate-for-create"></a>

Editor JSON konsol Amazon ECS memvalidasi hal berikut dalam file JSON:
+ File tersebut adalah file JSON yang valid.
+ File tidak berisi kunci asing.
+ File berisi `familyName` parameter.
+ Setidaknya ada satu entri di bawah`containerDefinitions`.

## CloudFormation tumpukan
<a name="cloudformation-stack"></a>

Perilaku berikut berlaku untuk definisi tugas yang dibuat di konsol Amazon ECS baru sebelum 12 Januari 2023.

Saat Anda membuat definisi tugas, konsol Amazon ECS secara otomatis membuat CloudFormation tumpukan yang memiliki nama yang dimulai`ECS-Console-V2-TaskDefinition-`. Jika Anda menggunakan AWS CLI atau AWS SDK untuk membatalkan pendaftaran definisi tugas, Anda harus menghapus tumpukan definisi tugas secara manual. Untuk informasi selengkapnya, lihat [Menghapus tumpukan](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html) di *Panduan CloudFormation Pengguna*.

Definisi tugas yang dibuat setelah 12 Januari 2023, tidak memiliki CloudFormation tumpukan yang dibuat secara otomatis untuk mereka.

## Prosedur
<a name="create-task-procedure"></a>

------
#### [ Amazon ECS console ]

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

1. Di panel navigasi, pilih **Definisi tugas**.

1. Pada menu **Create new task definition**, pilih **Create new task definition**.

1. Untuk **Keluarga penetapan tugas**, tentukan nama unik untuk penetapan tugas tersebut.

1. Untuk **jenis Peluncuran**, pilih lingkungan aplikasi. Default konsol adalah **AWS Fargate**(yang tanpa server). Amazon ECS menggunakan nilai ini untuk melakukan validasi guna memastikan bahwa parameter definisi tugas valid untuk jenis infrastruktur.

1. Untuk **Sistem Operasi/Arsitektur**, pilih sistem operasi dan arsitektur CPU untuk tugas tersebut. 

   Untuk menjalankan tugas Anda pada arsitektur ARM 64-bit, pilih **ARM64Linux/**. Untuk informasi selengkapnya, lihat [Platform runtime](task_definition_parameters.md#runtime-platform).

   Untuk menjalankan **AWS Fargate**tugas Anda di wadah Windows, pilih sistem operasi Windows yang didukung. Untuk informasi selengkapnya, lihat [Sistem Operasi dan Arsitektur](fargate-tasks-services.md#fargate-task-os).

1. Untuk **ukuran Tugas**, pilih nilai CPU dan memori yang akan dicadangkan untuk tugas tersebut. Nilai CPU ditentukan sebagai v CPUs dan memori ditentukan sebagai GB.

   Untuk tugas yang dihosting di Fargate, tabel berikut menunjukkan kombinasi CPU dan memori yang valid.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonECS/latest/developerguide/create-task-definition.html)

   Untuk tugas yang menggunakan instans EC2, atau instance eksternal, nilai CPU tugas yang didukung adalah antara 128 unit CPU (0,125 vCPUs) dan unit CPU 196608 (192 v). CPUs

   Untuk menentukan nilai memori dalam GB, masukkan **GB** setelah nilainya. Misalnya, untuk mengatur **Nilai memori** ke 3 GB, masukkan **3 GB**.
**catatan**  
Tingkat tugas CPU dan memori parameter diabaikan untuk Windows kontainer.

1. Untuk **mode Jaringan**, pilih mode jaringan yang akan digunakan. Defaultnya adalah **mode awsvpc**. Untuk informasi selengkapnya, lihat [jaringan tugas Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html).

   Jika Anda memilih **jembatan**, di bawah **pemetaan Port**, untuk **port Host**, masukkan nomor port pada instance kontainer untuk memesan kontainer Anda.

1. (Opsional) Perluas bagian **Peran tugas** untuk mengonfigurasi peran AWS Identity and Access Management (IAM) untuk tugas:

   1. Untuk **peran Tugas**, pilih peran IAM yang akan ditetapkan ke tugas. Peran IAM tugas memberikan izin untuk kontainer dalam tugas untuk memanggil operasi AWS API.

   1. Untuk **peran eksekusi tugas**, pilih peran.

      Untuk informasi tentang kapan menggunakan peran eksekusi tugas, lihat[Peran IAM pelaksanaan tugas Amazon ECS](task_execution_IAM_role.md). Jika Anda tidak membutuhkan peran tersebut, pilih **Tidak Ada**.

1. (Opsional) Perluas bagian **Penempatan tugas** untuk menambahkan batasan penempatan. Batasan penempatan tugas memungkinkan Anda memfilter instance kontainer yang digunakan untuk penempatan tugas menggunakan atribut bawaan atau kustom.

1. (Opsional) Perluas bagian **injeksi Kesalahan** untuk mengaktifkan injeksi kesalahan. Injeksi kesalahan memungkinkan Anda menguji bagaimana aplikasi Anda merespons skenario gangguan tertentu.

1. Untuk setiap kontainer untuk menentukan definisi tugas Anda, selesaikan langkah-langkah berikut.

   1. Untuk **Nama**, masukkan nama untuk wadah.

   1. Untuk **URI Gambar**, masukkan gambar yang akan digunakan untuk memulai wadah. Gambar dalam registri Galeri Publik Amazon ECR dapat ditentukan dengan menggunakan nama registri Publik Amazon ECR saja. Misalnya, jika `public.ecr.aws/ecs/amazon-ecs-agent:latest` ditentukan, wadah Amazon Linux yang dihosting di Galeri Publik Amazon ECR digunakan. Untuk semua repositori lainnya, tentukan repositori dengan menggunakan format atau. `repository-url/image:tag` `repository-url/image@digest`

   1. Jika gambar Anda berada di registri pribadi di luar Amazon ECR, di bawah **Registri pribadi**, aktifkan **otentikasi registri pribadi**. Kemudian, di **Secrets Manager ARN atau nama**, masukkan Amazon Resource Name (ARN) rahasia.

   1. Untuk **wadah Essential**, jika definisi tugas Anda memiliki dua atau lebih kontainer yang ditentukan, Anda dapat menentukan apakah penampung harus dianggap penting. Ketika sebuah wadah ditandai sebagai **Essential**, jika kontainer itu berhenti, maka tugas dihentikan. Setiap definisi tugas harus berisi setidaknya satu wadah penting.

   1. Pemetaan port memungkinkan kontainer untuk mengakses port pada host untuk mengirim atau menerima lalu lintas. Di bawah **pemetaan Port**, lakukan salah satu hal berikut: 
      + Saat Anda menggunakan mode jaringan **awsvpc**, untuk **port Container** dan **Protocol**, pilih pemetaan port yang akan digunakan untuk wadah.
      + Saat Anda menggunakan mode jaringan **jembatan**, untuk **port Container** dan **Protocol**, pilih pemetaan port yang akan digunakan untuk wadah.

      Pilih **Tambahkan lebih banyak pemetaan port untuk menentukan pemetaan** port kontainer tambahan.

   1. Untuk memberikan akses read-only container ke sistem file root, untuk **Read only root file system**, pilih **Read** only.

   1. (Opsional) Untuk menentukan batas CPU, GPU, dan memori tingkat kontainer yang berbeda dari nilai tingkat tugas, di bawah batas **alokasi sumber daya**, lakukan hal berikut:
      + Untuk **CPU**, masukkan jumlah unit CPU yang dicadangkan agen kontainer Amazon ECS untuk kontainer.
      + Untuk **GPU**, masukkan jumlah unit GPU untuk instance kontainer. 

        Instans Amazon EC2 dengan dukungan GPU memiliki 1 unit GPU untuk setiap GPU. Untuk informasi selengkapnya, lihat [Definisi tugas Amazon ECS untuk beban kerja GPU](ecs-gpu.md).
      + Untuk **batas keras Memori**, masukkan jumlah memori, dalam GB, untuk disajikan ke wadah. Jika kontainer mencoba melebihi batas keras, kontainer tersebut akan berhenti.
      + Daemon Docker 20.10.0 atau yang lebih baru menyimpan minimal 6 mebibytes (MiB) memori untuk wadah, jadi jangan tentukan kurang dari 6 MiB memori untuk wadah Anda.

        Daemon Docker 19.03.13-ce atau sebelumnya menyimpan minimal 4 MiB memori untuk wadah, jadi jangan tentukan kurang dari 4 MiB memori untuk wadah Anda.
      + Untuk **batas lunak Memori**, masukkan batas lunak (dalam GB) memori untuk cadangan wadah. 

        Ketika memori sistem sedang diperdebatkan, Docker upaya untuk menjaga memori kontainer ke batas lunak ini. Jika Anda tidak menentukan memori di tingkat tugas, Anda harus menentukan bilangan bulat bukan nol untuk **Batas keras memori** atau **Batas lunak memori** atau keduanya. Jika Anda menentukan keduanya, **Batas keras memori** harus lebih besar daripada **Batas lunak memori**. 

        Fitur ini tidak didukung pada wadah Windows.

   1. (Opsional) Perluas bagian **variabel Lingkungan** untuk menentukan variabel lingkungan untuk disuntikkan ke dalam wadah. Anda dapat menentukan variabel lingkungan baik secara individual dengan menggunakan pasangan nilai kunci atau secara massal dengan menentukan file variabel lingkungan yang dihosting di bucket Amazon S3. Untuk informasi tentang cara memformat file variabel lingkungan, lihat[Meneruskan variabel lingkungan individual ke wadah Amazon ECS](taskdef-envfiles.md).

      Saat Anda menentukan variabel lingkungan untuk penyimpanan rahasia, untuk **Key**, masukkan nama rahasia. Kemudian untuk **ValueFrom**, masukkan ARN lengkap dari rahasia Systems Manager Parameter Store atau rahasia Secrets Manager 

   1. (Opsional) Pilih opsi **Gunakan koleksi log** untuk menentukan konfigurasi log. Untuk setiap driver log yang tersedia, ada opsi driver log untuk ditentukan. Opsi default mengirimkan log kontainer ke Amazon CloudWatch Logs. Opsi driver log lainnya dikonfigurasi dengan 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.
      + **Ekspor log ke Splunk** — Konfigurasikan tugas untuk mengirim log kontainer ke Splunk driver yang mengirim log ke layanan jarak jauh. Anda harus memasukkan URL ke layanan Splunk web Anda. SplunkToken ditetapkan sebagai opsi rahasia karena dapat diperlakukan sebagai data sensitif.
      + **Ekspor log ke Amazon Data Firehose** — Konfigurasikan tugas untuk mengirim log kontainer ke Firehose. Opsi driver log default disediakan, yang mengirimkan log ke aliran pengiriman Firehose. Untuk menentukan nama aliran pengiriman yang berbeda, ubah nilai opsi driver.
      + **Ekspor log ke 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.
      + **Ekspor log ke Amazon OpenSearch Service** — Konfigurasikan tugas untuk mengirim log kontainer ke domain OpenSearch Layanan. Opsi driver log harus disediakan.
      + **Ekspor log ke 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 parameter wadah tambahan.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonECS/latest/developerguide/create-task-definition.html)

   1. (Opsional) Pilih **Tambahkan lebih banyak wadah** untuk menambahkan wadah tambahan ke definisi tugas. 

1. (Opsional) Bagian **Penyimpanan** digunakan untuk memperluas jumlah penyimpanan sementara untuk tugas yang dihosting di Fargate. Anda juga dapat menggunakan bagian ini untuk menambahkan konfigurasi volume data untuk tugas tersebut.

   1. Untuk memperluas penyimpanan sementara yang tersedia di luar nilai default 20 gibibytes (GiB) untuk tugas Fargate Anda, untuk **Jumlah**, masukkan nilai hingga. 200 GiB

1. (Opsional) Untuk menambahkan konfigurasi volume data untuk definisi tugas, pilih **Tambahkan volume**, lalu ikuti langkah-langkah ini.

   1. Untuk **nama Volume**, masukkan nama untuk volume data. Nama volume data digunakan saat membuat titik pemasangan kontainer.

   1. Untuk **konfigurasi Volume**, pilih apakah Anda ingin mengonfigurasi volume saat membuat definisi tugas atau selama penerapan.
**catatan**  
Volume yang dapat dikonfigurasi saat membuat definisi tugas termasuk Bind mountDocker, Amazon EFS, dan Amazon FSx untuk Windows File Server. Volume yang dapat dikonfigurasi saat penerapan saat menjalankan tugas, atau saat membuat atau memperbarui layanan menyertakan Amazon EBS.

   1. Untuk **tipe Volume**, pilih tipe volume yang kompatibel dengan tipe konfigurasi yang Anda pilih, lalu konfigurasikan jenis volume.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonECS/latest/developerguide/create-task-definition.html)

1. Untuk menambahkan volume dari wadah lain, pilih **Tambahkan volume dari**, lalu konfigurasikan yang berikut ini:
   + Untuk **Kontainer**, pilih wadahnya.
   + Untuk **Sumber**, pilih wadah yang memiliki volume yang ingin Anda pasang.
   + Untuk **Read only**, pilih apakah container memiliki akses read-only ke volume.

1. (Opsional) Untuk mengonfigurasi pengaturan penelusuran aplikasi dan pengumpulan metrik dengan menggunakan AWS Distro for OpenTelemetry integrasi, perluas **Pemantauan**, lalu pilih **Gunakan koleksi metrik** untuk mengumpulkan dan mengirim metrik tugas Anda ke Amazon CloudWatch atau Amazon Managed Service for Prometheus. Saat opsi ini dipilih, Amazon ECS membuat sespan AWS Distro for OpenTelemetry kontainer yang telah dikonfigurasi sebelumnya untuk mengirim metrik aplikasi. Untuk informasi selengkapnya, lihat [Korelasikan kinerja aplikasi Amazon ECS menggunakan metrik aplikasi](metrics-data.md).

   1. Saat **Amazon CloudWatch** dipilih, metrik aplikasi kustom Anda dirutekan ke CloudWatch metrik khusus. Untuk informasi selengkapnya, lihat [Mengekspor metrik aplikasi ke Amazon CloudWatch](application-metrics-cloudwatch.md).
**penting**  
Saat mengekspor metrik aplikasi ke Amazon CloudWatch, definisi tugas Anda memerlukan peran IAM tugas dengan izin yang diperlukan. Untuk informasi selengkapnya, lihat [Izin IAM yang diperlukan untuk AWS Distro untuk OpenTelemetry integrasi dengan Amazon CloudWatch](application-metrics-cloudwatch.md#application-metrics-cloudwatch-iam). 

   1. Saat Anda memilih **Amazon Managed Service for Prometheus (instrumentasi pustaka Prometheus), CPU tingkat tugas, memori, jaringan, dan metrik penyimpanan serta metrik aplikasi kustom Anda dirutekan ke Amazon Managed Service untuk Prometheus**. Untuk **titik akhir penulisan jarak jauh Workspace, masukkan URL titik** akhir penulisan jarak jauh untuk ruang kerja Anda. Prometheus Untuk **target Scraping**, masukkan host dan port yang dapat digunakan AWS Distro for OpenTelemetry kolektor untuk mengikis data metrik. Untuk informasi selengkapnya, lihat [Mengekspor metrik aplikasi ke Amazon Managed Service untuk Prometheus](application-metrics-prometheus.md).
**penting**  
Saat mengekspor metrik aplikasi ke Amazon Managed Service untuk Prometheus, definisi tugas Anda memerlukan peran IAM tugas dengan izin yang diperlukan. Untuk informasi selengkapnya, lihat [Izin IAM yang diperlukan untuk AWS Distro untuk integrasi OpenTelemetry dengan Amazon Managed Service untuk Prometheus](application-metrics-prometheus.md#application-metrics-prometheus-iam). 

   1. Saat Anda memilih **Amazon Managed Service for Prometheus OpenTelemetry (instrumentasi**), CPU tingkat tugas, memori, jaringan, dan metrik penyimpanan serta metrik aplikasi kustom Anda dirutekan ke Amazon Managed Service for Prometheus. Untuk **titik akhir penulisan jarak jauh Workspace, masukkan URL titik** akhir penulisan jarak jauh untuk ruang kerja Anda. Prometheus Untuk informasi selengkapnya, lihat [Mengekspor metrik aplikasi ke Amazon Managed Service untuk Prometheus](application-metrics-prometheus.md).
**penting**  
Saat mengekspor metrik aplikasi ke Amazon Managed Service untuk Prometheus, definisi tugas Anda memerlukan peran IAM tugas dengan izin yang diperlukan. Untuk informasi selengkapnya, lihat [Izin IAM yang diperlukan untuk AWS Distro untuk integrasi OpenTelemetry dengan Amazon Managed Service untuk Prometheus](application-metrics-prometheus.md#application-metrics-prometheus-iam). 

1. (Opsional) Perluas bagian **Tag** untuk menambahkan tag, sebagai pasangan nilai kunci, ke definisi tugas.
   + [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** untuk mendaftarkan definisi tugas.

------
#### [ Amazon ECS console JSON editor ]

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

1. Di panel navigasi, pilih **Definisi tugas**.

1. Pada menu **Create new task definition**, pilih **Create new task definition with JSON**.

1. Di kotak editor JSON, edit file JSON Anda,

   JSON harus lulus pemeriksaan validasi yang ditentukan dalam. [Validasi JSON](#json-validate-for-create)

1. Pilih **Buat**.

------

# Menggunakan Amazon Q Developer untuk memberikan rekomendasi definisi tugas di konsol Amazon ECS
<a name="using-amazon-q"></a>

Saat Anda menggunakan editor JSON di konsol Amazon ECS untuk membuat definisi tugas, Anda dapat menggunakan Amazon Q Developer untuk memberikan saran kode yang dihasilkan AI untuk definisi tugas Anda. 

Anda dapat menggunakan kemampuan obrolan sebaris untuk meminta Pengembang Amazon Q membuat, menjelaskan, atau memfaktorkan ulang definisi tugas JSON dengan antarmuka percakapan. Anda dapat menyuntikkan saran yang dihasilkan kapan saja dalam definisi tugas dan menerima atau menolak perubahan yang diusulkan. Amazon ECS juga telah meningkatkan fitur saran sebaris yang ada untuk memanfaatkan Amazon Q Developer.

Saat membuat definisi tugas menggunakan editor JSON, Anda dapat meminta Amazon Q Developer memberikan rekomendasi untuk membantu Anda membuat definisi tugas dengan lebih cepat. Anda dapat memiliki saran inline berbasis properti, atau menggunakan saran Pengembang Amazon Q untuk melengkapi seluruh blok kode sampel secara otomatis.

Anda dapat menggunakan fitur ini di Wilayah di mana Pengembang Amazon Q didukung. Untuk informasi selengkapnya, lihat [AWS Layanan menurut Wilayah](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/).

## Prasyarat
<a name="amazon-q-prerequisites"></a>

Berikut ini adalah prasyarat:
+ Selain izin konsol, pengguna yang membuat definisi tugas di konsol harus memiliki `codewhisperer:GenerateRecommendations` izin untuk rekomendasi dan `q:SendMessage` menggunakan obrolan sebaris. Untuk informasi selengkapnya, lihat [Izin yang diperlukan untuk menggunakan Amazon Q Developer untuk memberikan rekomendasi di konsol](console-permissions.md#amazon-q-permission).

## Prosedur
<a name="amazon-q-procedure"></a>

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

1. Di panel navigasi, pilih **Definisi tugas**.

1. Pada menu **Create new task definition**, pilih **Create new task definition with JSON**.

   Halaman **Buat definisi tugas** terbuka.

   Konsol menyediakan template default berikut.

   ```
   {
       "requiresCompatibilities": [
           "FARGATE"
       ],
       "family": "",
       "containerDefinitions": [
           {
               "name": "",
               "image": "",
               "essential": true
           }
       ],
       "volumes": [],
       "networkMode": "awsvpc",
       "memory": "3 GB",
       "cpu": "1 vCPU",
       "executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole"
   }
   ```

1. **Di pop-up saran sebaris Amazon Q, pilih Izinkan.**

   Jika Anda mengabaikan pop-up, Anda dapat mengaktifkan Amazon Q di bawah ikon roda gigi.

1. Di kotak editor JSON, edit dokumen JSON.

   Agar Amazon Q membuat dan mengisi parameter, masukkan komentar dengan apa yang ingin Anda tambahkan. Dalam contoh di bawah ini, komentar menyebabkan Amazon Q menghasilkan garis tebal.

   ```
   {
       "requiresCompatibilities": [
           "FARGATE"
       ],
       "family": "",
       "containerDefinitions": [
           {
               "name": "",
               "image": "",
               "essential": true
           },
           // add an nginx container using an image from Public ECR, with port 80 open, and send logs to CloudWatch log group "myproxy"
           {
               "name": "nginx",
               "image": "public.ecr.aws/nginx/nginx:latest",
               "essential": true,
               "portMappings": [
                   {
                       "containerPort": 80,
                       "hostPort": 80,
                       "protocol": "tcp"
                   }
               ],
               "logConfiguration": {
                   "logDriver": "awslogs",
                   "options": {
                       "awslogs-group": "myproxy",
                       "awslogs-region": "us-east-1",
                       "awslogs-stream-prefix": "nginx"
                   }
               }
           }
           
       ],
       "volumes": [],
       "networkMode": "awsvpc",
       "memory": "3 GB",
       "cpu": "1 vCPU",
       "executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole"
   }
   ```

1. Untuk menggunakan fitur inline chate, Anda dapat menyorot garis, dan kemudian memilih ikon bintang. 

   Kotak obrolan Pengembang Amazon Q ditampilkan.

   Masukkan permintaan Anda.

   Pengembang Amazon Q menghasilkan, dan kemudian memperbarui JSON.

   Untuk menerima perubahan, pilih **Terima Semua**

1. Pilih **Buat**.

# Memperbarui definisi tugas Amazon ECS menggunakan konsol
<a name="update-task-definition-console-v2"></a>

*Revisi definisi tugas* adalah salinan dari definisi tugas saat ini dengan nilai parameter baru menggantikan yang sudah ada. Semua parameter yang tidak Anda modifikasi ada dalam revisi baru.

Untuk memperbarui ketentuan tugas, membuat revisi ketentuan tugas. Jika ketentuan tugas yang digunakan dalam layanan, Anda harus memperbarui layanan tersebut untuk menggunakan ketentuan tugas yang diperbarui.

Saat Anda membuat revisi, Anda dapat memodifikasi properti kontainer berikut dan properti lingkungan.
+ URI gambar kontainer
+ Pemetaan port
+ Variabel-variabel lingkungan
+ Persyaratan infrastruktur
+ Ukuran tugas
+ Ukuran kontainer
+ Peran tugas
+ Peran pelaksanaan tugas
+ Volume dan titik pemasangan kontainer
+ Registri privat

Anda dapat meminta Amazon Q memberikan rekomendasi saat Anda menggunakan editor JSON. Untuk informasi selengkapnya, lihat [Menggunakan Amazon Q Developer untuk memberikan rekomendasi definisi tugas di konsol Amazon ECS](using-amazon-q.md)

## Validasi JSON
<a name="json-validate-for-update"></a>

Editor JSON konsol Amazon ECS memvalidasi hal berikut dalam file JSON:
+ File tersebut adalah file JSON yang valid
+ File tidak berisi kunci asing
+ File berisi `familyName` parameter
+ Setidaknya ada satu entri di bawah `containerDefinitions`

## Prosedur
<a name="update-task-definition-console-v2-procedure"></a>

------
#### [ Amazon ECS console ]

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

1. Dari bilah navigasi, pilih Wilayah yang berisi ketentuan tugas Anda.

1. Di panel navigasi, pilih **Definisi tugas**.

1. Pilih definisi tugas.

1. Pilih revisi definisi tugas, lalu pilih **Buat revisi baru, Buat revisi** **baru**.

1. Pada halaman **Buat revisi definisi tugas baru**, buat perubahan. Misalnya, untuk mengubah definisi kontainer yang ada (seperti gambar kontainer, batas memori, atau pemetaan port), pilih wadah, lalu buat perubahan. **Anda dapat memperbarui kompatibilitas definisi tugas ke salah satu instans **AWS Fargate**, **Instans Terkelola, Amazon** EC2.**

1. Verifikasi informasi, lalu pilih **Perbarui**.

1. Jika ketentuan tugas Anda digunakan dalam layanan, perbarui layanan Anda dengan ketentuan tugas yang diperbarui. Untuk informasi selengkapnya, lihat [Memperbarui layanan Amazon ECS](update-service-console-v2.md).

------
#### [ Amazon ECS console JSON editor ]

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

1. Di panel navigasi, pilih **Definisi tugas**.

1. Pilih **Buat revisi baru**, **Buat revisi baru dengan JSON**.

1. Di kotak editor JSON, edit file JSON Anda,

   JSON harus lulus pemeriksaan validasi yang ditentukan dalam. [Validasi JSON](#json-validate-for-update)

1. Pilih **Buat**.

------

# Membatalkan pendaftaran revisi definisi tugas Amazon ECS menggunakan konsol
<a name="deregister-task-definition-v2"></a>

Anda dapat membatalkan pendaftaran revisi definisi tugas sehingga tidak lagi ditampilkan dalam panggilan `ListTaskDefinition` API atau di konsol saat Anda ingin menjalankan tugas atau memperbarui layanan.

Ketika Anda membatalkan pendaftaran revisi ketentuan tugas, segera ditandai sebagai `INACTIVE`. Tugas dan layanan yang ada yang mereferensikan tugas revisi definisi `INACTIVE` terus berjalan tanpa gangguan. Layanan yang ada yang mereferensikan revisi ketentuan tugas `INACTIVE` masih dapat menaikkan atau menurunkan skala dengan mengubah jumlah layanan yang diinginkan.

Anda tidak dapat menggunakan revisi ketentuan tugas `INACTIVE` untuk menjalankan tugas baru atau membuat layanan baru. Anda juga tidak dapat memperbarui layanan yang sudah ada untuk mereferensikan revisi ketentuan tugas `INACTIVE` (meskipun mungkin ada jendela hingga 10 menit setelah pencabutan pendaftaran tempat pembatasan ini belum berlaku).

**catatan**  
Saat Anda membatalkan pendaftaran semua revisi dalam keluarga tugas, keluarga definisi tugas dipindahkan ke daftar. `INACTIVE` Menambahkan revisi baru definisi `INACTIVE` tugas memindahkan keluarga definisi tugas kembali ke `ACTIVE` daftar.  
Pada saat ini, revisi ketentuan tugas `INACTIVE` tetap dapat ditemukan di akun Anda tanpa batas waktu. Namun, perilaku ini dapat berubah di masa mendatang. Oleh karena itu, Anda tidak boleh mengandalkan revisi ketentuan tugas `INACTIVE` yang bertahan di luar siklus hidup tugas dan layanan terkait apa pun.

## CloudFormation tumpukan
<a name="cloudformation-stack"></a>

Perilaku berikut berlaku untuk definisi tugas yang dibuat di konsol Amazon ECS baru sebelum 12 Januari 2023.

Saat Anda membuat definisi tugas, konsol Amazon ECS secara otomatis membuat CloudFormation tumpukan yang memiliki nama yang dimulai`ECS-Console-V2-TaskDefinition-`. Jika Anda menggunakan AWS CLI atau AWS SDK untuk membatalkan pendaftaran definisi tugas, Anda harus menghapus tumpukan definisi tugas secara manual. Untuk informasi selengkapnya, lihat [Menghapus tumpukan](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html) di *Panduan CloudFormation Pengguna*.

Definisi tugas yang dibuat setelah 12 Januari 2023, tidak memiliki CloudFormation tumpukan yang dibuat secara otomatis untuk mereka.

## Prosedur
<a name="deregister-task-definition-v2-procedure"></a>

**Untuk membatalkan pendaftaran definisi tugas baru (konsol Amazon ECS)**

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

1. Dari bilah navigasi, pilih wilayah yang berisi ketentuan tugas Anda.

1. Di panel navigasi, pilih **Definisi tugas**.

1. Pada halaman **Definisi tugas**, pilih keluarga definisi tugas yang berisi satu atau beberapa revisi yang ingin Anda deregister.

1. Pada halaman **Nama definisi tugas**, pilih revisi yang akan dihapus, lalu pilih **Tindakan**, **Deregister**.

1. Verifikasi informasi di jendela **Deregister**, lalu pilih **Deregister** untuk menyelesaikan.

# Menghapus revisi definisi tugas Amazon ECS menggunakan konsol
<a name="delete-task-definition-v2"></a>

Saat tidak lagi memerlukan revisi definisi tugas tertentu di Amazon ECS, Anda dapat menghapus revisi definisi tugas.

Saat Anda menghapus revisi definisi tugas, itu segera bertransisi dari ke. `INACTIVE` `DELETE_IN_PROGRESS` Tugas dan layanan yang ada yang mereferensikan revisi definisi `DELETE_IN_PROGRESS` tugas terus berjalan tanpa gangguan. 

Anda tidak dapat menggunakan revisi definisi `DELETE_IN_PROGRESS` tugas untuk menjalankan tugas baru atau membuat layanan baru. Anda juga tidak dapat memperbarui layanan yang ada untuk mereferensikan revisi definisi `DELETE_IN_PROGRESS` tugas.

Saat Anda menghapus semua revisi definisi `INACTIVE` tugas, nama definisi tugas tidak ditampilkan di konsol dan tidak ditampilkan di API. Jika revisi definisi tugas dalam `DELETE_IN_PROGRESS` status, nama definisi tugas ditampilkan di konsol dan dikembalikan di API. Nama definisi tugas dipertahankan oleh Amazon ECS dan revisi bertambah saat berikutnya Anda membuat definisi tugas dengan nama itu.

## Sumber daya Amazon ECS yang dapat memblokir penghapusan
<a name="resource-block-delete"></a>

Permintaan penghapusan definisi tugas tidak akan selesai ketika ada sumber daya Amazon ECS yang bergantung pada revisi definisi tugas. Sumber daya berikut mungkin mencegah definisi tugas dihapus:
+ Tugas mandiri Amazon ECS - Definisi tugas diperlukan agar tugas tetap sehat.
+ Tugas layanan Amazon ECS - Definisi tugas diperlukan agar tugas tetap sehat.
+ Penerapan layanan Amazon ECS dan set tugas - Definisi tugas diperlukan saat peristiwa penskalaan dimulai untuk penyebaran atau set tugas Amazon ECS.

Jika definisi tugas Anda tetap dalam `DELETE_IN_PROGRESS` status, Anda dapat menggunakan konsol, atau AWS CLI untuk mengidentifikasi, dan kemudian menghentikan sumber daya yang memblokir penghapusan definisi tugas.

### Penghapusan definisi tugas setelah sumber daya yang diblokir dihapus
<a name="resource-block-remove"></a>

Aturan berikut berlaku setelah Anda menghapus sumber daya yang memblokir penghapusan definisi tugas:
+ Tugas Amazon ECS - Penghapusan definisi tugas dapat memakan waktu hingga 1 jam untuk diselesaikan setelah tugas dihentikan.
+ Penyebaran layanan Amazon ECS dan set tugas - Penghapusan definisi tugas dapat memakan waktu hingga 24 jam untuk diselesaikan setelah penerapan atau set tugas dihapus.

## Prosedur
<a name="delete-task-def-procedure"></a>

**Untuk menghapus definisi tugas (konsol Amazon ECS)**

Anda harus membatalkan pendaftaran revisi definisi tugas sebelum Anda menghapusnya. Untuk informasi selengkapnya, lihat [Membatalkan pendaftaran revisi definisi tugas Amazon ECS menggunakan konsol](deregister-task-definition-v2.md).

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

1. Dari bilah navigasi, pilih wilayah yang berisi ketentuan tugas Anda.

1. Di panel navigasi, pilih **Definisi tugas**.

1. Pada halaman **Definisi tugas**, pilih keluarga definisi tugas yang berisi satu atau beberapa revisi yang ingin Anda hapus.

1. Pada halaman **nama definisi tugas**, pilih revisi yang akan dihapus, lalu pilih **Tindakan**, **Hapus**.

   Jika **Hapus** tidak tersedia, Anda harus membatalkan pendaftaran definisi tugas.

1. Verifikasi informasi di kotak **Hapus** konfirmasi, lalu pilih **Hapus** untuk menyelesaikan.

# Kasus penggunaan definisi tugas Amazon ECS
<a name="use-cases"></a>

Pelajari lebih lanjut tentang cara menulis definisi tugas untuk berbagai AWS layanan dan fitur.

Bergantung pada beban kerja Anda, ada parameter definisi tugas tertentu yang perlu diatur. Juga untuk EC2, Anda harus memilih instance tertentu yang direkayasa untuk beban kerja.

**Topics**
+ [

# Definisi tugas Amazon ECS untuk beban kerja GPU
](ecs-gpu.md)
+ [

# Definisi tugas Amazon ECS untuk beban kerja transcoding video
](ecs-vt1.md)
+ [

# Definisi tugas Amazon ECS untuk beban kerja pembelajaran mesin AWS Neuron
](ecs-inference.md)
+ [

# Definisi tugas Amazon ECS untuk instans pembelajaran mendalam
](ecs-dl1.md)
+ [

# Definisi tugas Amazon ECS untuk beban kerja ARM 64-bit
](ecs-arm64.md)
+ [

# Kirim log Amazon ECS ke CloudWatch
](using_awslogs.md)
+ [

# Kirim log Amazon ECS ke AWS layanan atau AWS Partner
](using_firelens.md)
+ [

# Menggunakan gambar AWS non-kontainer di Amazon ECS
](private-auth.md)
+ [

# Mulai ulang kontainer individual dalam tugas Amazon ECS dengan kebijakan restart kontainer
](container-restart-policy.md)
+ [

# Meneruskan data sensitif ke wadah Amazon ECS
](specifying-sensitive-data.md)

# Definisi tugas Amazon ECS untuk beban kerja GPU
<a name="ecs-gpu"></a>

Amazon ECS mendukung beban kerja yang menggunakan GPU, saat Anda membuat cluster dengan instance container yang mendukung GPU. Instans container berbasis GPU Amazon EC2 yang menggunakan tipe instans p2, p3, p5, g3, g4, dan g5 menyediakan akses ke NVIDIA. GPUs Untuk informasi selengkapnya, lihat [Instans Komputasi Akselerasi Linux](https://docs.aws.amazon.com/ec2/latest/instancetypes/ac.html) di panduan *Jenis Instans Amazon EC2*.

Amazon ECS menyediakan AMI yang dioptimalkan untuk GPU yang dilengkapi dengan driver kernel NVIDIA yang telah dikonfigurasi sebelumnya dan runtime GPU Docker. Untuk informasi selengkapnya, lihat [Linux Amazon ECS yang dioptimalkan AMIs](ecs-optimized_AMI.md).

Anda dapat menunjuk sejumlah definisi GPUs tugas Anda untuk pertimbangan penempatan tugas di tingkat kontainer. Amazon ECS menjadwalkan instans kontainer yang tersedia yang mendukung GPUs dan menyematkan fisik GPUs ke kontainer yang tepat untuk kinerja optimal. 

Berikut tipe instans Amazon EC2 berbasis GPU yang didukung. [https://aws.amazon.com/ec2/instance-types/g5/](https://aws.amazon.com/ec2/instance-types/g5/)


|  Tipe instans  |  GPUs  |  Memori GPU (GiB)  |  v CPUs  |  Memori (GiB)  | 
| --- | --- | --- | --- | --- | 
|  p3.2xlarge  |  1  |  16  |  8  |  61  | 
|  p3.8xlarge  |  4  |  64  |  32  |  244  | 
|  p3.16xlarge  |  8  |  128  |  64  |  488  | 
|  p3dn.24xlarge  |  8  |  256  |  96  |  768  | 
|  p4d.24xlarge  | 8 | 320 | 96 | 1152 | 
| p5.48xlarge | 8 | 640 | 192 | 2048 | 
|  g3s.xlarge  |  1  |  8  |  4  |  30,5  | 
|  g3.4xlarge  |  1  |  8  |  16  |  122  | 
|  g3.8xlarge  |  2  |  16  |  32  |  244  | 
|  g3.16xlarge  |  4  |  32  |  64  |  488  | 
|  g4dn.xlarge  |  1  |  16  |  4  |  16  | 
|  g4dn.2xlarge  |  1  |  16  |  8  |  32  | 
|  g4dn.4xlarge  |  1  |  16  |  16  |  64  | 
|  g4dn.8xlarge  |  1  |  16  |  32  |  128  | 
|  g4dn.12xlarge  |  4  |  64  |  48  |  192  | 
|  g4dn.16xlarge  |  1  |  16  |  64  |  256  | 
|  g5.xlarge  |  1  |  24  |  4  |  16  | 
|  g5.2xlarge  |  1  |  24  |  8  |  32  | 
|  g5.4xlarge  |  1  |  24  |  16  |  64  | 
|  g5.8xlarge  |  1  |  24  |  32  |  128  | 
|  g5.16xlarge  |  1  |  24  |  64  |  256  | 
|  g5.12xlarge  |  4  |  96  |  48  |  192  | 
|  g5.24xlarge  |  4  |  96  |  96  |  384  | 
|  g5.48xlarge  |  8  |  192  |  192  |  768  | 
| g6.xlarge | 1 | 24 | 4 | 16 | 
| g6.2xlarge | 1 | 24 | 8 | 32 | 
| g6.4xlarge | 1 | 24 | 16 | 64 | 
| g6.8xlarge | 1 | 24 | 32 | 128 | 
| g6.16.xlarge | 1 | 24 | 64 | 256 | 
| g6.12xlarge | 4 | 96 | 48 | 192 | 
| g6.24xlarge | 4 | 96 | 96 | 384 | 
| g6.48xlarge | 8 | 192 | 192 | 768 | 
| g6.logam | 8 | 192 | 192 | 768 | 
| gr6.4xbesar | 1 | 24 | 16 | 128 | 
| g6e.xlarge | 1 | 48 | 4 | 32 | 
| g6e.2xlarge | 1 | 48 | 8 | 64 | 
| g6e.4xlarge | 1 | 48 | 16 | 128 | 
| g6e.8xlarge | 1 | 48 | 32 | 256 | 
| g6e16.xlarge | 1 | 48 | 64 | 512 | 
| g6e12.xlarge | 4 | 192 | 48 | 384 | 
| g6e24.xlarge | 4 | 192 | 96 | 768 | 
| g6e48.xlarge | 8 | 384 | 192 | 1536 | 
| gr6.8xbesar | 1 | 24 | 32 | 256 | 

Anda dapat mengambil ID Amazon Machine Image (AMI) untuk Amazon ECS yang dioptimalkan AMIs dengan menanyakan Parameter Store API. AWS Systems Manager Dengan menggunakan parameter ini, Anda tidak perlu mencari AMI yang dioptimalkan Amazon ECS secara manual. IDs Untuk informasi selengkapnya tentang Systems Manager Parameter Store API, lihat [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html). Pengguna yang Anda gunakan harus memiliki izin `ssm:GetParameter` IAM untuk mengambil metadata AMI Amazon ECS yang dioptimalkan.

```
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended --region us-east-1
```

# Digunakan GPUs dengan Instans Terkelola Amazon ECS
<a name="managed-instances-gpu"></a>

Instans Terkelola Amazon ECS mendukung komputasi akselerasi GPU untuk beban kerja seperti pembelajaran mesin, komputasi berkinerja tinggi, dan pemrosesan video melalui jenis instans Amazon EC2 berikut. Untuk informasi selengkapnya tentang jenis instans yang didukung oleh Instans Terkelola Amazon ECS, lihat. [Tipe instans Instans Terkelola Amazon ECS](managed-instances-instance-types.md)

Berikut ini adalah subset tipe instans berbasis GPU yang didukung pada Instans Terkelola Amazon ECS:
+ `g4dn`: Didukung olehNVIDIA T4 GPUs, cocok untuk inferensi pembelajaran mesin, visi komputer, dan aplikasi grafis intensif.
+ `g5`: Didukung olehNVIDIA A10G GPUs, menawarkan kinerja yang lebih tinggi untuk aplikasi grafis intensif dan beban kerja pembelajaran mesin.
+ `p3`: Didukung olehNVIDIA V100 GPUs, dirancang untuk komputasi kinerja tinggi dan pelatihan pembelajaran mendalam.
+ `p4d`: Didukung olehNVIDIA A100 GPUs, menawarkan kinerja tertinggi untuk pelatihan pembelajaran mesin dan komputasi kinerja tinggi.

Saat Anda menggunakan jenis instans berkemampuan GPU dengan Instans Terkelola Amazon ECS, NVIDIA driver dan CUDA toolkit sudah diinstal sebelumnya pada instans, sehingga memudahkan menjalankan beban kerja yang dipercepat GPU.

## Pemilihan instans berkemampuan GPU
<a name="managed-instances-gpu-instance-selection"></a>

Untuk memilih jenis instans berkemampuan GPU untuk beban kerja Instans Terkelola Amazon ECS, gunakan `instanceRequirements` objek dalam templat peluncuran penyedia kapasitas. Cuplikan berikut menunjukkan atribut yang dapat digunakan untuk memilih instance berkemampuan GPU.

```
{
  "instanceRequirements": {
    "acceleratorTypes": "gpu",
    "acceleratorCount": 1,
    "acceleratorManufacturers": ["nvidia"]
  }
}
```

Cuplikan berikut menunjukkan atribut yang dapat digunakan untuk menentukan jenis instance berkemampuan GPU di template peluncuran.

```
{
  "instanceRequirements": {
    "allowedInstanceTypes": ["g4dn.xlarge", "p4de.24xlarge"]
  }
}
```

## Gambar kontainer berkemampuan GPU
<a name="managed-instances-gpu-container-images"></a>

Untuk digunakan GPUs dalam wadah Anda, Anda perlu menggunakan gambar kontainer yang berisi pustaka dan alat GPU yang diperlukan. NVIDIAmenyediakan beberapa gambar kontainer bawaan yang dapat Anda gunakan sebagai dasar untuk beban kerja GPU Anda, termasuk yang berikut ini:
+ `nvidia:cuda`: Gambar dasar dengan CUDA toolkit untuk komputasi GPU.
+ `tensorflow/tensorflow:latest-gpu`: TensorFlow dengan dukungan GPU.
+ `pytorch/pytorch:latest-cuda`: PyTorch dengan dukungan GPU.

Untuk contoh definisi tugas untuk Amazon ECS di Instans Terkelola Amazon ECS yang melibatkan penggunaan, lihat. GPUs [Menentukan GPUs dalam definisi tugas Amazon ECS](ecs-gpu-specifying.md)

## Pertimbangan-pertimbangan
<a name="gpu-considerations"></a>

**catatan**  
Dukungan untuk tipe keluarga instans g2 telah usang.  
Jenis keluarga instans p2 hanya didukung pada versi yang lebih awal dari AMI yang `20230912` dioptimalkan untuk GPU Amazon ECS. Jika Anda perlu terus menggunakan instance p2, lihat. [Apa yang harus dilakukan jika Anda membutuhkan instance P2](#p2-instance)  
Pembaruan NVIDIA/CUDA driver di tempat pada kedua tipe keluarga instans ini akan menyebabkan potensi kegagalan beban kerja GPU.

Kami menyarankan Anda mempertimbangkan hal berikut sebelum Anda mulai bekerja dengan GPUs Amazon ECS.
+ Klaster Anda dapat terdiri dari campuran GPU dan instans kontainer non-GPU.
+ Anda dapat menjalankan beban kerja GPU pada instance eksternal. Saat mendaftarkan instance eksternal dengan cluster Anda, pastikan `--enable-gpu` flag disertakan pada skrip instalasi. Untuk informasi selengkapnya, lihat [Mendaftarkan instans eksternal ke kluster Amazon ECS](ecs-anywhere-registration.md).
+ Anda harus mengatur `ECS_ENABLE_GPU_SUPPORT` ke `true` dalam file konfigurasi agen Anda. Untuk informasi selengkapnya, lihat [Konfigurasi agen kontainer Amazon ECS](ecs-agent-config.md).
+ Saat menjalankan tugas atau membuat layanan, Anda dapat menggunakan atribut tipe instance saat mengonfigurasi batasan penempatan tugas untuk menentukan instance kontainer tempat tugas akan diluncurkan. Dengan melakukan hal tersebut, Anda bisa lebih efektif menggunakan sumber daya Anda. Untuk informasi selengkapnya, lihat [Cara Amazon ECS Menempatkan Tugas di Instans Kontainer](task-placement.md).

  Contoh berikut meluncurkan tugas pada instans kontainer `g4dn.xlarge` di klaster default Anda.

  ```
  aws ecs run-task --cluster default --task-definition ecs-gpu-task-def \
       --placement-constraints type=memberOf,expression="attribute:ecs.instance-type ==  g4dn.xlarge" --region us-east-2
  ```
+ Untuk setiap kontainer yang memiliki persyaratan sumber daya GPU yang ditentukan dalam definisi kontainer, Amazon ECS menetapkan runtime kontainer menjadi runtime kontainer NVIDIA.
+ Runtime kontainer NVIDIA membutuhkan beberapa variabel lingkungan untuk disetel dalam wadah agar berfungsi dengan baik. Untuk daftar variabel lingkungan ini, lihat [Konfigurasi Khusus dengan Docker](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html?highlight=environment%20variable). Amazon ECS menetapkan nilai variabel `NVIDIA_VISIBLE_DEVICES` lingkungan menjadi daftar perangkat GPU yang ditetapkan IDs Amazon ECS ke wadah. Untuk variabel lingkungan lain yang diperlukan, Amazon ECS tidak mengaturnya. Jadi, pastikan image container Anda menyetelnya atau disetel dalam definisi container.
+ Keluarga tipe instans p5 didukung pada versi `20230929` dan yang lebih baru dari AMI yang dioptimalkan untuk GPU Amazon ECS. 
+ Keluarga tipe instans g4 didukung pada versi `20230913` dan yang lebih baru dari AMI yang dioptimalkan untuk GPU Amazon ECS. Untuk informasi selengkapnya, lihat [Linux Amazon ECS yang dioptimalkan AMIs](ecs-optimized_AMI.md). Ini tidak didukung dalam alur kerja Create Cluster di konsol Amazon ECS. Untuk menggunakan jenis instans ini, Anda harus menggunakan konsol Amazon EC2 AWS CLI, atau API dan mendaftarkan instans secara manual ke cluster Anda.
+ Tipe instans p4d.24xlarge hanya bekerja dengan CUDA 11 atau yang lebih baru.
+ AMI yang dioptimalkan oleh GPU Amazon ECS IPv6 telah diaktifkan, yang menyebabkan masalah saat menggunakan. `yum` Ini dapat diatasi dengan mengkonfigurasi `yum` untuk digunakan IPv4 dengan perintah berikut.

  ```
  echo "ip_resolve=4" >> /etc/yum.conf
  ```
+  Saat Anda membuat image kontainer yang tidak menggunakan gambar NVIDIA/CUDA dasar, Anda harus menyetel variabel runtime `NVIDIA_DRIVER_CAPABILITIES` container ke salah satu nilai berikut:
  + `utility,compute`
  + `all`

  Untuk informasi tentang cara mengatur variabel, lihat [Mengontrol Runtime Kontainer NVIDIA](https://sarus.readthedocs.io/en/stable/user/custom-cuda-images.html#controlling-the-nvidia-container-runtime) di situs web NVIDIA.
+ GPUs tidak didukung pada wadah Windows.

# Luncurkan instans kontainer GPU untuk Amazon ECS
<a name="gpu-launch"></a>

Untuk menggunakan instans GPU di Amazon ECS di Amazon EC2, Anda perlu membuat template peluncuran, file data pengguna, dan meluncurkan instance.

Anda kemudian dapat menjalankan tugas yang menggunakan definisi tugas yang dikonfigurasi untuk GPU.

## Menggunakan templat peluncuran
<a name="gpu-launch-template"></a>

Anda dapat membuat template peluncuran.
+ Buat template peluncuran yang menggunakan ID AMI GPU Amazon ECS yang dioptimalkan Untuk AMI. Untuk informasi tentang cara membuat templat peluncuran, lihat [Membuat templat peluncuran baru menggunakan parameter yang Anda tentukan](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-launch-template.html#create-launch-template-define-parameters) di *Panduan Pengguna Amazon EC2*.

  Gunakan ID AMI dari langkah sebelumnya untuk **image Amazon Machine**. Untuk informasi tentang cara menentukan ID AMI dengan parameter Systems Manager, lihat [Menentukan parameter Systems Manager dalam template peluncuran](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-launch-template.html#use-an-ssm-parameter-instead-of-an-ami-id) di *Panduan Pengguna Amazon EC2*.

  Tambahkan yang berikut ini ke **data Pengguna** di template peluncuran. Ganti *cluster-name* dengan nama klaster Anda.

  ```
  #!/bin/bash
  echo ECS_CLUSTER=cluster-name >> /etc/ecs/ecs.config;
  echo ECS_ENABLE_GPU_SUPPORT=true >> /etc/ecs/ecs.config
  ```

## Gunakan AWS CLI
<a name="gpu-launch-cli"></a>

Anda dapat menggunakan AWS CLI untuk meluncurkan instance container.

1. Buat file yang dipanggil`userdata.toml`. File ini digunakan untuk data pengguna contoh. Ganti *cluster-name* dengan nama klaster Anda.

   ```
   #!/bin/bash
   echo ECS_CLUSTER=cluster-name >> /etc/ecs/ecs.config;
   echo ECS_ENABLE_GPU_SUPPORT=true >> /etc/ecs/ecs.config
   ```

1. Jalankan perintah berikut untuk mendapatkan ID AMI GPU. Anda menggunakan ini pada langkah berikut.

   ```
   aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended --region us-east-1
   ```

1. Jalankan perintah berikut untuk meluncurkan instance GPU. Ingatlah untuk mengganti parameter berikut:
   + Ganti *subnet* dengan ID subnet pribadi atau publik tempat instans Anda akan diluncurkan.
   + Ganti *gpu\$1ami* dengan ID AMI dari langkah sebelumnya.
   + Ganti *t3.large* dengan jenis instance yang ingin Anda gunakan.
   + Ganti *region* dengan kode Region.

   ```
   aws ec2 run-instances --key-name ecs-gpu-example \
      --subnet-id subnet \
      --image-id gpu_ami \
      --instance-type t3.large \
      --region region \
      --tag-specifications 'ResourceType=instance,Tags=[{Key=GPU,Value=example}]' \
      --user-data file://userdata.toml \
      --iam-instance-profile Name=ecsInstanceRole
   ```

1. Jalankan perintah berikut untuk memverifikasi bahwa instance container terdaftar ke cluster. Saat Anda menjalankan perintah ini, ingatlah untuk mengganti parameter berikut:
   + Ganti *cluster* dengan nama klaster Anda.
   + Ganti *region* dengan kode Wilayah Anda.

   ```
   aws ecs list-container-instances --cluster cluster-name --region region
   ```

# Menentukan GPUs dalam definisi tugas Amazon ECS
<a name="ecs-gpu-specifying"></a>

Untuk menggunakan instance GPUs on a container dan runtime GPU Docker, pastikan Anda menetapkan jumlah container yang dibutuhkan dalam definisi GPUs tugas. Saat wadah yang mendukung GPUs ditempatkan, agen kontainer Amazon ECS menyematkan jumlah fisik yang diinginkan GPUs ke wadah yang sesuai. Jumlah GPUs cadangan untuk semua kontainer dalam tugas tidak dapat melebihi jumlah yang tersedia GPUs pada instance kontainer tempat tugas diluncurkan. Untuk informasi selengkapnya, lihat [Membuat definisi tugas Amazon ECS menggunakan konsol](create-task-definition.md).

**penting**  
Jika persyaratan GPU Anda tidak ditentukan dalam ketentuan tugas, tugas akan menggunakan waktu aktif Docker default.

Berikut ini menunjukkan format JSON untuk persyaratan GPU dalam ketentuan tugas:

```
{
  "containerDefinitions": [
     {
        ...
        "resourceRequirements" : [
            {
               "type" : "GPU", 
               "value" : "2"
            }
        ],
     },
...
}
```

Contoh berikut menunjukkan sintaksis untuk kontainer Docker yang menentukan persyaratan GPU. Wadah ini menggunakan dua GPUs, menjalankan `nvidia-smi` utilitas, dan kemudian keluar.

```
{
  "containerDefinitions": [
    {
      "memory": 80,
      "essential": true,
      "name": "gpu",
      "image": "nvidia/cuda:11.0.3-base",
      "resourceRequirements": [
         {
           "type":"GPU",
           "value": "2"
         }
      ],
      "command": [
        "sh",
        "-c",
        "nvidia-smi"
      ],
      "cpu": 100
    }
  ],
  "family": "example-ecs-gpu"
}
```

Contoh definisi tugas berikut menunjukkan TensorFlow wadah yang mencetak jumlah yang tersedia GPUs. Tugas berjalan di Instans Terkelola Amazon ECS, memerlukan satu GPU, dan menggunakan instance. `g4dn.xlarge`

```
{
  "family": "tensorflow-gpu",
  "networkMode": "awsvpc",
  "executionRoleArn": "arn:aws:iam::account-id:role/ecsTaskExecutionRole",
  "containerDefinitions": [
    {
      "name": "tensorflow",
      "image": "tensorflow/tensorflow:latest-gpu",
      "essential": true,
      "command": [
        "python",
        "-c",
        "import tensorflow as tf; print('Num GPUs Available: ', len(tf.config.list_physical_devices('GPU')))"
      ],
      "resourceRequirements": [
        {
          "type": "GPU",
          "value": "1"
        }
      ],
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "/ecs/tensorflow-gpu",
          "awslogs-region": "region",
          "awslogs-stream-prefix": "ecs"
        }
      }
    }
  ],
  "requiresCompatibilities": [
    "MANAGED_INSTANCES"
  ],
  "cpu": "4096",
  "memory": "8192",
}
```

## Bagikan GPUs
<a name="share-gpu"></a>

Saat Anda ingin berbagi GPUs, Anda perlu mengkonfigurasi yang berikut ini.

1. Hapus persyaratan sumber daya GPU dari definisi tugas Anda sehingga Amazon ECS tidak mencadangkan semua GPUs yang harus dibagikan.

1. Tambahkan data pengguna berikut ke instance Anda saat Anda ingin berbagi GPUs. Ini akan menjadikan nvidia sebagai runtime kontainer Docker default pada instance container sehingga semua container Amazon ECS dapat menggunakan. GPUs Untuk informasi selengkapnya, lihat [Menjalankan perintah saat Anda meluncurkan instans EC2 dengan input data pengguna](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) di Panduan Pengguna *Amazon EC2*.

   ```
   const userData = ec2.UserData.forLinux();
    userData.addCommands(
    'sudo rm /etc/sysconfig/docker',
    'echo DAEMON_MAXFILES=1048576 | sudo tee -a /etc/sysconfig/docker',
    'echo OPTIONS="--default-ulimit nofile=32768:65536 --default-runtime nvidia" | sudo tee -a /etc/sysconfig/docker',
    'echo DAEMON_PIDFILE_TIMEOUT=10 | sudo tee -a /etc/sysconfig/docker',
    'sudo systemctl restart docker',
   );
   ```

1. Atur variabel `NVIDIA_VISIBLE_DEVICES` lingkungan pada wadah Anda. Anda dapat melakukan ini dengan menentukan variabel lingkungan dalam definisi tugas Anda. Untuk informasi tentang nilai yang valid, lihat [Pencacahan GPU](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html#gpu-enumeration) di situs dokumentasi NVIDIA.

## Apa yang harus dilakukan jika Anda membutuhkan instance P2
<a name="p2-instance"></a>

Jika Anda perlu menggunakan instance P2, Anda dapat menggunakan salah satu opsi berikut untuk terus menggunakan instance.

Anda harus memodifikasi data pengguna instance untuk kedua opsi. Untuk informasi selengkapnya, lihat [Menjalankan perintah saat Anda meluncurkan instans EC2 dengan input data pengguna](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) di Panduan Pengguna *Amazon EC2*.

**Gunakan AMI yang dioptimalkan GPU terakhir yang didukung**

Anda dapat menggunakan `20230906` versi AMI yang dioptimalkan untuk GPU, dan menambahkan yang berikut ini ke data pengguna instance.

Ganti nama cluster dengan nama cluster Anda.

```
#!/bin/bash
echo "exclude=*nvidia* *cuda*" >> /etc/yum.conf
echo "ECS_CLUSTER=cluster-name" >> /etc/ecs/ecs.config
```

**Gunakan AMI terbaru yang dioptimalkan untuk GPU, dan perbarui data pengguna**

Anda dapat menambahkan berikut ini ke data pengguna instance. Ini menghapus instalasi driver Nvidia 535/Cuda12.2, dan kemudian menginstal driver Nvidia 470/Cuda11.4 dan memperbaiki versi.

```
#!/bin/bash
yum remove -y cuda-toolkit* nvidia-driver-latest-dkms*
tmpfile=$(mktemp)
cat >$tmpfile <<EOF
[amzn2-nvidia]
name=Amazon Linux 2 Nvidia repository
mirrorlist=\$awsproto://\$amazonlinux.\$awsregion.\$awsdomain/\$releasever/amzn2-nvidia/latest/\$basearch/mirror.list
priority=20
gpgcheck=1
gpgkey=https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/7fa2af80.pub
enabled=1
exclude=libglvnd-*
EOF

mv $tmpfile /etc/yum.repos.d/amzn2-nvidia-tmp.repo
yum install -y system-release-nvidia cuda-toolkit-11-4 nvidia-driver-latest-dkms-470.182.03
yum install -y libnvidia-container-1.4.0 libnvidia-container-tools-1.4.0 nvidia-container-runtime-hook-1.4.0 docker-runtime-nvidia-1

echo "exclude=*nvidia* *cuda*" >> /etc/yum.conf
nvidia-smi
```

**Buat AMI yang dioptimalkan dengan GPU yang kompatibel dengan P2 Anda sendiri**

Anda dapat membuat AMI yang dioptimalkan untuk GPU Amazon ECS kustom Anda sendiri yang kompatibel dengan instans P2, lalu meluncurkan instans P2 menggunakan AMI.

1. Jalankan perintah berikut untuk mengkloning file. `amazon-ecs-ami repo`

   ```
   git clone https://github.com/aws/amazon-ecs-ami
   ```

1. Tetapkan agen Amazon ECS yang diperlukan dan sumber versi AMI Amazon Linux di `release.auto.pkrvars.hcl` atau`overrides.auto.pkrvars.hcl`.

1. Jalankan perintah berikut untuk membangun AMI EC2 yang kompatibel dengan P2 pribadi.

   Ganti region dengan Region dengan instance Region.

   ```
   REGION=region make al2keplergpu
   ```

1. Gunakan AMI dengan data pengguna instans berikut untuk menyambung ke klaster Amazon ECS.

   Ganti nama cluster dengan nama cluster Anda.

   ```
   #!/bin/bash
   echo "ECS_CLUSTER=cluster-name" >> /etc/ecs/ecs.config
   ```

# Definisi tugas Amazon ECS untuk beban kerja transcoding video
<a name="ecs-vt1"></a>

[Untuk menggunakan beban kerja transcoding video di Amazon ECS, daftarkan instans Amazon EC2. VT1](https://aws.amazon.com/ec2/instance-types/vt1/) Setelah mendaftarkan instans ini, Anda dapat menjalankan beban kerja transcoding video langsung dan pra-render sebagai tugas di Amazon ECS. VT1 Instans Amazon EC2 menggunakan kartu transcoding media Xilinx U30 untuk mempercepat beban kerja transcoding video langsung dan pra-render.

**catatan**  
[Untuk petunjuk tentang cara menjalankan beban kerja transcoding video dalam wadah selain Amazon ECS, lihat dokumentasi Xilinx.](https://xilinx.github.io/video-sdk/v1.5/container_setup.html#working-with-docker-vt1)

## Pertimbangan-pertimbangan
<a name="ecs-vt1-considerations"></a>

Sebelum Anda mulai menerapkan VT1 di Amazon ECS, pertimbangkan hal berikut:
+ Cluster Anda dapat berisi campuran VT1 dan VT1 non-instance.
+ Anda memerlukan aplikasi Linux yang menggunakan kartu transcoding media Xilinx U30 dengan codec AVC (H.264) dan HEVC (H.265) yang dipercepat.
**penting**  
Aplikasi yang menggunakan codec lain mungkin tidak memiliki kinerja yang lebih baik pada VT1 instance.
+ Hanya satu tugas transcoding yang dapat dijalankan pada kartu U30. Setiap kartu memiliki dua perangkat yang terkait dengannya. Anda dapat menjalankan tugas transcoding sebanyak mungkin karena ada kartu untuk setiap VT1 instance Anda.
+ Saat membuat layanan atau menjalankan tugas mandiri, Anda dapat menggunakan atribut tipe instance saat mengonfigurasi batasan penempatan tugas. Ini memastikan bahwa tugas diluncurkan pada instance container yang Anda tentukan. Melakukannya membantu memastikan bahwa Anda menggunakan sumber daya Anda secara efektif dan bahwa tugas Anda untuk beban kerja transcoding video ada di instans Anda VT1 . Untuk informasi selengkapnya, lihat [Cara Amazon ECS Menempatkan Tugas di Instans Kontainer](task-placement.md).

  Dalam contoh berikut, tugas dijalankan pada `vt1.3xlarge` instance di `default` cluster Anda.

  ```
  aws ecs run-task \
       --cluster default \
       --task-definition vt1-3xlarge-xffmpeg-processor \
       --placement-constraints type=memberOf,expression="attribute:ecs.instance-type == vt1.3xlarge"
  ```
+ Anda mengonfigurasi kontainer untuk menggunakan kartu U30 spesifik yang tersedia pada instance wadah host. Anda dapat melakukan ini dengan menggunakan `linuxParameters` parameter dan menentukan detail perangkat. Untuk informasi selengkapnya, lihat [Persyaratan ketentuan tugas](#ecs-vt1-requirements).

## Menggunakan VT1 AMI
<a name="ecs-vt1-ami"></a>

Anda memiliki dua opsi untuk menjalankan AMI di Amazon EC2 untuk instans penampung Amazon ECS. Opsi pertama adalah menggunakan AMI resmi Xilinx di. AWS Marketplace Opsi kedua adalah membangun AMI Anda sendiri dari repositori sampel.
+ [Xilinx menawarkan AMIs ](https://aws.amazon.com/marketplace/pp/prodview-phvk6d4mq3hh6) pada. AWS Marketplace
+ Amazon ECS menyediakan contoh repositori yang dapat Anda gunakan untuk membangun AMI untuk beban kerja transcoding video. AMI ini hadir dengan driver Xilinx U30. Anda dapat menemukan repositori yang berisi skrip Packer di. [GitHub](https://github.com/aws-samples/aws-vt-baseami-pipeline) Untuk informasi selengkapnya tentang Packer, lihat dokumentasi [Packer](https://developer.hashicorp.com/packer/docs).

## Persyaratan ketentuan tugas
<a name="ecs-vt1-requirements"></a>

Untuk menjalankan kontainer transcoding video di Amazon ECS, definisi tugas Anda harus berisi aplikasi transcoding video yang menggunakan codec H.264/AVC dan H.265/HEVC yang dipercepat. Anda dapat membuat gambar kontainer dengan mengikuti langkah-langkah di [ GitHubXilinx](https://xilinx.github.io/video-sdk/v1.5/container_setup.html#creating-a-docker-image-for-vt1-usage).

Definisi tugas harus spesifik untuk jenis instance. Jenis instans adalah 3xlarge, 6xlarge, dan 24xlarge. Anda harus mengonfigurasi kontainer untuk menggunakan perangkat Xilinx U30 tertentu yang tersedia pada instance wadah host. Anda dapat melakukannya dengan menggunakan `linuxParameters` parameter. Tabel berikut merinci kartu dan perangkat SoCs yang spesifik untuk setiap jenis instance.


| Tipe Instans | v CPUs | RAM (GiB) | Kartu akselerator U30 | Perangkat SoC yang dapat dialamatkan XCU30  | Jalur Perangkat | 
| --- | --- | --- | --- | --- | --- | 
| vt1.3xlarge | 12 | 24 | 1 | 2 | /dev/dri/renderD128,/dev/dri/renderD129 | 
| vt1.6xlarge | 24 | 48 | 2 | 4 | /dev/dri/renderD128,/dev/dri/renderD129,/dev/dri/renderD130,/dev/dri/renderD131 | 
| vt1.24xlarge | 96 | 182 | 8 | 16 | /dev/dri/renderD128,/dev/dri/renderD129,/dev/dri/renderD130,/dev/dri/renderD131,/dev/dri/renderD132,/dev/dri/renderD133,/dev/dri/renderD134,/dev/dri/renderD135,/dev/dri/renderD136,/dev/dri/renderD137,/dev/dri/renderD138,/dev/dri/renderD139,/dev/dri/renderD140,/dev/dri/renderD141,/dev/dri/renderD142,/dev/dri/renderD143 | 

**penting**  
Jika definisi tugas mencantumkan perangkat yang tidak dimiliki instans EC2, tugas gagal dijalankan. Ketika tugas gagal, pesan kesalahan berikut muncul di`stoppedReason`:`CannotStartContainerError: Error response from daemon: error gathering device information while adding custom device "/dev/dri/renderD130": no such file or directory`.

# Menentukan transcoding video dalam definisi tugas Amazon ECS
<a name="task-def-video-transcode"></a>

Dalam contoh berikut, sintaks yang digunakan untuk definisi tugas dari wadah Linux di Amazon EC2 disediakan. Definisi tugas ini adalah untuk gambar kontainer yang dibangun mengikuti prosedur yang disediakan dalam dokumentasi [Xilinx](https://xilinx.github.io/video-sdk/v1.5/container_setup.html#creating-a-docker-image-for-vt1-usage). Jika Anda menggunakan contoh ini, ganti `image` dengan gambar Anda sendiri, dan salin file video Anda ke instance di `/home/ec2-user` direktori.

------
#### [ vt1.3xlarge ]

1. Buat file teks yang diberi nama `vt1-3xlarge-ffmpeg-linux.json` dengan konten berikut.

   ```
   {
       "family": "vt1-3xlarge-xffmpeg-processor",
       "requiresCompatibilities": ["EC2"],
       "placementConstraints": [
           {
               "type": "memberOf",
               "expression": "attribute:ecs.os-type == linux"
           },
           {
               "type": "memberOf",
               "expression": "attribute:ecs.instance-type == vt1.3xlarge"
           }
       ],
       "containerDefinitions": [
           {
               "entryPoint": [
                   "/bin/bash",
                   "-c"
               ],
               "command": ["/video/ecs_ffmpeg_wrapper.sh"],
               "linuxParameters": {
                   "devices": [
                       {
                           "containerPath": "/dev/dri/renderD128",
                           "hostPath": "/dev/dri/renderD128",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD129",
                           "hostPath": "/dev/dri/renderD129",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       }
                   ]
               },
               "mountPoints": [
                   {
                       "containerPath": "/video",
                       "sourceVolume": "video_file"
                   }
               ],
               "cpu": 0,
               "memory": 12000,
               "image": "0123456789012.dkr.ecr.us-west-2.amazonaws.com/aws/xilinx-xffmpeg",
               "essential": true,
               "name": "xilinix-xffmpeg"
           }
       ],
       "volumes": [
           {
               "name": "video_file",
               "host": {"sourcePath": "/home/ec2-user"}
           }
       ]
   }
   ```

1. Mendaftarkan ketentuan tugas.

   ```
   aws ecs register-task-definition --family vt1-3xlarge-xffmpeg-processor --cli-input-json file://vt1-3xlarge-xffmpeg-linux.json --region us-east-1
   ```

------
#### [ vt1.6xlarge ]

1. Buat file teks yang diberi nama `vt1-6xlarge-ffmpeg-linux.json` dengan konten berikut.

   ```
   {
       "family": "vt1-6xlarge-xffmpeg-processor",
       "requiresCompatibilities": ["EC2"],
       "placementConstraints": [
           {
               "type": "memberOf",
               "expression": "attribute:ecs.os-type == linux"
           },
           {
               "type": "memberOf",
               "expression": "attribute:ecs.instance-type == vt1.6xlarge"
           }
       ],
       "containerDefinitions": [
           {
               "entryPoint": [
                   "/bin/bash",
                   "-c"
               ],
               "command": ["/video/ecs_ffmpeg_wrapper.sh"],
               "linuxParameters": {
                   "devices": [
                       {
                           "containerPath": "/dev/dri/renderD128",
                           "hostPath": "/dev/dri/renderD128",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD129",
                           "hostPath": "/dev/dri/renderD129",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD130",
                           "hostPath": "/dev/dri/renderD130",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD131",
                           "hostPath": "/dev/dri/renderD131",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       }
                   ]
               },
               "mountPoints": [
                   {
                       "containerPath": "/video",
                       "sourceVolume": "video_file"
                   }
               ],
               "cpu": 0,
               "memory": 12000,
               "image": "0123456789012.dkr.ecr.us-west-2.amazonaws.com/aws/xilinx-xffmpeg",
               "essential": true,
               "name": "xilinix-xffmpeg"
           }
       ],
       "volumes": [
           {
               "name": "video_file",
               "host": {"sourcePath": "/home/ec2-user"}
           }
       ]
   }
   ```

1. Mendaftarkan ketentuan tugas.

   ```
   aws ecs register-task-definition --family vt1-6xlarge-xffmpeg-processor --cli-input-json file://vt1-6xlarge-xffmpeg-linux.json --region us-east-1
   ```

------
#### [ vt1.24xlarge ]

1. Buat file teks yang diberi nama `vt1-24xlarge-ffmpeg-linux.json` dengan konten berikut.

   ```
   {
       "family": "vt1-24xlarge-xffmpeg-processor",
       "requiresCompatibilities": ["EC2"],
       "placementConstraints": [
           {
               "type": "memberOf",
               "expression": "attribute:ecs.os-type == linux"
           },
           {
               "type": "memberOf",
               "expression": "attribute:ecs.instance-type == vt1.24xlarge"
           }
       ],
       "containerDefinitions": [
           {
               "entryPoint": [
                   "/bin/bash",
                   "-c"
               ],
               "command": ["/video/ecs_ffmpeg_wrapper.sh"],
               "linuxParameters": {
                   "devices": [
                       {
                           "containerPath": "/dev/dri/renderD128",
                           "hostPath": "/dev/dri/renderD128",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD129",
                           "hostPath": "/dev/dri/renderD129",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD130",
                           "hostPath": "/dev/dri/renderD130",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD131",
                           "hostPath": "/dev/dri/renderD131",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD132",
                           "hostPath": "/dev/dri/renderD132",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD133",
                           "hostPath": "/dev/dri/renderD133",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD134",
                           "hostPath": "/dev/dri/renderD134",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD135",
                           "hostPath": "/dev/dri/renderD135",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD136",
                           "hostPath": "/dev/dri/renderD136",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD137",
                           "hostPath": "/dev/dri/renderD137",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD138",
                           "hostPath": "/dev/dri/renderD138",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD139",
                           "hostPath": "/dev/dri/renderD139",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD140",
                           "hostPath": "/dev/dri/renderD140",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD141",
                           "hostPath": "/dev/dri/renderD141",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD142",
                           "hostPath": "/dev/dri/renderD142",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD143",
                           "hostPath": "/dev/dri/renderD143",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       }
                   ]
               },
               "mountPoints": [
                   {
                       "containerPath": "/video",
                       "sourceVolume": "video_file"
                   }
               ],
               "cpu": 0,
               "memory": 12000,
               "image": "0123456789012.dkr.ecr.us-west-2.amazonaws.com/aws/xilinx-xffmpeg",
               "essential": true,
               "name": "xilinix-xffmpeg"
           }
       ],
       "volumes": [
           {
               "name": "video_file",
               "host": {"sourcePath": "/home/ec2-user"}
           }
       ]
   }
   ```

1. Mendaftarkan ketentuan tugas.

   ```
   aws ecs register-task-definition --family vt1-24xlarge-xffmpeg-processor --cli-input-json file://vt1-24xlarge-xffmpeg-linux.json --region us-east-1
   ```

------

# Definisi tugas Amazon ECS untuk beban kerja pembelajaran mesin AWS Neuron
<a name="ecs-inference"></a>

Anda dapat mendaftarkan [instans Amazon EC2 Trn1, Amazon](https://aws.amazon.com/ec2/instance-types/trn1/) EC2 [Trn2, Amazon EC2 Inf1,](https://aws.amazon.com/ec2/instance-types/trn2/) [dan [Amazon EC2](https://aws.amazon.com/ec2/instance-types/inf2/) Inf2](https://aws.amazon.com/ec2/instance-types/inf1/) ke cluster Anda untuk beban kerja pembelajaran mesin.

[Instans Amazon EC2 Trn1 dan Trn2 didukung oleh chip Trainium.AWS](https://aws.amazon.com/ai/machine-learning/trainium/) Instans ini memberikan pelatihan berkinerja tinggi dan biaya rendah untuk pembelajaran mesin di cloud. Anda dapat melatih model inferensi pembelajaran mesin menggunakan kerangka pembelajaran mesin dengan AWS Neuron pada instance Trn1 atau Trn2. Kemudian, Anda dapat menjalankan model pada instance Inf1, atau instance Inf2 untuk menggunakan akselerasi chip AWS Inferentia.

Instans Amazon EC2 Inf1 dan instans Inf2 didukung oleh chip [AWS Inferentia. Instans ini memberikan kinerja tinggi dan inferensi](https://aws.amazon.com/ai/machine-learning/inferentia/) biaya terendah di cloud.

Model pembelajaran mesin digunakan ke wadah menggunakan [AWS Neuron](https://aws.amazon.com/ai/machine-learning/neuron/), yang merupakan Kit Pengembang Perangkat Lunak (SDK) khusus. SDK terdiri dari compiler, runtime, dan alat profiling yang mengoptimalkan kinerja machine learning chip machine learning. AWS AWS Neuron mendukung kerangka kerja pembelajaran mesin populer seperti TensorFlow, PyTorch, dan MXNet Apache.

## Pertimbangan-pertimbangan
<a name="ecs-inference-considerations"></a>

Sebelum Anda mulai menerapkan Neuron di Amazon ECS, pertimbangkan hal berikut:
+ Cluster Anda dapat berisi campuran Trn1, Trn2, Inf1, Inf2 dan instance lainnya.
+ Anda memerlukan aplikasi Linux dalam wadah yang menggunakan kerangka pembelajaran mesin yang mendukung AWS Neuron.
**penting**  
Aplikasi yang menggunakan kerangka kerja lain mungkin tidak meningkatkan kinerja pada instance Trn1, Trn2, Inf1, dan Inf2.
+ [Hanya satu tugas inferensi atau pelatihan inferensi yang dapat dijalankan pada setiap chip [AWS Trainium](https://aws.amazon.com/ai/machine-learning/trainium/) atau Inferentia.AWS](https://aws.amazon.com/ai/machine-learning/inferentia/) Untuk Inf1, setiap chip memiliki 4 NeuronCores. Untuk Trn1, Trn2, dan Inf2 setiap chip memiliki 2. NeuronCores Anda dapat menjalankan tugas sebanyak mungkin karena ada chip untuk setiap instans Trn1, Trn2, Inf1, dan Inf2 Anda.
+ Saat membuat layanan atau menjalankan tugas mandiri, Anda dapat menggunakan atribut tipe instance saat mengonfigurasi batasan penempatan tugas. Ini memastikan bahwa tugas diluncurkan pada instance container yang Anda tentukan. Melakukannya dapat membantu Anda mengoptimalkan pemanfaatan sumber daya secara keseluruhan dan memastikan bahwa tugas untuk beban kerja inferensi ada di instans Trn1, Trn2, Inf1, dan Inf2 Anda. Untuk informasi selengkapnya, lihat [Cara Amazon ECS Menempatkan Tugas di Instans Kontainer](task-placement.md).

  Dalam contoh berikut, tugas dijalankan pada `Inf1.xlarge` instance di `default` cluster Anda.

  ```
  aws ecs run-task \
       --cluster default \
       --task-definition ecs-inference-task-def \
       --placement-constraints type=memberOf,expression="attribute:ecs.instance-type == Inf1.xlarge"
  ```
+ Persyaratan sumber daya neuron tidak dapat didefinisikan dalam definisi tugas. Sebagai gantinya, Anda mengonfigurasi wadah untuk menggunakan chip AWS Trainium atau AWS Inferentia tertentu yang tersedia di instance wadah host. Lakukan ini dengan menggunakan `linuxParameters` parameter dan menentukan detail perangkat. Untuk informasi selengkapnya, lihat [Persyaratan ketentuan tugas](#ecs-inference-requirements).

## Gunakan AMI Amazon Linux 2023 (Neuron) Amazon ECS yang dioptimalkan oleh Amazon
<a name="ecs-inference-ami2023"></a>

Amazon ECS menyediakan AMI Amazon ECS yang dioptimalkan yang didasarkan pada Amazon Linux 2023 untuk beban kerja AWS Trainium dan Inferentia. AWS Muncul dengan driver AWS Neuron dan runtime untuk Docker. AMI ini membuat menjalankan beban kerja inferensi pembelajaran mesin lebih mudah di Amazon ECS.

Sebaiknya gunakan AMI Amazon Linux 2023 (Neuron) Amazon ECS yang dioptimalkan Amazon ECS saat meluncurkan instans Amazon EC2 Trn1, Inf1, dan Inf2 Anda. 

Anda dapat mengambil AMI Amazon Linux 2023 (Neuron) Amazon ECS yang dioptimalkan saat AWS CLI ini menggunakan perintah berikut.

```
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2023/neuron/recommended
```

## Persyaratan ketentuan tugas
<a name="ecs-inference-requirements"></a>

Untuk menerapkan Neuron di Amazon ECS, definisi tugas Anda harus berisi definisi penampung untuk wadah bawaan yang menyajikan model inferensi. TensorFlow Ini disediakan oleh AWS Deep Learning Containers. Wadah ini berisi runtime AWS Neuron dan aplikasi TensorFlow Serving. Saat startup, penampung ini mengambil model Anda dari Amazon S3, meluncurkan Penyajian TensorFlow Neuron dengan model yang disimpan, dan menunggu permintaan prediksi. Dalam contoh berikut, gambar kontainer memiliki TensorFlow 1.15 dan Ubuntu 18.04. Daftar lengkap Deep Learning Containers pra-bangun yang dioptimalkan untuk Neuron GitHub dipertahankan. Untuk informasi lebih lanjut, lihat [Menggunakan TensorFlow Penyajian AWS Neuron](https://docs.aws.amazon.com/dlami/latest/devguide/tutorial-inferentia-tf-neuron-serving.html).

```
763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-inference-neuron:1.15.4-neuron-py37-ubuntu18.04
```

Atau, Anda dapat membangun sendiri citra kontainer Neuron sespan. Untuk informasi lebih lanjut, lihat [Tutorial: TensorFlow Penyajian Neuron](https://github.com/aws-neuron/aws-neuron-sdk/blob/master/frameworks/tensorflow/tensorflow-neuron/tutorials/tutorials-tensorflow-utilizing-neuron-capabilities.rst) di *Panduan AWS Deep Learning AMIs Pengembang*.

Definisi tugas harus spesifik untuk satu jenis instance. Anda harus mengonfigurasi wadah untuk menggunakan perangkat AWS Trainium atau AWS Inferentia tertentu yang tersedia di instance wadah host. Anda dapat melakukannya dengan menggunakan `linuxParameters` parameter. Untuk contoh definisi tugas, lihat[Menentukan pembelajaran mesin AWS Neuron dalam definisi tugas Amazon ECS](ecs-inference-task-def.md). Tabel berikut merinci chip yang spesifik untuk setiap jenis instance.


| Tipe Instans | v CPUs | RAM (GiB) | AWS Chip akselerator mL | Jalur Perangkat | 
| --- | --- | --- | --- | --- | 
| trn1.2xlarge | 8 | 32 | 1 | /dev/neuron0 | 
| trn1.32xlarge | 128 | 512 | 16 |  /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5, /dev/neuron6, /dev/neuron7, /dev/neuron8, /dev/neuron9, /dev/neuron10, /dev/neuron11, /dev/neuron12, /dev/neuron13, /dev/neuron14, /dev/neuron15  | 
| trn2.48xlarge | 192 | 1536 | 16 |  /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5, /dev/neuron6, /dev/neuron7, /dev/neuron8, /dev/neuron9, /dev/neuron10, /dev/neuron11, /dev/neuron12, /dev/neuron13, /dev/neuron14, /dev/neuron15  | 
| inf1.xlarge | 4 | 8 | 1 | /dev/neuron0 | 
| inf1.2xlarge | 8 | 16 | 1 | /dev/neuron0 | 
| inf1.6xlarge | 24 | 48 | 4 | /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3 | 
| inf1.24xlarge | 96 | 192 | 16 |  /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5, /dev/neuron6, /dev/neuron7, /dev/neuron8, /dev/neuron9, /dev/neuron10, /dev/neuron11, /dev/neuron12, /dev/neuron13, /dev/neuron14, /dev/neuron15  | 
| inf2.xlarge | 8 | 16 | 1 | /dev/neuron0 | 
| inf2.8xlarge | 32 | 64 | 1 | /dev/neuron0 | 
| inf2.24xlarge | 96 | 384 | 6 | /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5,  | 
| inf2.48xlarge | 192 | 768 | 12 | /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5, /dev/neuron6, /dev/neuron7, /dev/neuron8, /dev/neuron9, /dev/neuron10, /dev/neuron11 | 

# Menentukan pembelajaran mesin AWS Neuron dalam definisi tugas Amazon ECS
<a name="ecs-inference-task-def"></a>

Berikut ini adalah contoh definisi tugas Linux untuk`inf1.xlarge`, menampilkan sintaks yang akan digunakan.

```
{
    "family": "ecs-neuron",
    "requiresCompatibilities": ["EC2"],
    "placementConstraints": [
        {
            "type": "memberOf",
            "expression": "attribute:ecs.os-type == linux"
        },
        {
            "type": "memberOf",
            "expression": "attribute:ecs.instance-type == inf1.xlarge"
        }
    ],
    "executionRoleArn": "${YOUR_EXECUTION_ROLE}",
    "containerDefinitions": [
        {
            "entryPoint": [
                "/usr/local/bin/entrypoint.sh",
                "--port=8500",
                "--rest_api_port=9000",
                "--model_name=resnet50_neuron",
                "--model_base_path=s3://amzn-s3-demo-bucket/resnet50_neuron/"
            ],
            "portMappings": [
                {
                    "hostPort": 8500,
                    "protocol": "tcp",
                    "containerPort": 8500
                },
                {
                    "hostPort": 8501,
                    "protocol": "tcp",
                    "containerPort": 8501
                },
                {
                    "hostPort": 0,
                    "protocol": "tcp",
                    "containerPort": 80
                }
            ],
            "linuxParameters": {
                "devices": [
                    {
                        "containerPath": "/dev/neuron0",
                        "hostPath": "/dev/neuron0",
                        "permissions": [
                            "read",
                            "write"
                        ]
                    }
                ],
                "capabilities": {
                    "add": [
                        "IPC_LOCK"
                    ]
                }
            },
            "cpu": 0,
            "memoryReservation": 1000,
            "image": "763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-inference-neuron:1.15.4-neuron-py37-ubuntu18.04",
            "essential": true,
            "name": "resnet50"
        }
    ]
}
```

# Definisi tugas Amazon ECS untuk instans pembelajaran mendalam
<a name="ecs-dl1"></a>

Untuk menggunakan beban kerja pembelajaran mendalam di Amazon ECS, daftarkan instans [Amazon DL1 EC2](https://aws.amazon.com/ec2/instance-types/dl1/) ke cluster Anda. DL1 Instans Amazon EC2 didukung oleh akselerator Gaudi dari Habana Labs (perusahaan Intel). Gunakan Habana SynapSeai SDK untuk terhubung ke akselerator Habana Gaudi. SDK mendukung kerangka kerja pembelajaran mesin yang populer, TensorFlow dan. PyTorch

## Pertimbangan-pertimbangan
<a name="ecs-dl1-considerations"></a>

Sebelum Anda mulai menerapkan DL1 di Amazon ECS, pertimbangkan hal berikut:
+ Cluster Anda dapat berisi campuran DL1 dan DL1 non-instance.
+ Saat membuat layanan atau menjalankan tugas mandiri, Anda dapat menggunakan atribut tipe instance secara khusus saat mengonfigurasi batasan penempatan tugas untuk memastikan bahwa tugas Anda diluncurkan pada instance container yang Anda tentukan. Melakukannya memastikan bahwa sumber daya Anda digunakan secara efektif dan bahwa tugas Anda untuk beban kerja pembelajaran mendalam ada di DL1 instans Anda. Untuk informasi selengkapnya, lihat [Cara Amazon ECS Menempatkan Tugas di Instans Kontainer](task-placement.md).

  Contoh berikut menjalankan tugas pada instans `dl1.24xlarge` di klaster `default` Anda.

  ```
  aws ecs run-task \
       --cluster default \
       --task-definition ecs-dl1-task-def \
       --placement-constraints type=memberOf,expression="attribute:ecs.instance-type == dl1.24xlarge"
  ```

## Menggunakan DL1 AMI
<a name="ecs-dl1-ami"></a>

Anda memiliki tiga opsi untuk menjalankan AMI di DL1 instans Amazon EC2 untuk Amazon ECS:
+ AWS Marketplace AMIs yang disediakan oleh Habana [di sini](https://aws.amazon.com/marketplace/pp/prodview-h24gzbgqu75zq).
+ Habana Deep Learning AMIs yang disediakan oleh Amazon Web Services. Karena tidak termasuk, Anda perlu menginstal agen kontainer Amazon ECS secara terpisah.
+ Gunakan Packer untuk membuat AMI khusus yang disediakan oleh [GitHubrepo](https://github.com/aws-samples/aws-habana-baseami-pipeline). Untuk informasi selengkapnya, lihat [dokumentasi Packer](https://developer.hashicorp.com/packer/docs).

# Menentukan pembelajaran mendalam dalam definisi tugas Amazon ECS
<a name="ecs-dl1-requirements"></a>

Untuk menjalankan wadah pembelajaran mendalam yang dipercepat Habana Gaudi di Amazon ECS, definisi tugas Anda harus berisi definisi wadah untuk wadah pra-bangun yang menyajikan model pembelajaran mendalam untuk TensorFlow atau PyTorch menggunakan Habana SynapSeai yang disediakan oleh Deep Learning Containers. AWS 

Gambar kontainer berikut memiliki TensorFlow 2.7.0 dan Ubuntu 20.04. Daftar lengkap Deep Learning Containers pra-bangun yang dioptimalkan untuk akselerator Habana Gaudi dipertahankan. GitHub Untuk informasi lebih lanjut, lihat [Wadah Pelatihan Habana](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#habana-training-containers).

```
763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-training-habana:2.7.0-hpu-py38-synapseai1.2.0-ubuntu20.04
```

Berikut ini adalah contoh definisi tugas untuk wadah Linux di Amazon EC2, menampilkan sintaks yang akan digunakan. Contoh ini menggunakan gambar yang berisi Habana Labs System Management Interface Tool (HL-SMI) yang ditemukan di sini: `vault.habana.ai/gaudi-docker/1.1.0/ubuntu20.04/habanalabs/tensorflow-installer-tf-cpu-2.6.0:1.1.0-614`

```
{
    "family": "dl-test",
    "requiresCompatibilities": ["EC2"],
    "placementConstraints": [
        {
            "type": "memberOf",
            "expression": "attribute:ecs.os-type == linux"
        },
        {
            "type": "memberOf",
            "expression": "attribute:ecs.instance-type == dl1.24xlarge"
        }
    ],
    "networkMode": "host",
    "cpu": "10240",
    "memory": "1024",
    "containerDefinitions": [
        {
            "entryPoint": [
                "sh",
                "-c"
            ],
            "command": ["hl-smi"],
            "cpu": 8192,
            "environment": [
                {
                    "name": "HABANA_VISIBLE_DEVICES",
                    "value": "all"
                }
            ],
            "image": "vault.habana.ai/gaudi-docker/1.1.0/ubuntu20.04/habanalabs/tensorflow-installer-tf-cpu-2.6.0:1.1.0-614",
            "essential": true,
            "name": "tensorflow-installer-tf-hpu"
        }
    ]
}
```

# Definisi tugas Amazon ECS untuk beban kerja ARM 64-bit
<a name="ecs-arm64"></a>

Amazon ECS mendukung penggunaan aplikasi ARM 64-bit. Anda dapat menjalankan aplikasi Anda di platform yang didukung oleh [AWS Graviton](https://aws.amazon.com/ec2/graviton/) Processors. Ini cocok untuk berbagai macam beban kerja. Ini termasuk beban kerja seperti server aplikasi, layanan mikro, komputasi kinerja tinggi, inferensi pembelajaran mesin berbasis CPU, pengkodean video, otomatisasi desain elektronik, game, database sumber terbuka, dan cache dalam memori.

## Pertimbangan-pertimbangan
<a name="ecs-arm64-considerations"></a>

Sebelum Anda mulai menerapkan definisi tugas yang menggunakan arsitektur ARM 64-bit, pertimbangkan hal berikut:
+ Aplikasi dapat menggunakan Fargate atau. EC2s
+ Aplikasi hanya dapat menggunakan sistem operasi Linux.
+ Untuk tipe Fargate, aplikasi harus menggunakan versi platform Fargate atau yang lebih baru. `1.4.0`
+ Aplikasi dapat digunakan Fluent Bit atau CloudWatch untuk pemantauan.
+ Untuk Fargate, berikut ini Wilayah AWS tidak mendukung beban kerja ARM 64-bit:
  + AS Timur (Virginia N.), Zona `use1-az3` Ketersediaan
+  Untuk EC2, lihat berikut ini untuk memverifikasi bahwa Wilayah tempat Anda berada mendukung jenis instans yang ingin Anda gunakan:
  + [Instans Amazon EC2 M6g](https://aws.amazon.com/ec2/instance-types/m6)
  +  [Instans Amazon EC2 T4G](https://aws.amazon.com/ec2/instance-types/t4/)
  +  [Instans Amazon EC2 C6g](https://aws.amazon.com/ec2/instance-types/c6g/)
  +  [Instans Amazon EC2 R6gd](https://aws.amazon.com/ec2/instance-types/r6/)
  +  [Instans Amazon EC2 x2GD](https://aws.amazon.com/ec2/instance-types/x2/)

  Anda juga dapat menggunakan `describe-instance-type-offerings` perintah Amazon EC2 dengan filter untuk melihat penawaran instans untuk Wilayah Anda. 

  ```
  aws ec2 describe-instance-type-offerings --filters Name=instance-type,Values=instance-type --region region
  ```

  Contoh berikut memeriksa ketersediaan tipe instans M6 di Wilayah AS Timur (Virginia N.) (us-east-1).

  ```
  aws ec2 describe-instance-type-offerings --filters "Name=instance-type,Values=m6*" --region us-east-1
  ```

  Untuk informasi selengkapnya, lihat [describe-instance-type-offerings ](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-type-offerings.html)di Referensi *Baris Perintah Amazon EC2*.

# Menentukan arsitektur ARM dalam definisi tugas Amazon ECS
<a name="ecs-arm-specifying"></a>

Untuk menggunakan arsitektur ARM, `ARM64` tentukan parameter definisi `cpuArchitecture` tugas. 

Dalam contoh berikut, arsitektur ARM ditentukan dalam definisi tugas. Ini dalam format JSON.

```
{
    "runtimePlatform": {
        "operatingSystemFamily": "LINUX",
        "cpuArchitecture": "ARM64"
    },
...
}
```

Dalam contoh berikut, definisi tugas untuk arsitektur ARM menampilkan “hello world.”

```
{
 "family": "arm64-testapp",
 "networkMode": "awsvpc",
 "containerDefinitions": [
    {
        "name": "arm-container",
        "image": "public.ecr.aws/docker/library/busybox:latest",
        "cpu": 100,
        "memory": 100,
        "essential": true,
        "command": [ "echo hello world" ],
        "entryPoint": [ "sh", "-c" ]
    }
 ],
 "requiresCompatibilities": [ "EC2" ],
 "cpu": "256",
 "memory": "512",
 "runtimePlatform": {
        "operatingSystemFamily": "LINUX",
        "cpuArchitecture": "ARM64"
  },
 "executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole"
}
```

# Kirim log Amazon ECS ke CloudWatch
<a name="using_awslogs"></a>

Anda dapat mengonfigurasi kontainer dalam tugas Anda untuk mengirim informasi CloudWatch log ke Log. Jika Anda menggunakan Fargate untuk tugas Anda, Anda dapat melihat log dari wadah Anda. Jika Anda menggunakan EC2, Anda dapat melihat log yang berbeda dari kontainer Anda di satu lokasi yang nyaman, dan ini mencegah log kontainer Anda mengambil ruang disk pada instance kontainer Anda.

**catatan**  
Jenis informasi yang dicatat oleh kontainer dalam tugas Anda sebagian besar bergantung pada perintah `ENTRYPOINT` mereka. Secara default, log yang diambil menunjukkan output perintah yang biasanya Anda lihat di terminal interaktif jika Anda menjalankan kontainer secara lokal, yang merupakan aliran `STDOUT` dan `STDERR` I/O. Driver `awslogs` log hanya meneruskan log ini dari Docker ke CloudWatch Logs. Untuk informasi selengkapnya tentang cara log Docker diproses, termasuk cara alternatif untuk menangkap berbagai pengaliran atau data file, lihat [Melihat log untuk kontainer atau layanan](https://docs.docker.com/engine/logging/) dalam dokumentasi Docker.

Untuk mengirim log sistem dari instans penampung Amazon ECS Anda ke CloudWatch Log, lihat [Memantau Kuota File Log](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html) [dan CloudWatch Log di Panduan](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch_limits_cwl.html) Pengguna *Amazon CloudWatch Logs*.

## Fargate
<a name="enable_awslogs"></a>

Jika Anda menggunakan Fargate untuk tugas Anda, Anda perlu menambahkan `logConfiguration` parameter yang diperlukan ke definisi tugas Anda untuk mengaktifkan driver `awslogs` log. Untuk informasi selengkapnya, lihat [Contoh definisi tugas Amazon ECS: Rute log ke CloudWatch](specify-log-config.md).

Untuk wadah Windows di Fargate, lakukan salah satu opsi berikut ketika salah satu parameter definisi tugas Anda memiliki karakter khusus seperti,: `& \ < > ^ |`
+ Tambahkan escape (`\`) dengan tanda kutip ganda di sekitar seluruh string parameter

  Contoh

  ```
  "awslogs-multiline-pattern": "\"^[|DEBUG|INFO|WARNING|ERROR\"",
  ```
+ Tambahkan karakter escape (`^`) di sekitar setiap karakter khusus

  Contoh

  ```
  "awslogs-multiline-pattern": "^^[^|DEBUG^|INFO^|WARNING^|ERROR",
  ```

## EC2
<a name="ec2-considerations"></a>

Jika Anda menggunakan EC2 untuk tugas Anda dan ingin mengaktifkan driver `awslogs` log, instans penampung Amazon ECS Anda memerlukan setidaknya versi 1.9.0 dari agen penampung. Untuk informasi tentang cara memeriksa versi agen Anda dan memperbarui ke versi terbaru, lihat[Memperbarui agen kontainer Amazon ECS](ecs-agent-update.md).

**catatan**  
Anda harus menggunakan AMI Amazon ECS yang dioptimalkan atau AMI khusus dengan setidaknya `1.9.0-1` versi paket. `ecs-init` Saat menggunakan AMI kustom, Anda harus menentukan bahwa driver `awslogs` logging tersedia di instans Amazon EC2 saat Anda memulai agen dengan menggunakan variabel lingkungan berikut dalam file variabel **docker run** pernyataan atau lingkungan Anda.  

```
ECS_AVAILABLE_LOGGING_DRIVERS=["json-file","awslogs"]
```

Instans penampung Amazon ECS Anda juga memerlukan `logs:CreateLogStream` dan `logs:PutLogEvents` izin pada peran IAM yang dapat digunakan untuk meluncurkan instans penampung. Jika Anda membuat peran instans penampung Amazon ECS sebelum dukungan driver `awslogs` log diaktifkan di Amazon ECS, Anda mungkin perlu menambahkan izin ini. `ecsTaskExecutionRole`Ini digunakan saat ditugaskan ke tugas dan kemungkinan berisi izin yang benar. Untuk informasi tentang peran eksekusi tugas, lihat[Peran IAM pelaksanaan tugas Amazon ECS](task_execution_IAM_role.md). Jika instance container Anda menggunakan kebijakan IAM terkelola untuk instance container, instance container Anda kemungkinan memiliki izin yang benar. Untuk informasi tentang kebijakan IAM terkelola untuk instance container, lihat. [Peran IAM instans kontainer Amazon ECS](instance_IAM_role.md)

# Contoh definisi tugas Amazon ECS: Rute log ke CloudWatch
<a name="specify-log-config"></a>

Sebelum kontainer Anda dapat mengirim log ke CloudWatch, Anda harus menentukan driver `awslogs` log untuk kontainer dalam definisi tugas Anda. Untuk informasi selengkapnya tentang parameter log, lihat [Penyimpanan dan pencatatan log](task_definition_parameters.md#container_definition_storage)

Definisi tugas JSON yang berikut memiliki `logConfiguration` objek yang ditentukan untuk setiap kontainer. Salah satunya adalah untuk WordPress wadah yang mengirim log ke grup log yang dipanggil`awslogs-wordpress`. Yang lainnya adalah untuk wadah MySQL yang mengirimkan log ke grup log yang dipanggil. `awslogs-mysql` Kedua kontainer menggunakan prefiks pengaliran log `awslogs-example`.

```
{
    "containerDefinitions": [
        {
            "name": "wordpress",
            "links": [
                "mysql"
            ],
            "image": "public.ecr.aws/docker/library/wordpress:latest",
            "essential": true,
            "portMappings": [
                {
                    "containerPort": 80,
                    "hostPort": 80
                }
            ],
            "logConfiguration": {
                "logDriver": "awslogs",
                "options": {
                    "awslogs-create-group": "true",
                    "awslogs-group": "awslogs-wordpress",
                    "awslogs-region": "us-west-2",
                    "awslogs-stream-prefix": "awslogs-example"
                }
            },
            "memory": 500,
            "cpu": 10
        },
        {
            "environment": [
                {
                    "name": "MYSQL_ROOT_PASSWORD",
                    "value": "password"
                }
            ],
            "name": "mysql",
            "image": "public.ecr.aws/docker/library/mysql:latest",
            "cpu": 10,
            "memory": 500,
            "essential": true,
            "logConfiguration": {
                "logDriver": "awslogs",
                "options": {
                    "awslogs-create-group": "true",
                    "awslogs-group": "awslogs-mysql",
                    "awslogs-region": "us-west-2",
                    "awslogs-stream-prefix": "awslogs-example",
                    "mode": "non-blocking", 
                    "max-buffer-size": "25m" 
                }
            }
        }
    ],
    "family": "awslogs-example"
}
```

## Langkah selanjutnya
<a name="specify-log-config-next-steps"></a>
+ Anda dapat menetapkan kebijakan retensi untuk grup log secara opsional menggunakan CloudWatch AWS CLI atau API. Untuk informasi selengkapnya, lihat [put-retention-policy](https://docs.aws.amazon.com/cli/latest/reference/logs/put-retention-policy.html) dalam *Referensi AWS Command Line Interface *. 
+ Setelah Anda mendaftarkan definisi tugas dengan driver `awslogs` log dalam konfigurasi log definisi kontainer, Anda dapat menjalankan tugas atau membuat layanan dengan definisi tugas tersebut untuk mulai mengirim CloudWatch log ke Log. Untuk informasi selengkapnya, lihat [Menjalankan aplikasi sebagai tugas Amazon ECS](standalone-task-create.md) dan [Membuat penyebaran pembaruan bergulir Amazon ECS](create-service-console-v2.md).

# Kirim log Amazon ECS ke AWS layanan atau AWS Partner
<a name="using_firelens"></a>

Anda dapat menggunakan Amazon ECS FireLens untuk menggunakan parameter definisi tugas untuk merutekan log ke AWS layanan atau tujuan AWS Partner Network (APN) untuk penyimpanan log dan analitik. AWS Partner Network Ini adalah komunitas mitra global yang memanfaatkan program, keahlian, dan sumber daya untuk membangun, memasarkan, dan menjual penawaran pelanggan. Untuk informasi lebih lanjut lihat [AWS Partner](https://aws.amazon.com/partners/work-with-partners/). FireLensbekerja dengan [Fluentd](https://www.fluentd.org/) dan[Fluent Bit](https://fluentbit.io/). Kami menyediakan AWS untuk Fluent Bit gambar atau Anda dapat menggunakan gambar Anda sendiri Fluentd atau Fluent Bit gambar.

Secara default, Amazon ECS mengonfigurasi dependensi penampung sehingga kontainer Firelens dimulai sebelum penampung apa pun yang menggunakannya. Wadah Firelens juga berhenti setelah semua wadah yang menggunakannya berhenti.

Untuk menggunakan fitur ini, Anda harus membuat peran IAM untuk tugas Anda yang memberikan izin yang diperlukan untuk menggunakan AWS layanan apa pun yang diperlukan tugas. Misalnya, jika kontainer merutekan log ke Firehose, tugas tersebut memerlukan izin untuk memanggil `firehose:PutRecordBatch` API. Untuk informasi selengkapnya, silakan lihat [Menambahkan dan Menghapus Izin Identitas IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) dalam *Panduan Pengguna IAM*.

Tugas Anda mungkin juga memerlukan peran eksekusi tugas Amazon ECS dalam kondisi berikut. Untuk informasi selengkapnya, lihat [Peran IAM pelaksanaan tugas Amazon ECS](task_execution_IAM_role.md).
+ Jika tugas Anda di-host di Fargate dan Anda menarik gambar kontainer dari Amazon ECR atau mereferensikan data sensitif dari AWS Secrets Manager konfigurasi log Anda, maka Anda harus menyertakan peran IAM eksekusi tugas.
+ Saat Anda menggunakan file konfigurasi khusus yang di-host di Amazon S3, peran IAM eksekusi tugas Anda harus menyertakan izin. `s3:GetObject`

Pertimbangkan hal berikut saat menggunakan FireLens untuk Amazon ECS:
+ Kami menyarankan Anda `my_service_` menambahkan nama wadah log sehingga Anda dapat dengan mudah membedakan nama kontainer di konsol.
+ Amazon ECS menambahkan dependensi pesanan kontainer awal antara container aplikasi dan FireLens container secara default. Saat Anda menentukan urutan kontainer antara wadah aplikasi dan FireLens kontainer, maka urutan kontainer awal default diganti.
+ FireLensuntuk Amazon ECS didukung untuk tugas-tugas yang di-host AWS Fargate di Linux dan Amazon EC2 di Linux. Kontainer Windows tidak mendukungFireLens.

  Untuk informasi tentang cara mengonfigurasi pencatatan terpusat untuk kontainer Windows, lihat [Pencatatan terpusat untuk kontainer Windows di Amazon ECS menggunakan](https://aws.amazon.com/blogs/containers/centralized-logging-for-windows-containers-on-amazon-ecs-using-fluent-bit/) Bit Lancar.
+ Anda dapat menggunakan CloudFormation templat FireLens untuk mengonfigurasi Amazon ECS. Untuk informasi selengkapnya, lihat [AWS::ECS::TaskDefinition FirelensConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-firelensconfiguration.html)di *Panduan AWS CloudFormation Pengguna*
+ FireLensmendengarkan di port`24224`, jadi untuk memastikan bahwa router FireLens log tidak dapat dijangkau di luar tugas, Anda tidak boleh mengizinkan lalu lintas masuk pada port `24224` dalam grup keamanan yang digunakan tugas Anda. Untuk tugas yang menggunakan mode `awsvpc` jaringan, ini adalah grup keamanan yang terkait dengan tugas tersebut. Untuk tugas yang menggunakan mode `host` jaringan, ini adalah grup keamanan yang terkait dengan instans Amazon EC2 yang menghosting tugas tersebut. Untuk tugas yang menggunakan mode `bridge` jaringan, jangan membuat pemetaan port apa pun yang menggunakan port. `24224`
+ Untuk tugas yang menggunakan mode `bridge` jaringan, wadah dengan FireLens konfigurasi harus dimulai sebelum wadah aplikasi apa pun yang mengandalkannya dimulai. Untuk mengendalikan urutan mulai kontainer Anda, gunakan syarat dependensi dalam ketentuan tugas Anda. Untuk informasi selengkapnya, lihat [Dependensi kontainer](task_definition_parameters.md#container_definition_dependson).
**catatan**  
Jika Anda menggunakan parameter kondisi ketergantungan dalam definisi kontainer dengan FireLens konfigurasi, pastikan bahwa setiap kontainer memiliki persyaratan `START` atau `HEALTHY` kondisi.
+ Secara default, FireLens tambahkan nama definisi klaster dan tugas serta Amazon Resource Name (ARN) klaster sebagai kunci metadata ke log container Anda. stdout/stderr Berikut ini adalah contoh format metadata.

  ```
  "ecs_cluster": "cluster-name",
  "ecs_task_arn": "arn:aws:ecs:region:111122223333:task/cluster-name/f2ad7dba413f45ddb4EXAMPLE",
  "ecs_task_definition": "task-def-name:revision",
  ```

  Jika Anda tidak ingin metadata di log Anda, atur `enable-ecs-log-metadata` ke `false` `firelensConfiguration` bagian definisi tugas.

  ```
  "firelensConfiguration":{
     "type":"fluentbit",
     "options":{
        "enable-ecs-log-metadata":"false",
        "config-file-type":"file",
        "config-file-value":"/extra.conf"
  }
  ```

Anda dapat mengonfigurasi FireLens wadah untuk dijalankan sebagai pengguna non-root. Pertimbangkan hal berikut:
+  Untuk mengonfigurasi FireLens wadah agar dijalankan sebagai pengguna non-root, Anda harus menentukan pengguna dalam salah satu format berikut:
  + `uid`
  + `uid:gid`
  + `uid:group`

  Untuk informasi selengkapnya tentang menentukan pengguna dalam definisi container, lihat [ContainerDefinition](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html)di *Referensi API Amazon Elastic Container Service*.

  FireLensWadah menerima log aplikasi melalui UNIX soket. Agen Amazon ECS menggunakan `uid` untuk menetapkan kepemilikan direktori soket ke wadah. FireLens
+ Mengonfigurasi FireLens penampung untuk dijalankan sebagai pengguna non-root didukung pada versi Amazon ECS Agent dan yang lebih baru, `1.96.0` serta versi AMI Amazon ECS yang dioptimalkan dan yang lebih baru. `v20250716`
+ Ketika Anda menentukan pengguna untuk FireLens wadah, `uid` harus unik dan tidak digunakan untuk proses lain milik kontainer lain dalam tugas atau instance kontainer.

Untuk informasi tentang cara menggunakan beberapa file konfigurasi dengan Amazon ECS, termasuk file yang Anda host atau file di Amazon S3, [lihat Proses init untuk Bit Lancar di ECS](https://github.com/aws/aws-for-fluent-bit/tree/mainline/use_cases/init-process-for-fluent-bit), dukungan multi-konfigurasi.

Untuk informasi tentang konfigurasi contoh, lihat[Contoh definisi tugas Amazon ECS: Rute log ke FireLens](firelens-taskdef.md).

Untuk informasi selengkapnya tentang mengonfigurasi log untuk throughput tinggi, lihat. [Mengkonfigurasi log Amazon ECS untuk throughput tinggi](firelens-docker-buffer-limit.md)

# Mengkonfigurasi log Amazon ECS untuk throughput tinggi
<a name="firelens-docker-buffer-limit"></a>

Untuk skenario throughput log tinggi, sebaiknya gunakan driver `awsfirelens` log dengan FireLens danFluent Bit. Fluent Bitadalah prosesor log ringan yang efisien dengan sumber daya dan dapat menangani jutaan catatan log. Namun, mencapai kinerja optimal pada skala memerlukan penyetelan konfigurasinya.

Bagian ini mencakup teknik Fluent Bit pengoptimalan lanjutan untuk menangani throughput log tinggi sambil menjaga stabilitas sistem dan memastikan tidak ada kehilangan data.

Untuk informasi tentang cara menggunakan file konfigurasi kustom dengan FireLens, lihat[Gunakan file konfigurasi khusus](firelens-taskdef.md#firelens-taskdef-customconfig). Untuk contoh tambahan, lihat [ FireLens contoh Amazon ECS](https://github.com/aws-samples/amazon-ecs-firelens-examples) di GitHub.

**catatan**  
Beberapa opsi konfigurasi di bagian ini, seperti `workers` dan`threaded`, memerlukan AWS Fluent Bit versi 3 atau yang lebih baru. Untuk informasi tentang versi yang tersedia, lihat [AWS untuk rilis Fluent Bit](https://github.com/aws/aws-for-fluent-bit/releases).

## Memahami potongan
<a name="firelens-understanding-chunks"></a>

Fluent BitMemproses data dalam satuan yang disebut *chunks*. Ketika plugin INPUT menerima data, mesin membuat potongan yang disimpan dalam memori atau pada sistem file sebelum dikirim ke tujuan OUTPUT.

Perilaku buffering tergantung pada `storage.type` pengaturan di bagian INPUT Anda. Secara default, Fluent Bit menggunakan buffering memori. Untuk skenario throughput atau produksi tinggi, buffering sistem file memberikan ketahanan yang lebih baik.

Untuk informasi lebih lanjut, lihat [Potongan](https://docs.fluentbit.io/manual/administration/buffering-and-storage#chunks) dalam Fluent Bit dokumentasi dan [Apa itu Potongan?](https://github.com/aws-samples/amazon-ecs-firelens-examples/tree/mainline/examples/fluent-bit/oomkill-prevention#what-is-a-chunk) dalam repositori AWS untuk Fluent Bit contoh.

## Buffering memori (default)
<a name="firelens-memory-buffering"></a>

Secara default, Fluent Bit menggunakan memori buffering (`storage.type memory`). Anda dapat membatasi penggunaan memori per plugin INPUT menggunakan `Mem_Buf_Limit` parameter.

Contoh berikut menunjukkan konfigurasi masukan buffered memori:

```
[INPUT]
    Name          tcp
    Tag           ApplicationLogs
    Port          5170
    storage.type  memory
    Mem_Buf_Limit 5MB
```

**penting**  
Ketika `Mem_Buf_Limit` terlampaui untuk sebuah plugin, Fluent Bit jeda input dan catatan baru hilang. Ini dapat menyebabkan tekanan balik dan memperlambat aplikasi Anda. Peringatan berikut muncul di Fluent Bit log:  

```
[input] tcp.1 paused (mem buf overlimit)
```

Buffering memori cocok untuk kasus penggunaan sederhana dengan throughput log rendah hingga sedang. Untuk skenario throughput atau produksi tinggi di mana kehilangan data menjadi perhatian, gunakan buffering sistem file sebagai gantinya.

Untuk informasi selengkapnya, lihat [Buffering dan Memory](https://docs.fluentbit.io/manual/administration/buffering-and-storage#buffering-and-memory) dalam Fluent Bit dokumentasi dan [Memory Buffering Only](https://github.com/aws-samples/amazon-ecs-firelens-examples/tree/mainline/examples/fluent-bit/oomkill-prevention#case-1-memory-buffering-only-default-or-storagetype-memory) di repositori AWS for Fluent Bit examples.

## Penyangga sistem file
<a name="firelens-filesystem-buffering"></a>

Untuk skenario throughput tinggi, sebaiknya gunakan buffering sistem file. Untuk informasi selengkapnya tentang cara Fluent Bit mengelola buffering dan penyimpanan, lihat [Buffering dan Storage](https://docs.fluentbit.io/manual/administration/buffering-and-storage) dalam dokumentasi. Fluent Bit

Filesystem buffering memberikan keuntungan sebagai berikut:
+ **Kapasitas buffer yang lebih besar** — Ruang disk biasanya lebih melimpah daripada memori.
+ **Persistensi** — Data buffered bertahan Fluent Bit restart.
+ **Degradasi anggun** — Selama kegagalan output, data terakumulasi pada disk daripada menyebabkan kelelahan memori.

Untuk mengaktifkan buffering sistem file, sediakan file konfigurasi khusus. Fluent Bit Contoh berikut menunjukkan konfigurasi yang disarankan:

```
[SERVICE]
    # Flush logs every 1 second
    Flush 1
    # Wait 120 seconds during shutdown to flush remaining logs
    Grace 120
    # Directory for filesystem buffering
    storage.path             /var/log/flb-storage/
    # Limit chunks stored 'up' in memory (reduce for memory-constrained environments)
    storage.max_chunks_up    32
    # Flush backlog chunks to destinations during shutdown (prevents log loss)
    storage.backlog.flush_on_shutdown On

[INPUT]
    Name forward
    unix_path /var/run/fluent.sock
    # Run input in separate thread to prevent blocking
    threaded true
    # Enable filesystem buffering for persistence
    storage.type filesystem

[OUTPUT]
    Name cloudwatch_logs
    Match *
    region us-west-2
    log_group_name /aws/ecs/my-app
    log_stream_name $(ecs_task_id)
    # Use multiple workers for parallel processing
    workers 2
    # Retry failed flushes up to 15 times
    retry_limit 15
    # Maximum disk space for buffered data for this output
    storage.total_limit_size 10G
```

Parameter konfigurasi kunci:

`storage.path`  
Direktori tempat Fluent Bit menyimpan potongan buffer pada disk.

`storage.backlog.flush_on_shutdown`  
Saat diaktifkan, Fluent Bit mencoba untuk menghapus semua potongan sistem file backlog ke tujuan mereka selama shutdown. Ini membantu memastikan pengiriman data sebelum Fluent Bit berhenti, tetapi dapat meningkatkan waktu shutdown.

`storage.max_chunks_up`  
Jumlah potongan yang tersisa dalam memori. Defaultnya adalah 128 chunks, yang dapat mengkonsumsi 500 MB\$1memori karena setiap potongan dapat menggunakan hingga 4-5 MB. Dalam lingkungan yang dibatasi memori, turunkan nilai ini. Misalnya, jika Anda memiliki 50 MB yang tersedia untuk buffering, atur ini menjadi 8-10 potongan.

`storage.type filesystem`  
Mengaktifkan penyimpanan sistem file untuk plugin input. Terlepas dari namanya, Fluent Bit digunakan `mmap` untuk memetakan potongan ke memori dan disk, memberikan ketekunan tanpa mengorbankan kinerja.

`storage.total_limit_size`  
Ruang disk maksimum untuk data buffer untuk plugin OUTPUT tertentu. Ketika batas ini tercapai, catatan tertua untuk output tersebut dijatuhkan. Untuk informasi lebih lanjut tentang ukuran, lihat[Memahami `storage.total_limit_size`](#firelens-storage-sizing).

`threaded true`  
Menjalankan input di utasnya sendiri, terpisah dari Fluent Bit loop acara utama. Ini mencegah input lambat memblokir seluruh pipa.

Untuk informasi selengkapnya, lihat [Filesystem Buffering](https://docs.fluentbit.io/manual/administration/buffering-and-storage#filesystem-buffering) dalam Fluent Bit dokumentasi dan [Filesystem dan Memory Buffering di repositori](https://github.com/aws-samples/amazon-ecs-firelens-examples/tree/mainline/examples/fluent-bit/oomkill-prevention#case-2-filesystem-and-memory-buffering-storagetype-filesystem) for examples. AWS Fluent Bit

## Memahami `storage.total_limit_size`
<a name="firelens-storage-sizing"></a>

`storage.total_limit_size`Parameter pada setiap plugin OUTPUT mengontrol ruang disk maksimum untuk data buffer untuk output tersebut. Ketika batas ini tercapai, catatan tertua untuk output tersebut dijatuhkan untuk memberi ruang bagi data baru. Ketika ruang disk benar-benar habis, Fluent Bit gagal untuk mengantri catatan dan mereka hilang.

Gunakan rumus berikut untuk menghitung yang sesuai `storage.total_limit_size` berdasarkan tingkat log Anda dan jendela pemulihan yang diinginkan:

```
If log rate is in KB/s, convert to MB/s first:
log_rate (MB/s) = log_rate (KB/s) / 1000

storage.total_limit_size (GB) = log_rate (MB/s) × duration (hours) × 3600 (seconds/hour) / 1000 (MB to GB)
```

Tabel berikut menunjukkan contoh perhitungan untuk tingkat log umum dan jendela pemulihan:


| Tingkat Log | 1 jam | 6 jam | 12 jam | 24 jam | 
| --- | --- | --- | --- | --- | 
| 0, 25 MB/s | 0,9 GB | 5,4 GB | 10,8 GB | 21,6 GB | 
| 0, 5 MB/s | 1,8 GB | 10,8 GB | 21,6 GB | 43,2 GB | 
| 1 MB/s | 3,6 GB | 21,6 GB | 43,2 GB | 86,4 GB | 
| 5 MB/s | 18 GB | 108 GB | 216 GB | 432 GB | 
| 10 MB/s | 36 GB | 216 GB | 432 GB | 864 GB | 

Untuk mengamati throughput puncak dan memilih ukuran buffer yang sesuai, gunakan sampel [ FireLens ukuran-throughput](https://github.com/aws-samples/amazon-ecs-firelens-examples/tree/mainline/examples/measure-throughput).

Gunakan rumus, contoh perhitungan, dan benchmarking untuk memilih yang cocok `storage.total_limit_size` yang menyediakan landasan pacu untuk pemulihan upaya terbaik selama pemadaman.

## Persyaratan penyimpanan tugas Amazon ECS
<a name="firelens-storage-task-requirements"></a>

Jumlahkan semua `storage.total_limit_size` nilai di seluruh bagian OUTPUT dan tambahkan buffer untuk overhead. Total ini menentukan ruang penyimpanan yang dibutuhkan dalam definisi tugas Amazon ECS Anda. Misalnya, 3 output × 10 GB masing-masing = 30 GB\$1buffer (5—10 GB) = 35—40 GB total yang diperlukan. Jika total melebihi penyimpanan yang tersedia, Fluent Bit mungkin gagal untuk mengantri catatan dan mereka akan hilang.

Opsi penyimpanan berikut tersedia:

Bind mount (penyimpanan sementara)  
+ Untuk AWS Fargate, defaultnya adalah penyimpanan sementara 20 GB (maks 200 GB). Konfigurasikan penggunaan `ephemeralStorage` dalam definisi tugas. Untuk informasi selengkapnya, lihat [EphemeralStorage](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-ephemeralstorage.html) di *AWS CloudFormation Panduan Pengguna*.
+ Untuk EC2, defaultnya adalah 30 GB saat menggunakan AMI Amazon ECS yang dioptimalkan (dibagi antara OS dan Docker). Tingkatkan dengan mengubah ukuran volume root.

Volume Amazon EBS  
+ Menyediakan penyimpanan blok yang sangat tersedia, tahan lama, dan berkinerja tinggi.
+ Memerlukan konfigurasi volume dan `mountPoint` dalam definisi tugas menunjuk ke `storage.path` (default:`/var/log/flb-storage/`).
+ Untuk informasi selengkapnya, lihat [Tunda konfigurasi volume untuk waktu peluncuran dalam definisi tugas Amazon ECS](specify-ebs-config.md).

Volume Amazon EFS  
+ Menyediakan penyimpanan file yang sederhana dan dapat diskalakan.
+ Memerlukan konfigurasi volume dan `mountPoint` dalam definisi tugas menunjuk ke `storage.path` (default:`/var/log/flb-storage/`).
+ Untuk informasi selengkapnya, lihat [Menentukan sistem file Amazon EFS dalam definisi tugas Amazon ECS](specify-efs-config.md).

Untuk informasi selengkapnya tentang volume data, lihat[Opsi penyimpanan untuk tugas Amazon ECS](using_data_volumes.md).

## Optimalkan konfigurasi keluaran
<a name="firelens-output-optimization"></a>

Masalah jaringan, pemadaman layanan, dan pembatasan tujuan dapat mencegah log dikirimkan. Konfigurasi output yang tepat memastikan ketahanan tanpa kehilangan data.

Ketika output flush gagal, Fluent Bit dapat mencoba kembali operasi. Parameter berikut mengontrol perilaku coba lagi:

`retry_limit`  
Jumlah maksimum percobaan ulang setelah upaya awal sebelum menjatuhkan catatan. Default-nya adalah 1. Misalnya, `retry_limit 3` berarti 4 total upaya (1 awal \$13 percobaan ulang). Untuk lingkungan produksi, kami merekomendasikan 15 atau lebih tinggi, yang mencakup beberapa menit pemadaman dengan backoff eksponensial.  
Setel ke `no_limits` atau `False` untuk percobaan ulang tak terbatas:  
+ Dengan buffering memori, percobaan ulang tak terbatas menyebabkan plugin input berhenti saat batas memori tercapai.
+ Dengan buffering sistem file, catatan tertua dijatuhkan saat tercapai. `storage.total_limit_size`
Setelah menghabiskan semua upaya coba lagi (1 percobaan ulang awal \$1`retry_limit`), catatan dijatuhkan. AWS plugin dengan `auto_retry_requests true` (default) menyediakan lapisan coba lagi tambahan sebelum mekanisme coba Fluent Bit lagi. Untuk informasi selengkapnya, lihat [Mengonfigurasi percobaan ulang](https://docs.fluentbit.io/manual/administration/scheduling-and-retries#configure-retries) dalam Fluent Bit dokumentasi.  
Misalnya, `retry_limit 3` dengan pengaturan default (`scheduler.base 5`,`scheduler.cap 2000`,`net.connect_timeout 10s`) menyediakan sekitar 70 detik waktu tunggu penjadwal (10-an\$120-an\$140-an), 40 detik batas waktu koneksi jaringan (4 upaya × 10 detik), ditambah percobaan ulang AWS plugin - total sekitar 2-10 menit tergantung pada kondisi jaringan dan batas waktu OS TCP.

`scheduler.base`  
Detik dasar antara percobaan ulang (default: 5). Kami merekomendasikan 10 detik.

`scheduler.cap`  
Detik maksimum antara percobaan ulang (default: 2000). Kami merekomendasikan 60 detik.

Waktu tunggu antara percobaan ulang menggunakan backoff eksponensial dengan jitter:

```
wait_time = random(base, min(base × 2^retry_number, cap))
```

Misalnya, dengan `scheduler.base 10` dan`scheduler.cap 60`:
+ Coba lagi pertama: tunggu acak antara 10-20 detik
+ Coba lagi kedua: tunggu acak antara 10-40 detik
+ Coba lagi ketiga dan kemudian: tunggu acak antara 10-60 detik (dibatasi)

Untuk informasi selengkapnya, lihat [Mengkonfigurasi waktu tunggu untuk mencoba lagi](https://docs.fluentbit.io/manual/administration/scheduling-and-retries#configure-wait-time-for-retry) dan [Jaringan](https://docs.fluentbit.io/manual/administration/networking) dalam Fluent Bit dokumentasi.

`workers`  
Jumlah thread untuk pemrosesan output paralel. Beberapa pekerja memungkinkan pembilasan bersamaan, meningkatkan throughput saat memproses banyak potongan.

`auto_retry_requests`  
Pengaturan AWS khusus plugin yang menyediakan lapisan coba lagi tambahan sebelum mekanisme coba ulang bawaanFluent Bit. Nilai default-nya `true`. Saat diaktifkan, plugin AWS keluaran mencoba ulang permintaan yang gagal secara internal sebelum permintaan dianggap sebagai flush yang gagal dan tunduk pada konfigurasi. `retry_limit`

`Grace`Parameter di `[SERVICE]` bagian mengatur waktu Fluent Bit menunggu selama shutdown untuk menyiram data buffer. `Grace`Periode harus dikoordinasikan dengan wadah. `stopTimeout` Pastikan bahwa `stopTimeout` melebihi `Grace` periode untuk memungkinkan Fluent Bit untuk menyelesaikan pembilasan sebelum menerima. `SIGKILL` Misalnya, jika `Grace` 120 detik, atur `stopTimeout` ke 150 detik.

Contoh berikut menunjukkan Fluent Bit konfigurasi lengkap dengan semua pengaturan yang direkomendasikan untuk skenario throughput tinggi:

```
[SERVICE]
    # Flush logs every 1 second
    Flush 1
    # Wait 120 seconds during shutdown to flush remaining logs
    Grace 120
    # Directory for filesystem buffering
    storage.path             /var/log/flb-storage/
    # Limit chunks stored 'up' in memory (reduce for memory-constrained environments)
    storage.max_chunks_up    32
    # Flush backlog chunks to destinations during shutdown (prevents log loss)
    storage.backlog.flush_on_shutdown On
    # Minimum seconds between retries
    scheduler.base           10
    # Maximum seconds between retries (exponential backoff cap)
    scheduler.cap            60

[INPUT]
    Name forward
    unix_path /var/run/fluent.sock
    # Run input in separate thread to prevent blocking
    threaded true
    # Enable filesystem buffering for persistence
    storage.type filesystem

[OUTPUT]
    Name cloudwatch_logs
    Match *
    region us-west-2
    log_group_name /aws/ecs/my-app
    log_stream_name $(ecs_task_id)
    # Use multiple workers for parallel processing
    workers 2
    # Retry failed flushes up to 15 times
    retry_limit 15
    # Maximum disk space for buffered data for this output
    storage.total_limit_size 10G
```

## Memahami skenario kehilangan data
<a name="firelens-record-loss-scenarios"></a>

Catatan dapat hilang selama pemadaman yang diperpanjang atau masalah dengan tujuan output. Rekomendasi konfigurasi dalam panduan ini adalah pendekatan upaya terbaik untuk meminimalkan kehilangan data, tetapi tidak dapat menjamin nol kerugian selama kegagalan yang berkepanjangan. Memahami skenario ini membantu Anda mengonfigurasi Fluent Bit untuk memaksimalkan ketahanan.

Rekaman dapat hilang dengan dua cara: catatan tertua dijatuhkan saat penyimpanan terisi, atau catatan terbaru ditolak ketika sistem tidak dapat menerima lebih banyak data.

### Rekor tertua dijatuhkan
<a name="firelens-record-loss-oldest-dropped"></a>

Catatan buffer tertua dijatuhkan ketika upaya coba lagi habis atau saat `storage.total_limit_size` diisi dan perlu memberi ruang untuk data baru.

Batas coba lagi terlampaui  
Terjadi setelah AWS plugin mencoba ulang (jika`auto_retry_requests true`) ditambah 1 Fluent Bit upaya awal ditambah percobaan `retry_limit` ulang. Untuk mengurangi, atur `retry_limit no_limits` per plugin OUTPUT untuk percobaan ulang tak terbatas:  

```
[OUTPUT]
    Name                        cloudwatch_logs
    Match                       ApplicationLogs
    retry_limit                 no_limits
    auto_retry_requests         true
```
Percobaan ulang tak terbatas mencegah jatuhnya catatan karena kelelahan coba lagi, tetapi dapat menyebabkan pengisian. `storage.total_limit_size`

Batas penyimpanan tercapai (buffering sistem file)  
Terjadi ketika tujuan output tidak tersedia lebih lama dari buffer yang `storage.total_limit_size` dapat dikonfigurasi. Misalnya, buffer 10 GB pada 1 MB/s log rate menyediakan sekitar 2,7 jam buffering. Untuk mengurangi, tingkatkan `storage.total_limit_size` per plugin OUTPUT dan sediakan penyimpanan tugas Amazon ECS yang memadai:  

```
[OUTPUT]
    Name                        cloudwatch_logs
    Match                       ApplicationLogs
    storage.total_limit_size    10G
```

### Catatan terbaru ditolak
<a name="firelens-record-loss-newest-rejected"></a>

Catatan terbaru dijatuhkan saat ruang disk habis atau saat input dijeda karena. `Mem_Buf_Limit`

Ruang disk habis (buffering sistem file)  
Terjadi ketika ruang disk benar-benar habis. Fluent Bitgagal mengantri catatan baru dan hilang. Untuk mengurangi, jumlahkan semua `storage.total_limit_size` nilai dan sediakan penyimpanan tugas Amazon ECS yang memadai. Untuk informasi selengkapnya, lihat [Persyaratan penyimpanan tugas Amazon ECS](#firelens-storage-task-requirements).

Batas memori tercapai (buffering memori)  
Terjadi ketika tujuan output tidak tersedia dan buffer memori terisi. Plugin input yang dijeda berhenti menerima catatan baru. Untuk mengurangi, gunakan `storage.type filesystem` untuk ketahanan yang lebih baik, atau tingkatkan. `Mem_Buf_Limit`

### Praktik terbaik untuk meminimalkan kehilangan data
<a name="firelens-record-loss-best-practices"></a>

Pertimbangkan praktik terbaik berikut untuk meminimalkan kehilangan data:
+ **Gunakan buffering sistem file - Tetapkan `storage.type filesystem` untuk ketahanan yang lebih baik selama pemadaman**.
+ **Ukuran penyimpanan dengan tepat** — Hitung `storage.total_limit_size` berdasarkan tingkat log dan jendela pemulihan yang diinginkan.
+ **Menyediakan disk yang memadai** — Pastikan tugas Amazon ECS memiliki penyimpanan sementara yang cukup, Amazon EBS, atau Amazon EFS.
+ **Konfigurasikan perilaku coba lagi** - Seimbangkan antara `retry_limit` (menjatuhkan catatan setelah percobaan ulang yang melelahkan) dan `no_limits` (mencoba ulang tanpa batas tetapi dapat mengisi penyimpanan).

## Gunakan pencatatan multi-tujuan untuk keandalan
<a name="firelens-multi-destination"></a>

Mengirim log ke beberapa tujuan menghilangkan satu titik kegagalan. Misalnya, jika CloudWatch Log mengalami pemadaman, log masih mencapai Amazon S3.

Pencatatan multi-tujuan memberikan manfaat berikut. Plugin keluaran Amazon S3 juga mendukung opsi kompresi seperti format gzip dan Parket, yang dapat mengurangi biaya penyimpanan. Untuk informasi selengkapnya, lihat [kompresi S3](https://docs.fluentbit.io/manual/pipeline/outputs/s3#compression) dalam Fluent Bit dokumentasi.

Pencatatan multi-tujuan dapat memberikan manfaat berikut:
+ **Redundansi** — Jika satu tujuan gagal, log masih mencapai yang lain.
+ **Pemulihan** — Rekonstruksi kesenjangan dalam satu sistem dari yang lain.
+ **Daya Tahan** - Arsipkan log di Amazon S3 untuk retensi jangka panjang.
+ **Pengoptimalan biaya** — Simpan log terbaru dalam layanan kueri cepat seperti CloudWatch Log dengan retensi lebih pendek, sambil mengarsipkan semua log ke penyimpanan Amazon S3 berbiaya lebih rendah untuk retensi jangka panjang.

Fluent BitKonfigurasi berikut mengirimkan log ke CloudWatch Log dan Amazon S3:

```
[OUTPUT]
    Name cloudwatch_logs
    Match *
    region us-west-2
    log_group_name /aws/ecs/my-app
    log_stream_name $(ecs_task_id)
    workers 2
    retry_limit 15

[OUTPUT]
    Name s3
    Match *
    bucket my-logs-bucket
    region us-west-2
    total_file_size 100M
    s3_key_format /fluent-bit-logs/$(ecs_task_id)/%Y%m%d/%H/%M/$UUID
    upload_timeout 10m
    # Maximum disk space for buffered data for this output
    storage.total_limit_size 5G
```

Kedua output menggunakan `Match *` pola yang sama, sehingga semua catatan dikirim ke kedua tujuan secara independen. Selama pemadaman satu tujuan, log terus mengalir ke tujuan lainnya sementara flush yang gagal menumpuk di buffer sistem file untuk dicoba lagi nanti.

## Gunakan logging berbasis file dengan plugin input ekor
<a name="firelens-tail-input"></a>

Untuk skenario throughput tinggi di mana kehilangan log merupakan masalah penting, Anda dapat menggunakan pendekatan alternatif: minta aplikasi Anda menulis log ke file di disk, dan konfigurasikan Fluent Bit untuk membacanya menggunakan plugin `tail` input. Pendekatan ini sepenuhnya melewati lapisan driver logging Docker.

Pencatatan berbasis file dengan plugin ekor memberikan manfaat berikut:
+ **Offset tracking** - Plugin ekor dapat menyimpan offset file dalam file database (menggunakan `DB` opsi), memberikan daya tahan di seluruh Fluent Bit restart. Ini membantu mencegah kehilangan log selama restart kontainer.
+ **Buffering tingkat input** - Anda dapat mengonfigurasi batas buffer memori langsung pada plugin input menggunakan`Mem_Buf_Limit`, memberikan kontrol yang lebih terperinci atas penggunaan memori.
+ **Menghindari overhead Docker** — Log masuk langsung dari file ke Fluent Bit tanpa melewati buffer log Docker.

Untuk menggunakan pendekatan ini, aplikasi Anda harus menulis log ke file alih-alih`stdout`. Baik wadah aplikasi dan Fluent Bit wadah memasang volume bersama tempat file log disimpan.

Contoh berikut menunjukkan konfigurasi input ekor dengan praktik terbaik:

```
[INPUT]
    Name tail
    # File path or glob pattern to tail
    Path /var/log/app.log
    # Database file for storing file offsets (enables resuming after restart)
    DB /var/log/flb_tail.db
    # when true, controls that only fluent-bit will access the database (improves performance)
    DB.locking true
    # Skip long lines instead of skipping the entire file
    Skip_Long_Lines On
    # How often (in seconds) to check for new files matching the glob pattern
    Refresh_Interval 10
    # Extra seconds to monitor a file after rotation to account for pending flush
    Rotate_Wait 30
    # Maximum size of the buffer for a single line
    Buffer_Max_Size 10MB
    # Initial allocation size for reading file data
    Buffer_Chunk_Size 1MB
    # Maximum memory buffer size (tail pauses when full)
    Mem_Buf_Limit 75MB
```

Saat menggunakan plugin input ekor, pertimbangkan hal berikut:
+ Terapkan rotasi log untuk log aplikasi Anda untuk mencegah kelelahan disk. Pantau metrik volume yang mendasarinya untuk mengukur kinerja.
+ Pertimbangkan pengaturan seperti`Ignore_Older`,`Read_from_Head`, dan parser multiline berdasarkan format log Anda.

Untuk informasi selengkapnya, lihat [Ekor](https://docs.fluentbit.io/manual/pipeline/inputs/tail) dalam Fluent Bit dokumentasi. Untuk praktik terbaik, lihat [Konfigurasi ekor dengan praktik terbaik](https://github.com/aws/aws-for-fluent-bit/blob/mainline/troubleshooting/debugging.md#tail-config-with-best-practices) dalam panduan AWS Fluent Bit pemecahan masalah.

## Log langsung ke FireLens
<a name="firelens-environment-variables"></a>

Ketika driver `awsfirelens` log ditentukan dalam definisi tugas, agen penampung Amazon ECS menyuntikkan variabel lingkungan berikut ke dalam wadah:

`FLUENT_HOST`  
Alamat IP yang ditetapkan ke FireLens kontainer.  
Jika Anda menggunakan EC2 dengan mode `bridge` jaringan, variabel `FLUENT_HOST` lingkungan dalam wadah aplikasi Anda dapat menjadi tidak akurat setelah restart wadah router FireLens log (wadah dengan `firelensConfiguration` objek dalam definisi kontainer). Ini karena `FLUENT_HOST` merupakan alamat IP dinamis dan dapat berubah setelah restart. Logging langsung dari wadah aplikasi ke alamat `FLUENT_HOST` IP dapat mulai gagal setelah alamat berubah. Untuk informasi selengkapnya tentang memulai ulang kontainer individual, lihat. [Mulai ulang kontainer individual dalam tugas Amazon ECS dengan kebijakan restart kontainer](container-restart-policy.md)

`FLUENT_PORT`  
Port tempat protokol Fluent Forward mendengarkan.

Anda dapat menggunakan variabel lingkungan ini untuk log langsung ke router Fluent Bit log dari kode aplikasi Anda menggunakan protokol Fluent Forward, alih-alih menulis ke`stdout`. Pendekatan ini melewati lapisan driver logging Docker, yang memberikan manfaat berikut:
+ **Latensi yang lebih rendah** - Log langsung masuk Fluent Bit tanpa melewati infrastruktur logging Docker.
+ **Pencatatan terstruktur** — Kirim data log terstruktur secara native tanpa overhead encoding JSON.
+ **Kontrol yang lebih baik** - Aplikasi Anda dapat menerapkan buffering sendiri dan logika penanganan kesalahan.

Pustaka logger Fluent berikut mendukung protokol Fluent Forward dan dapat digunakan untuk mengirim log langsung ke: Fluent Bit
+ **Go** — [fluent-logger-golang](https://github.com/fluent/fluent-logger-golang)
+ **Python** – [fluent-logger-python](https://github.com/fluent/fluent-logger-python)
+ **Jawa** — [fluent-logger-java](https://github.com/fluent/fluent-logger-java)
+ **Node.js** – [fluent-logger-node](https://github.com/fluent/fluent-logger-node)
+ **Ruby** – [fluent-logger-ruby](https://github.com/fluent/fluent-logger-ruby)

## Konfigurasikan batas buffer Docker
<a name="firelens-buffer-limit"></a>

Saat Anda membuat definisi tugas, Anda dapat menentukan jumlah baris log yang di-buffer dalam memori dengan menentukan nilainya. `log-driver-buffer-limit` Ini mengontrol buffer antara Docker dan. Fluent Bit Untuk informasi selengkapnya, lihat [Driver logging fluentd](https://docs.docker.com/engine/logging/drivers/fluentd/) di dokumentasi Docker.

Gunakan opsi ini ketika ada throughput tinggi, karena Docker mungkin kehabisan memori buffer dan membuang pesan buffer sehingga dapat menambahkan pesan baru.

Pertimbangkan hal berikut saat menggunakan opsi ini:
+ Opsi ini didukung pada jenis EC2 dan Fargate dengan `1.4.0` versi platform atau yang lebih baru.
+ Opsi ini hanya valid ketika `logDriver` diatur ke`awsfirelens`.
+ Batas buffer default adalah baris `1048576` log.
+ Batas buffer harus lebih besar dari atau sama dengan `0` dan kurang dari garis `536870912` log.
+ Jumlah maksimum memori yang digunakan untuk buffer ini adalah produk dari ukuran setiap baris log dan ukuran buffer. Misalnya, jika baris log aplikasi rata-rata `2` KiB, batas buffer 4096 akan menggunakan paling banyak `8` MiB. Jumlah total memori yang dialokasikan pada tingkat tugas harus lebih besar dari jumlah memori yang dialokasikan untuk semua wadah selain buffer memori driver log.

Definisi tugas berikut menunjukkan cara mengkonfigurasi`log-driver-buffer-limit`:

```
{
    "containerDefinitions": [
        {
            "name": "my_service_log_router",
            "image": "public.ecr.aws/aws-observability/aws-for-fluent-bit:3",
            "cpu": 0,
            "memoryReservation": 51,
            "essential": true,
            "firelensConfiguration": {
                "type": "fluentbit"
            }
        },
        {
            "essential": true,
            "image": "public.ecr.aws/docker/library/httpd:latest",
            "name": "app",
            "logConfiguration": {
                "logDriver": "awsfirelens",
                "options": {
                    "Name": "firehose",
                    "region": "us-west-2",
                    "delivery_stream": "my-stream",
                    "log-driver-buffer-limit": "52428800"
                }
            },
            "dependsOn": [
                {
                    "containerName": "my_service_log_router",
                    "condition": "START"
                }
            ],
            "memoryReservation": 100
        }
    ]
}
```

# AWS untuk repositori Fluent Bit gambar untuk Amazon ECS
<a name="firelens-using-fluentbit"></a>

AWS menyediakan Fluent Bit gambar dengan plugin untuk CloudWatch Log dan Firehose. Sebaiknya gunakan Fluent Bit sebagai router log Anda karena memiliki tingkat pemanfaatan sumber daya yang lebih rendah daripadaFluentd. Untuk informasi selengkapnya, lihat [CloudWatch Log untuk Bit Lancar dan [Amazon Kinesis Firehose](https://github.com/aws/amazon-kinesis-firehose-for-fluent-bit) for Fluent](https://github.com/aws/amazon-cloudwatch-logs-for-fluent-bit) Bit.

Gambar **AWS for Fluent Bit** tersedia di Amazon ECR di Galeri Publik Amazon ECR dan di repositori Amazon ECR untuk ketersediaan tinggi.

## Galeri Publik Amazon ECR
<a name="firelens-image-ecrpublic"></a>

Fluent BitGambar AWS untuk tersedia di Galeri Publik Amazon ECR. Ini adalah lokasi yang disarankan untuk mengunduh Fluent Bit gambar AWS for karena ini adalah repositori publik dan tersedia untuk digunakan dari semua. Wilayah AWS Untuk informasi lebih lanjut, lihat [aws-for-fluent-bit](https://gallery.ecr.aws/aws-observability/aws-for-fluent-bit)di Galeri Publik Amazon ECR.

### Linux
<a name="firelens-image-ecrpublic-linux"></a>

Fluent BitGambar AWS for di Galeri Publik Amazon ECR mendukung sistem operasi Amazon Linux dengan `x86-64` arsitektur `ARM64` atau.

Anda dapat menarik Fluent Bit gambar AWS for dari Galeri Publik Amazon ECR dengan menentukan URL repositori dengan tag gambar yang diinginkan. Tag gambar yang tersedia dapat ditemukan di tab **Tag gambar** di Galeri Publik Amazon ECR.

Berikut ini menunjukkan sintaksis yang digunakan untuk Docker CLI.

```
docker pull public.ecr.aws/aws-observability/aws-for-fluent-bit:tag
```

Misalnya, Anda dapat menarik gambar terbaru dalam keluarga “3.x” AWS untuk Fluent Bit rilis menggunakan perintah CLI Docker ini.

```
docker pull public.ecr.aws/aws-observability/aws-for-fluent-bit:3
```

**catatan**  
Penarikan yang tidak diautentikasi diperbolehkan, tetapi memiliki batas kecepatan yang lebih rendah daripada tarikan yang diautentikasi. Untuk mengautentikasi menggunakan AWS akun Anda sebelum menarik, gunakan perintah berikut.  

```
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
```

#### AWS untuk Fluent Bit 3.0.0
<a name="firelens-image-ecrpublic-linux-3.0.0"></a>

Selain yang ada AWS untuk Fluent Bit versi`2.x`, AWS untuk Fluent Bit mendukung versi utama baru`3.x`. Versi utama baru termasuk memutakhirkan gambar dari Amazon Linux 2 ke Amazon Linux 2023 dan Fluent Bit versi `1.9.10` ke. `4.1.1` Untuk informasi selengkapnya, lihat [Fluent Bitrepositori AWS for](https://github.com/aws/aws-for-fluent-bit/blob/mainline/VERSIONS.md) on. GitHub

Contoh berikut menunjukkan tag diperbarui AWS untuk Fluent Bit `3.x` gambar:

Anda dapat menggunakan tag multi-arsitektur untuk Fluent Bit gambar AWS for.

```
docker pull public.ecr.aws/aws-observability/aws-for-fluent-bit:3
```

### Windows
<a name="firelens-image-ecrpublic-windows"></a>

Fluent BitGambar AWS for di Galeri Publik Amazon ECR mendukung `AMD64` arsitektur dengan sistem operasi berikut:
+ Windows Server 2022 Lengkap
+ Windows Server 2022 Inti
+ Windows Server 2019 Full
+ Windows Server 2019 Core

Wadah Windows yang ada di AWS Fargate tidak mendukung. FireLens

Anda dapat menarik Fluent Bit gambar AWS for dari Galeri Publik Amazon ECR dengan menentukan URL repositori dengan tag gambar yang diinginkan. Tag gambar yang tersedia dapat ditemukan di tab **Tag gambar** di Galeri Publik Amazon ECR.

Berikut ini menunjukkan sintaksis yang digunakan untuk Docker CLI.

```
docker pull public.ecr.aws/aws-observability/aws-for-fluent-bit:tag
```

Misalnya, Anda dapat menarik stable terbaru AWS untuk Fluent Bit gambar menggunakan perintah CLI Docker ini.

```
docker pull public.ecr.aws/aws-observability/aws-for-fluent-bit:windowsservercore-stable
```

**catatan**  
Penarikan yang tidak diautentikasi diperbolehkan, tetapi memiliki batas kecepatan yang lebih rendah daripada tarikan yang diautentikasi. Untuk mengautentikasi menggunakan AWS akun Anda sebelum menarik, gunakan perintah berikut.  

```
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
```

## Amazon ECR
<a name="firelens-image-ecr"></a>

Gambar AWS for Fluent Bit tersedia di Amazon ECR untuk ketersediaan tinggi. Perintah berikut dapat digunakan untuk retreive gambar URIs dan menetapkan ketersediaan gambar dalam bentuk tertentu. Wilayah AWS

### Linux
<a name="firelens-image-ecr-linux"></a>

Stabil terbaru AWS untuk URI gambar Fluent Bit dapat diambil menggunakan perintah berikut.

```
aws ssm get-parameters \
      --names /aws/service/aws-for-fluent-bit/stable \
      --region us-east-1
```

Semua versi image AWS for Fluent Bit dapat dicantumkan menggunakan perintah berikut untuk menanyakan parameter Systems Manager Parameter Store.

```
aws ssm get-parameters-by-path \
      --path /aws/service/aws-for-fluent-bit \
      --region us-east-1
```

Stabil terbaru AWS untuk image Fluent Bit dapat direferensikan dalam CloudFormation template dengan mereferensikan nama penyimpanan parameter Systems Manager. Berikut ini adalah contohnya:

```
Parameters:
  FireLensImage:
    Description: Fluent Bit image for the FireLens Container
    Type: AWS::SSM::Parameter::Value<String>
    Default: /aws/service/aws-for-fluent-bit/stable
```

**catatan**  
Jika perintah gagal atau tidak ada output, gambar tidak tersedia Wilayah AWS di mana perintah dipanggil.

### Windows
<a name="firelens-image-ecr-windows"></a>

Stabil terbaru AWS untuk URI gambar Fluent Bit dapat diambil menggunakan perintah berikut.

```
aws ssm get-parameters \
      --names /aws/service/aws-for-fluent-bit/windowsservercore-stable \
      --region us-east-1
```

Semua versi image AWS for Fluent Bit dapat dicantumkan menggunakan perintah berikut untuk menanyakan parameter Systems Manager Parameter Store.

```
aws ssm get-parameters-by-path \
      --path /aws/service/aws-for-fluent-bit/windowsservercore \
      --region us-east-1
```

Stabil terbaru AWS untuk image Fluent Bit dapat direferensikan dalam CloudFormation template dengan mereferensikan nama penyimpanan parameter Systems Manager. Berikut ini adalah contohnya:

```
Parameters:
  FireLensImage:
    Description: Fluent Bit image for the FireLens Container
    Type: AWS::SSM::Parameter::Value<String>
    Default: /aws/service/aws-for-fluent-bit/windowsservercore-stable
```

# Contoh definisi tugas Amazon ECS: Rute log ke FireLens
<a name="firelens-taskdef"></a>

Untuk menggunakan perutean log kustom denganFireLens, Anda harus menentukan yang berikut dalam definisi tugas Anda:
+ Sebuah wadah log router yang berisi FireLens konfigurasi. Kami merekomendasikan bahwa kontainer ditandai sebagai `essential`.
+ Satu kontainer aplikasi atau lebih yang berisi konfigurasi log menentukan driver log `awsfirelens`.
+ Peran IAM tugas Amazon Resource Name (ARN) yang berisi izin yang diperlukan untuk tugas untuk merutekan log.

Saat membuat definisi tugas baru menggunakan Konsol Manajemen AWS, ada bagian FireLens integrasi yang membuatnya mudah untuk menambahkan wadah router log. Untuk informasi selengkapnya, lihat [Membuat definisi tugas Amazon ECS menggunakan konsol](create-task-definition.md).

Amazon ECS mengonversi konfigurasi log dan menghasilkan konfigurasi output Fluentd atau Fluent Bit. Konfigurasi output dipasang dalam kontainer perutean log di `/fluent-bit/etc/fluent-bit.conf` untuk Fluent Bit dan `/fluentd/etc/fluent.conf` untuk Fluentd.

**penting**  
FireLensmendengarkan di port`24224`. Oleh karena itu, untuk memastikan bahwa router FireLens log tidak dapat dijangkau di luar tugas, Anda tidak boleh mengizinkan lalu lintas masuk pada port `24224` dalam grup keamanan yang digunakan tugas Anda. Untuk tugas yang menggunakan mode `awsvpc` jaringan, ini adalah grup keamanan yang terkait dengan tugas. Untuk tugas yang menggunakan mode `host` jaringan, ini adalah grup keamanan yang terkait dengan instans Amazon EC2 yang menghosting tugas tersebut. Untuk tugas yang menggunakan mode `bridge` jaringan, jangan membuat pemetaan port apa pun yang menggunakan port. `24224`

Secara default, Amazon ECS menambahkan bidang tambahan di entri log Anda yang membantu mengidentifikasi sumber log. 
+ `ecs_cluster`— Nama cluster yang menjadi bagian dari tugas.
+ `ecs_task_arn`— Nama Sumber Daya Amazon (ARN) lengkap dari tugas yang menjadi bagian dari wadah.
+ `ecs_task_definition`— Nama definisi tugas dan revisi yang digunakan tugas.
+ `ec2_instance_id`— ID instans Amazon EC2 tempat penampung di-host. Bidang ini hanya berlaku untuk tugas yang menggunakan tipe peluncuran EC2.

Anda dapat mengatur `enable-ecs-log-metadata` ke `false` jika Anda tidak ingin metadata.

Contoh definisi tugas berikut mendefinisikan wadah router log yang menggunakan Fluent Bit untuk merutekan lognya ke CloudWatch Log. Ini juga mendefinisikan wadah aplikasi yang menggunakan konfigurasi log untuk merutekan log ke Amazon Data Firehose dan menetapkan memori yang digunakan untuk buffer peristiwa ke 2 MiB.

**catatan**  
Untuk contoh definisi tugas lainnya, lihat [ FireLenscontoh Amazon ECS](https://github.com/aws-samples/amazon-ecs-firelens-examples) di GitHub.

```
{
  "family": "firelens-example-firehose",
  "taskRoleArn": "arn:aws:iam::123456789012:role/ecs_task_iam_role",
  "containerDefinitions": [
    {
            "name": "log_router",
            "image": "public.ecr.aws/aws-observability/aws-for-fluent-bit:3",
            "cpu": 0,
            "memoryReservation": 51,
            "portMappings": [],
            "essential": true,
            "environment": [],
            "mountPoints": [],
            "volumesFrom": [],
            "logConfiguration": {
                "logDriver": "awslogs",
                "options": {
                    "awslogs-group": "/ecs/ecs-aws-firelens-sidecar-container",
                    "mode": "non-blocking",
                    "awslogs-create-group": "true",
                    "max-buffer-size": "25m",
                    "awslogs-region": "us-east-1",
                    "awslogs-stream-prefix": "firelens"
                },
                "secretOptions": []
            },
            "systemControls": [],
            "firelensConfiguration": {
                "type": "fluentbit"
            }
        },
    {
      "essential": true,
      "image": "public.ecr.aws/docker/library/httpd:latest",
      "name": "app",
      "logConfiguration": {
        "logDriver": "awsfirelens",
        "options": {
          "Name": "firehose",
          "region": "us-west-2",
          "delivery_stream": "my-stream",
          "log-driver-buffer-limit": "1048576"
        }
      },
      "memoryReservation": 100
    }
  ]
}
```

Pasangan kunci-nilai yang ditentukan sebagai opsi dalam `logConfiguration` objek digunakan untuk menghasilkan konfigurasi Fluentd atau Fluent Bit output. Berikut ini adalah contoh kode dari definisi Fluent Bit output.

```
[OUTPUT]
    Name   firehose
    Match  app-firelens*
    region us-west-2
    delivery_stream my-stream
```

**catatan**  
FireLens mengelola `match` konfigurasi. Anda tidak menentukan `match` konfigurasi dalam definisi tugas Anda. 

## Gunakan file konfigurasi khusus
<a name="firelens-taskdef-customconfig"></a>

Anda dapat menentukan file konfigurasi kustom. Format file konfigurasi adalah format asli untuk router log yang Anda gunakan. [Untuk informasi selengkapnya, lihat [Sintaks File Konfigurasi Fluentd dan Konfigurasi YAMM](https://docs.fluentd.org/configuration/config-file).](https://docs.fluentbit.io/manual/administration/configuring-fluent-bit/yaml)

Dalam file konfigurasi kustom Anda, untuk tugas yang menggunakan mode `awsvpc` jaringan `bridge` atau, jangan setel input forward Fluentd atau Fluent Bit melalui TCP karena FireLens menambahkannya ke konfigurasi input.

FireLensKonfigurasi Anda harus berisi opsi berikut untuk menentukan file konfigurasi kustom:

`config-file-type`  
Lokasi sumber file konfigurasi kustom. Opsi yang tersedia adalah `s3` atau `file`.  
Tugas yang di-host AWS Fargate hanya mendukung jenis file `file` konfigurasi. Namun, Anda dapat menggunakan file konfigurasi yang dihosting di Amazon S3 di AWS Fargate dengan menggunakan wadah for init. AWS Fluent Bit Untuk informasi selengkapnya, lihat [Proses Init untuk Bit Lancar di ECS, dukungan multi-konfigurasi aktif](https://github.com/aws/aws-for-fluent-bit/blob/mainline/use_cases/init-process-for-fluent-bit/README.md). GitHub

`config-file-value`  
Sumber untuk file konfigurasi kustom. Jika jenis file `s3` konfigurasi digunakan, nilai file konfigurasi adalah ARN lengkap dari bucket dan file Amazon S3. Jika jenis file `file` konfigurasi digunakan, nilai file konfigurasi adalah jalur lengkap dari file konfigurasi yang ada baik dalam gambar kontainer atau pada volume yang dipasang di wadah.  
Saat menggunakan file konfigurasi khusus, Anda harus menentukan jalur yang berbeda dari yang FireLens digunakan. Amazon ECS mencadangkan jalur `/fluent-bit/etc/fluent-bit.conf` file untuk Fluent Bit dan Fluentd. `/fluentd/etc/fluent.conf`

Contoh berikut menunjukkan sintaksis yang diperlukan saat menentukan konfigurasi kustom.

**penting**  
Untuk menentukan file konfigurasi kustom yang di-host di Amazon S3, pastikan Anda telah membuat peran IAM eksekusi tugas dengan izin yang tepat. 

Berikut ini menunjukkan sintaks yang diperlukan saat menentukan konfigurasi kustom.

```
{
  "containerDefinitions": [
    {
      "essential": true,
      "image": "906394416424.dkr.ecr.us-west-2.amazonaws.com/aws-for-fluent-bit:3",
      "name": "log_router",
      "firelensConfiguration": {
        "type": "fluentbit",
        "options": {
          "config-file-type": "s3 | file",
          "config-file-value": "arn:aws:s3:::amzn-s3-demo-bucket/fluent.conf | filepath"
        }
      }
    }
  ]
}
```

**catatan**  
Tugas yang dihosting AWS Fargate hanya mendukung jenis file `file` konfigurasi. Namun, Anda dapat menggunakan file konfigurasi yang dihosting di Amazon S3 di AWS Fargate dengan menggunakan wadah for init. AWS Fluent Bit Untuk informasi selengkapnya, lihat [Proses Init untuk Bit Lancar di ECS, dukungan multi-konfigurasi aktif](https://github.com/aws/aws-for-fluent-bit/blob/mainline/use_cases/init-process-for-fluent-bit/README.md). GitHub

# Menggunakan gambar AWS non-kontainer di Amazon ECS
<a name="private-auth"></a>

Gunakan registri pribadi untuk menyimpan kredensil Anda AWS Secrets Manager, dan kemudian mereferensikannya dalam definisi tugas Anda. Ini menyediakan cara untuk mereferensikan gambar kontainer yang ada di pendaftar pribadi di luar AWS yang memerlukan otentikasi dalam definisi tugas Anda. Fitur ini didukung oleh tugas yang dihosting di Fargate, instans Amazon EC2, dan instans eksternal yang menggunakan Amazon ECS Anywhere.

**penting**  
Jika definisi tugas Anda mereferensikan gambar yang disimpan di Amazon ECR, topik ini tidak berlaku. Untuk informasi selengkapnya, lihat [Menggunakan Gambar Amazon ECR dengan Amazon ECS](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_on_ECS.html) di *Panduan Pengguna Amazon Elastic Container Registry*.

Untuk tugas yang dihosting di instans Amazon EC2, fitur ini memerlukan versi `1.19.0` atau yang lebih baru dari agen penampung. Akan tetapi, kami merekomendasikan untuk menggunakan versi agen kontainer terbaru. Untuk informasi tentang cara memeriksa versi agen Anda dan memperbarui ke versi terbaru, lihat[Memperbarui agen kontainer Amazon ECS](ecs-agent-update.md).

Untuk tugas yang dihosting di Fargate, fitur ini memerlukan versi platform `1.2.0` atau yang lebih baru. Untuk informasi, lihat [Versi platform Fargate untuk Amazon ECS](platform-fargate.md).

Dalam definisi kontainer Anda, tentukan `repositoryCredentials` objek dengan detail rahasia yang Anda buat. Rahasia yang direferensikan dapat berasal dari akun yang berbeda Wilayah AWS atau berbeda dari tugas yang menggunakannya.

**catatan**  
Saat menggunakan Amazon ECS API, AWS CLI, atau AWS SDK, jika rahasia ada Wilayah AWS sama dengan tugas yang Anda luncurkan maka Anda dapat menggunakan ARN lengkap atau nama rahasia. Jika rahasia ada di akun yang berbeda, ARN penuh rahasia harus ditentukan. Saat menggunakan Konsol Manajemen AWS, ARN penuh rahasia harus ditentukan selalu.

Berikut ini adalah cuplikan definisi tugas yang menunjukkan parameter yang diperlukan:

Gantikan parameter berikut:
+ *private-repo*dengan nama host repositori pribadi 
+ *private-image*dengan nama gambar
+ *arn:aws:secretsmanager:region:aws\$1account\$1id:secret:secret\$1name*dengan nama sumber daya Amazon rahasia (ARN)

```
"containerDefinitions": [
    {
        "image": "private-repo/private-image",
        "repositoryCredentials": {
            "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name"
        }
    }
]
```

**catatan**  
Metode lain untuk mengaktifkan otentikasi registri pribadi menggunakan variabel lingkungan agen penampung Amazon ECS untuk mengautentikasi ke pendaftar pribadi. Metode ini hanya didukung untuk tugas yang dihosting di instans Amazon EC2. Untuk informasi selengkapnya, lihat [Mengonfigurasi instans penampung Amazon ECS untuk gambar Docker pribadi](private-auth-container-instances.md).

**Untuk menggunakan registri pribadi**

1. Definisi tugas harus memiliki peran eksekusi tugas. Hal ini mengizinkan agen kontainer untuk menarik citra kontainer. Untuk informasi selengkapnya, lihat [Peran IAM pelaksanaan tugas Amazon ECS](task_execution_IAM_role.md).

   Autentikasi registri pribadi memungkinkan tugas Amazon ECS Anda menarik gambar kontainer dari pendaftar pribadi di luar AWS (seperti Docker Hub, Quay.io, atau registri pribadi Anda sendiri) yang memerlukan kredensyal otentikasi. Fitur ini menggunakan Secrets Manager untuk menyimpan kredensyal registri Anda dengan aman, yang kemudian direferensikan dalam definisi tugas Anda menggunakan parameter. `repositoryCredentials`

   Untuk informasi selengkapnya tentang mengonfigurasi autentikasi registri pribadi, lihat [Menggunakan gambar AWS non-kontainer di Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html).

   Untuk menyediakan akses ke rahasia yang berisi kredensyal registri pribadi Anda, tambahkan izin berikut sebagai kebijakan inline ke peran eksekusi tugas. Untuk informasi selengkapnya, lihat [Menambahkan dan Menghapus Kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html).
   + `secretsmanager:GetSecretValue`—Diperlukan untuk mengambil kredensyal registri pribadi dari Secrets Manager.
   + `kms:Decrypt`—Wajib hanya jika rahasia Anda menggunakan kunci KMS khusus dan bukan kunci default. Nama Sumber Daya Amazon (ARN) untuk kunci kustom Anda harus ditambahkan sebagai sumber daya.

   Berikut ini adalah contoh kebijakan inline yang menambahkan izin.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt",
                   "secretsmanager:GetSecretValue"
               ],
               "Resource": [
                   "arn:aws:secretsmanager:us-east-1:111122223333:secret:secret_name",
                   "arn:aws:kms:us-east-1:111122223333:key/key_id"
               ]
           }
       ]
   }
   ```

------

1. Gunakan AWS Secrets Manager untuk membuat rahasia untuk kredensil registri pribadi Anda. Untuk informasi tentang cara membuat rahasia, lihat [Membuat AWS Secrets Manager rahasia](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) di *Panduan AWS Secrets Manager Pengguna*.

   Masukkan kredensyal registri pribadi Anda menggunakan format berikut:

   ```
   {
     "username" : "privateRegistryUsername",
     "password" : "privateRegistryPassword"
   }
   ```

1. Mendaftarkan ketentuan tugas. Untuk informasi selengkapnya, lihat [Membuat definisi tugas Amazon ECS menggunakan konsol](create-task-definition.md).

# Mulai ulang kontainer individual dalam tugas Amazon ECS dengan kebijakan restart kontainer
<a name="container-restart-policy"></a>

Anda dapat mengaktifkan kebijakan restart untuk setiap wadah penting dan non-esensial yang ditentukan dalam definisi tugas Anda, untuk mengatasi kegagalan sementara lebih cepat dan menjaga ketersediaan tugas. Saat Anda mengaktifkan kebijakan restart untuk penampung, Amazon ECS dapat memulai ulang penampung jika keluar, tanpa perlu mengganti tugas.

Kebijakan restart tidak diaktifkan untuk kontainer secara default. Saat mengaktifkan kebijakan restart untuk kontainer, Anda dapat menentukan kode keluar tempat penampung tidak akan dimulai ulang. Ini bisa berupa kode keluar yang menunjukkan keberhasilan, seperti kode keluar`0`, yang tidak memerlukan restart. Anda juga dapat menentukan berapa lama kontainer harus berjalan dengan sukses sebelum restart dapat dicoba. Untuk informasi selengkapnya tentang parameter ini, lihat [Kebijakan Mulai Ulang](task_definition_parameters.md#container_definition_restart_policy). Untuk contoh definisi tugas yang menentukan nilai-nilai ini, lihat[Menentukan kebijakan restart container dalam definisi tugas Amazon ECS](container-restart-policy-example.md).

Anda dapat menggunakan titik akhir metadata tugas Amazon ECS atau CloudWatch Wawasan Kontainer untuk memantau berapa kali penampung dimulai ulang. Untuk informasi selengkapnya tentang titik akhir metadata tugas, lihat dan. [Titik akhir metadata tugas Amazon ECS versi 4](task-metadata-endpoint-v4.md) [Titik akhir metadata tugas Amazon ECS versi 4 untuk tugas di Fargate](task-metadata-endpoint-v4-fargate.md) *Untuk informasi selengkapnya tentang metrik Wawasan Kontainer untuk Amazon ECS, lihat metrik [Amazon ECS Container Insights di Panduan Pengguna](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-metrics-ECS.html) Amazon. CloudWatch *

Kebijakan restart kontainer didukung oleh tugas yang dihosting di Fargate, instans Amazon EC2, dan instans eksternal menggunakan Amazon ECS Anywhere.

## Pertimbangan-pertimbangan
<a name="container-restart-policy-considerations"></a>

Pertimbangkan hal berikut sebelum mengaktifkan kebijakan restart untuk penampung Anda:
+ Kebijakan restart tidak didukung untuk kontainer Windows di Fargate.
+ Untuk tugas yang dihosting di instans Amazon EC2, fitur ini memerlukan versi `1.86.0` atau yang lebih baru dari agen penampung. Akan tetapi, kami merekomendasikan untuk menggunakan versi agen kontainer terbaru. Untuk informasi tentang cara memeriksa versi agen Anda dan memperbarui ke versi terbaru, lihat[Memperbarui agen kontainer Amazon ECS](ecs-agent-update.md).
+ Jika Anda menggunakan EC2 dengan mode `bridge` jaringan, variabel `FLUENT_HOST` lingkungan dalam wadah aplikasi Anda dapat menjadi tidak akurat setelah restart wadah router FireLens log (wadah dengan `firelensConfiguration` objek dalam definisi kontainer). Ini karena `FLUENT_HOST` merupakan alamat IP dinamis dan dapat berubah setelah restart. Logging langsung dari wadah aplikasi ke alamat `FLUENT_HOST` IP dapat mulai gagal setelah alamat berubah. Untuk informasi selengkapnya tentang `FLUENT_HOST`, lihat [Mengkonfigurasi log Amazon ECS untuk throughput tinggi](firelens-docker-buffer-limit.md).
+ Agen Amazon ECS menangani kebijakan restart kontainer. Jika karena alasan yang tidak terduga agen Amazon ECS gagal atau tidak lagi berjalan, penampung tidak akan dimulai ulang.
+  Periode percobaan restart yang ditentukan dalam kebijakan Anda menentukan periode waktu (dalam detik) penampung harus dijalankan sebelum Amazon ECS memulai ulang penampung.

# Menentukan kebijakan restart container dalam definisi tugas Amazon ECS
<a name="container-restart-policy-example"></a>

Untuk menentukan kebijakan restart untuk container dalam definisi tugas, dalam definisi container, tentukan `restartPolicy` objek. Untuk informasi lebih lanjut tentang objek `restartPolicy`, lihat [Kebijakan Mulai Ulang](task_definition_parameters.md#container_definition_restart_policy).

Berikut ini adalah definisi tugas menggunakan wadah Linux di Fargate yang mengatur server web. Definisi kontainer menyertakan `restartPolicy` objek, dengan `enabled` disetel ke true untuk mengaktifkan kebijakan restart untuk penampung. Wadah harus berjalan selama 180 detik sebelum dapat dimulai ulang dan tidak akan dimulai ulang jika keluar dengan kode `0` keluar, yang menunjukkan keberhasilan.

```
{
  "containerDefinitions": [
    {
      "command": [
        "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' >  /usr/local/apache2/htdocs/index.html && httpd-foreground\""
      ],
      "entryPoint": ["sh", "-c"],
      "essential": true,
      "image": "public.ecr.aws/docker/library/httpd:2.4",
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "/ecs/fargate-task-definition",
          "awslogs-region": "us-east-1",
          "awslogs-stream-prefix": "ecs"
        }
      },
      "name": "sample-fargate-app",
      "portMappings": [
        {
          "containerPort": 80,
          "hostPort": 80,
          "protocol": "tcp"
        }
      ],
      "restartPolicy": {
        "enabled": true,
        "ignoredExitCodes": [0],
        "restartAttemptPeriod": 180
      }
    }
  ],
  "cpu": "256",
  "executionRoleArn": "arn:aws:iam::012345678910:role/ecsTaskExecutionRole",
  "family": "fargate-task-definition",
  "memory": "512",
  "networkMode": "awsvpc",
  "runtimePlatform": {
    "operatingSystemFamily": "LINUX"
  },
  "requiresCompatibilities": ["FARGATE"]
}
```

Setelah Anda mendaftarkan definisi tugas dengan `restartPolicy` objek dalam definisi kontainer, Anda dapat menjalankan tugas atau membuat layanan dengan definisi tugas tersebut. Untuk informasi selengkapnya, lihat [Menjalankan aplikasi sebagai tugas Amazon ECS](standalone-task-create.md) dan [Membuat penyebaran pembaruan bergulir Amazon ECS](create-service-console-v2.md).

# Meneruskan data sensitif ke wadah Amazon ECS
<a name="specifying-sensitive-data"></a>

Anda dapat meneruskan data sensitif dengan aman, seperti kredensi ke database, ke dalam wadah Anda. 

Rahasia, seperti kunci API dan kredensyal basis data, sering digunakan oleh aplikasi untuk mendapatkan akses sistem lain. Mereka sering terdiri dari nama pengguna dan kata sandi, sertifikat, atau kunci API. Akses ke rahasia ini harus dibatasi pada prinsipal IAM tertentu yang menggunakan IAM dan disuntikkan ke dalam wadah saat runtime.

Rahasia dapat disuntikkan dengan mulus ke dalam wadah dari AWS Secrets Manager dan Amazon EC2 Systems Manager Parameter Store. Rahasia-rahasia ini dapat direferensikan dalam tugas Anda sebagai salah satu dari berikut ini.

1. Mereka direferensikan sebagai variabel lingkungan yang menggunakan parameter definisi `secrets` kontainer.

1. Mereka direferensikan `secretOptions` seolah-olah platform logging Anda memerlukan otentikasi. Untuk informasi selengkapnya, lihat [opsi konfigurasi logging](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LogConfiguration.html#API_LogConfiguration_Contents).

1. Mereka direferensikan sebagai rahasia yang ditarik oleh gambar yang menggunakan parameter definisi `repositoryCredentials` wadah jika registri tempat penampung ditarik memerlukan otentikasi. Gunakan metode ini saat menarik gambar dari Galeri Publik Amazon ECR. Untuk informasi selengkapnya, lihat [Autentikasi registri pribadi untuk tugas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html).

Kami menyarankan Anda melakukan hal berikut saat mengatur manajemen rahasia.

## Gunakan AWS Secrets Manager atau AWS Systems Manager Parameter Menyimpan untuk menyimpan materi rahasia
<a name="security-secrets-management-recommendations-storing-secret-materials"></a>

Anda harus menyimpan kunci API, kredensyal database, dan materi rahasia lainnya dengan aman di Secrets Manager atau sebagai parameter terenkripsi di Systems Manager Parameter Store. Layanan ini serupa karena keduanya merupakan penyimpanan nilai kunci terkelola yang digunakan AWS KMS untuk mengenkripsi data sensitif. Secrets Manager, bagaimanapun, juga mencakup kemampuan untuk secara otomatis memutar rahasia, menghasilkan rahasia acak, dan berbagi rahasia di seluruh akun. Untuk memanfaatkan fitur-fitur ini, gunakan Secrets Manager. Jika tidak, gunakan parameter terenkripsi di Systems Manager Parameter Store.

**penting**  
Jika rahasia Anda berubah, Anda harus memaksa penerapan baru atau meluncurkan tugas baru untuk mengambil nilai rahasia terbaru. Untuk informasi selengkapnya, lihat topik berikut:  
Tugas - Hentikan tugas, lalu mulailah. Untuk informasi selengkapnya, lihat [Menghentikan tugas Amazon ECS](standalone-task-stop.md) dan [Menjalankan aplikasi sebagai tugas Amazon ECS](standalone-task-create.md).
Layanan - Perbarui layanan dan gunakan opsi force new deployment. Untuk informasi selengkapnya, lihat [Memperbarui layanan Amazon ECS](update-service-console-v2.md).

## Mengambil data dari bucket Amazon S3 terenkripsi
<a name="security-secrets-management-recommendations-encrypted-s3-buckets"></a>

Anda harus menyimpan rahasia di bucket Amazon S3 terenkripsi dan menggunakan peran tugas untuk membatasi akses ke rahasia tersebut. Ini mencegah nilai variabel lingkungan bocor secara tidak sengaja di log dan terungkap saat dijalankan. `docker inspect` Ketika Anda melakukan ini, aplikasi Anda harus ditulis untuk membaca rahasia dari ember Amazon S3. Untuk petunjuknya, lihat [Menyetel perilaku enkripsi sisi server default untuk bucket Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html).

## Pasang rahasia ke volume menggunakan wadah sespan
<a name="security-secrets-management-recommendations-mount-secret-volumes"></a>

Karena ada peningkatan risiko kebocoran data dengan variabel lingkungan, Anda harus menjalankan wadah sespan yang membaca rahasia Anda AWS Secrets Manager dan menuliskannya ke volume bersama. Kontainer ini dapat berjalan dan keluar sebelum penampung aplikasi dengan menggunakan [pemesanan kontainer Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDependency.html). Ketika Anda melakukan ini, wadah aplikasi kemudian memasang volume tempat rahasia itu ditulis. Seperti metode bucket Amazon S3, aplikasi Anda harus ditulis untuk membaca rahasia dari volume bersama. Karena volume tercakup pada tugas, volume secara otomatis dihapus setelah tugas berhenti. Sebagai contoh, lihat proyek [task-def.json](https://github.com/aws-samples/aws-secret-sidecar-injector/blob/master/ecs-task-def/task-def.json).

Di Amazon EC2, volume tempat rahasia ditulis dapat dienkripsi dengan kunci yang AWS KMS dikelola pelanggan. AWS Fargate Aktif, penyimpanan volume secara otomatis dienkripsi menggunakan kunci yang dikelola layanan. 

# Meneruskan variabel lingkungan individual ke wadah Amazon ECS
<a name="taskdef-envfiles"></a>

**penting**  
Sebaiknya simpan data sensitif Anda baik dalam parameter AWS Secrets Manager rahasia atau AWS Systems Manager Parameter Store. Untuk informasi selengkapnya, lihat [Meneruskan data sensitif ke wadah Amazon ECS](specifying-sensitive-data.md).  
Variabel lingkungan yang ditentukan dalam definisi tugas dapat dibaca oleh semua pengguna dan peran yang diizinkan `DescribeTaskDefinition` tindakan untuk definisi tugas.

Anda dapat meneruskan variabel lingkungan ke kontainer Anda dengan cara berikut:
+ Secara individual menggunakan parameter ketentuan kontainer `environment`. Ini memetakan ke `--env` opsi untuk [https://docs.docker.com/reference/cli/docker/container/run/](https://docs.docker.com/reference/cli/docker/container/run/).
+ Secara massal, menggunakan parameter definisi `environmentFiles` kontainer untuk mencantumkan satu atau lebih file yang berisi variabel lingkungan. File harus di-host di Amazon S3. Ini memetakan ke `--env-file` opsi untuk [https://docs.docker.com/reference/cli/docker/container/run/](https://docs.docker.com/reference/cli/docker/container/run/).

Berikut ini adalah potongan ketentuan tugas yang menunjukkan cara menentukan variabel lingkungan individual.

```
{
    "family": "",
    "containerDefinitions": [
        {
            "name": "",
            "image": "",
            ...
            "environment": [
                {
                    "name": "variable",
                    "value": "value"
                }
            ],
            ...
        }
    ],
    ...
}
```

# Meneruskan variabel lingkungan ke wadah Amazon ECS
<a name="use-environment-file"></a>

**penting**  
Sebaiknya simpan data sensitif Anda baik dalam parameter AWS Secrets Manager rahasia atau AWS Systems Manager Parameter Store. Untuk informasi selengkapnya, lihat [Meneruskan data sensitif ke wadah Amazon ECS](specifying-sensitive-data.md).  
File variabel lingkungan adalah objek di Amazon S3 dan semua pertimbangan keamanan Amazon S3 berlaku.   
Anda tidak dapat menggunakan `environmentFiles` parameter pada wadah Windows dan wadah Windows di Fargate.

Anda dapat membuat file variabel lingkungan dan menyimpannya di Amazon S3 untuk meneruskan variabel lingkungan ke wadah Anda.

Dengan menentukan variabel lingkungan dalam file, Anda dapat menyuntikkan variabel lingkungan secara massal. Dalam definisi container Anda, tentukan `environmentFiles` objek dengan daftar bucket Amazon S3 yang berisi file variabel lingkungan Anda.

Amazon ECS tidak memberlakukan batas ukuran pada variabel lingkungan, tetapi file variabel lingkungan yang besar mungkin mengisi ruang disk. Setiap tugas yang menggunakan file variabel lingkungan menyebabkan salinan file diunduh ke disk. Amazon ECS menghapus file sebagai bagian dari pembersihan tugas.

Untuk informasi tentang variabel lingkungan yang didukung, lihat [Parameter definisi kontainer lanjutan- Lingkungan](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#container_definition_environment).

Pertimbangkan hal berikut saat menentukan file variabel lingkungan dalam definisi wadah.
+ Untuk tugas Amazon ECS di Amazon EC2, instans penampung Anda mengharuskan agen penampung adalah `1.39.0` versi atau yang lebih baru untuk menggunakan fitur ini. Untuk informasi tentang cara memeriksa versi agen Anda dan memperbarui ke versi terbaru, lihat[Memperbarui agen kontainer Amazon ECS](ecs-agent-update.md).
+ Untuk tugas Amazon ECS di AWS Fargate, tugas Anda harus menggunakan `1.4.0` versi platform atau yang lebih baru (Linux) untuk menggunakan fitur ini. Untuk informasi selengkapnya, lihat [Versi platform Fargate untuk Amazon ECS](platform-fargate.md).

  Verifikasi bahwa variabel didukung untuk platform sistem operasi. Untuk informasi selengkapnya, lihat [Definisi kontainer](task_definition_parameters.md#container_definitions) dan [Parameter ketentuan tugas lainnya](task_definition_parameters.md#other_task_definition_params).
+ File harus menggunakan ekstensi file `.env` dan pengodean UTF-8.
+ Peran eksekusi tugas diperlukan untuk menggunakan fitur ini dengan izin tambahan untuk Amazon S3. Ini memungkinkan agen penampung untuk menarik file variabel lingkungan dari Amazon S3. Untuk informasi selengkapnya, lihat [Peran IAM pelaksanaan tugas Amazon ECS](task_execution_IAM_role.md).
+ Ada batas 10 file per definisi tugas.
+ Setiap baris dalam file lingkungan harus berisi variabel lingkungan dalam `VARIABLE=VALUE` format. Spasi atau tanda kutip **disertakan** sebagai bagian dari nilai untuk file Amazon ECS. Baris yang diawali dengan `#` diperlakukan sebagai komentar dan diabaikan. Untuk informasi selengkapnya tentang sintaks file variabel lingkungan, lihat [Mengatur variabel lingkungan (-e, --env, --env-file](https://docs.docker.com/reference/cli/docker/container/run/#env)) dalam dokumentasi. Docker

  Berikut ini adalah sintaks yang sesuai.

  ```
  #This is a comment and will be ignored
  VARIABLE=VALUE
  ENVIRONMENT=PRODUCTION
  ```
+ Jika ada variabel lingkungan yang ditentukan menggunakan parameter `environment` dalam ketentuan kontainer, maka akan lebih diutamakan daripada variabel yang terkandung dalam file lingkungan.
+ Jika beberapa file lingkungan ditentukan dan mereka berisi variabel yang sama, mereka diproses dalam urutan entri. Ini berarti bahwa nilai pertama dari variabel digunakan dan nilai-nilai berikutnya dari variabel duplikat diabaikan. Kami merekomendasikan agar Anda menggunakan nama variabel yang unik.
+ Jika file lingkungan ditentukan sebagai penimpaan kontainer, itu digunakan. Selain itu, file lingkungan lain yang ditentukan dalam definisi wadah diabaikan.
+ Aturan berikut berlaku untuk Fargate:
  + File ini ditangani mirip dengan env-file Docker asli.
  + Definisi kontainer yang mereferensikan variabel lingkungan yang kosong dan disimpan di Amazon S3 tidak muncul di wadah.
  + Tidak ada dukungan untuk penanganan pelarian shell.
  + Titik masuk kontainer menyelingi nilai-nilai. `VARIABLE`

## Contoh
<a name="environment-file-example"></a>

Berikut ini adalah potongan ketentuan tugas yang menunjukkan cara menentukan file variabel lingkungan.

```
{
    "family": "",
    "containerDefinitions": [
        {
            "name": "",
            "image": "",
            ...
            "environmentFiles": [
                {
                    "value": "arn:aws:s3:::amzn-s3-demo-bucket/envfile_object_name.env",
                    "type": "s3"
                }
            ],
            ...
        }
    ],
    ...
}
```

# Lulus rahasia Secrets Manager secara terprogram di Amazon ECS
<a name="secrets-app-secrets-manager"></a>

Alih-alih hardcoding informasi sensitif dalam teks biasa di aplikasi Anda, Anda dapat menggunakan Secrets Manager untuk menyimpan data sensitif.

Kami merekomendasikan metode ini untuk mengambil data sensitif karena jika rahasia Secrets Manager kemudian diperbarui, aplikasi secara otomatis mengambil versi terbaru dari rahasia.

Buat rahasia di Secrets Manager. Setelah Anda membuat rahasia Secrets Manager, perbarui kode aplikasi Anda untuk mengambil rahasia.

Tinjau pertimbangan berikut sebelum mengamankan data sensitif di Secrets Manager.
+ Hanya rahasia yang menyimpan data teks, yang merupakan rahasia yang dibuat dengan `SecretString` parameter [CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html)API, yang didukung. Rahasia yang menyimpan data biner, yang merupakan rahasia yang dibuat dengan `SecretBinary` parameter [CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html)API tidak didukung.
+ Gunakan titik akhir VPC antarmuka untuk meningkatkan kontrol keamanan. Anda harus membuat titik akhir VPC antarmuka untuk Secrets Manager. *Untuk informasi tentang titik akhir VPC, lihat Membuat titik akhir [VPC di Panduan Pengguna](https://docs.aws.amazon.com/secretsmanager/latest/userguide/setup-create-vpc.html).AWS Secrets Manager *
+ VPC yang digunakan tugas Anda harus menggunakan resolusi DNS.
+ Definisi tugas Anda harus menggunakan peran tugas dengan izin tambahan untuk Secrets Manager. Untuk informasi selengkapnya, lihat [Peran IAM tugas Amazon ECS](task-iam-roles.md).

## Buat rahasia Secrets Manager
<a name="secrets-app-secrets-manager-create-secret"></a>

Anda dapat menggunakan konsol Secrets Manager untuk membuat rahasia untuk data sensitif Anda. Untuk informasi tentang cara membuat rahasia, lihat [Membuat AWS Secrets Manager rahasia](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) di *Panduan AWS Secrets Manager Pengguna*.

## Perbarui aplikasi Anda untuk mengambil rahasia Secrets Manager secara terprogram
<a name="secrets-app-secrets-manager-update-app"></a>

Anda dapat mengambil rahasia dengan panggilan ke Secrets Manager APIs langsung dari aplikasi Anda. Untuk selengkapnya, lihat [Mengambil rahasia dari AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets.html) *Panduan AWS Secrets Manager Pengguna*.

Untuk mengambil data sensitif yang disimpan di dalam AWS Secrets Manager, lihat [Contoh kode untuk AWS Secrets Manager digunakan AWS SDKs di Pustaka](https://docs.aws.amazon.com/code-library/latest/ug/secrets-manager_code_examples.html) *Kode Contoh Kode AWS SDK*.

# Pass Systems Manager Parameter Simpan rahasia secara terprogram di Amazon ECS
<a name="secrets-app-ssm-paramstore"></a>

Systems Manager Parameter Store menyediakan penyimpanan dan pengelolaan rahasia yang aman. Anda dapat menyimpan data seperti password, string database, instans EC2 dan IDs AMI IDs, dan kode lisensi sebagai nilai parameter, bukan hardcoding informasi ini dalam aplikasi Anda. Anda dapat menyimpan nilai sebagai teks biasa atau data terenkripsi.

Kami merekomendasikan metode ini untuk mengambil data sensitif karena jika parameter Systems Manager Parameter Store kemudian diperbarui, aplikasi secara otomatis mengambil versi terbaru.

Tinjau pertimbangan berikut sebelum mengamankan data sensitif di Systems Manager Parameter Store.
+ Hanya rahasia yang menyimpan data teks yang didukung. Rahasia yang menyimpan data biner tidak didukung.
+ Gunakan titik akhir VPC antarmuka untuk meningkatkan kontrol keamanan.
+ VPC yang digunakan tugas Anda harus menggunakan resolusi DNS.
+ Untuk tugas yang menggunakan EC2, Anda harus menggunakan variabel konfigurasi agen Amazon ECS `ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE=true` untuk menggunakan fitur ini. Anda dapat menambahkannya ke file `/etc/ecs/ecs.config` selama pembuatan instans kontainer atau Anda dapat menambahkannya ke instans yang ada, lalu memulai ulang agen ECS. Untuk informasi selengkapnya, lihat [Konfigurasi agen kontainer Amazon ECS](ecs-agent-config.md).
+ Definisi tugas Anda harus menggunakan peran tugas dengan izin tambahan untuk Systems Manager Parameter Store. Untuk informasi selengkapnya, lihat [Peran IAM tugas Amazon ECS](task-iam-roles.md).

## Buat parameter
<a name="secrets-app-ssm-paramstore-create-secret"></a>

Anda dapat menggunakan konsol Systems Manager untuk membuat parameter Systems Manager Parameter Store untuk data sensitif Anda. Untuk informasi selengkapnya, lihat [Membuat parameter Systems Manager (konsol)](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-create-console.html) atau [Membuat parameter Systems Manager (AWS CLI)](https://docs.aws.amazon.com/systems-manager/latest/userguide/param-create-cli.html) di *Panduan AWS Systems Manager Pengguna*.

## Perbarui aplikasi Anda untuk mengambil rahasia Systems Manager Parameter Store secara terprogram
<a name="secrets-app-ssm-paramstore-update-app"></a>

Untuk mengambil data sensitif yang disimpan dalam parameter Systems Manager Parameter Store, lihat [Contoh kode untuk Systems Manager yang digunakan AWS SDKs](https://docs.aws.amazon.com/code-library/latest/ug/ssm_code_examples.html) di *AWS SDK Code Examples Code Library*.

# Lulus rahasia Secrets Manager melalui variabel lingkungan Amazon ECS
<a name="secrets-envvar-secrets-manager"></a>

Ketika Anda menyuntikkan rahasia sebagai variabel lingkungan, Anda dapat menentukan isi lengkap rahasia, kunci JSON tertentu dalam rahasia. Hal ini membantu Anda mengontrol data sensitif yang diekspos ke kontainer Anda. Untuk informasi selengkapnya tentang pembuatan versi rahasia, lihat [Apa yang ada di rahasia Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/whats-in-a-secret.html#term_version) dalam *AWS Secrets Manager User Guide*.

Berikut ini harus dipertimbangkan saat menggunakan variabel lingkungan untuk menyuntikkan rahasia Secrets Manager ke dalam wadah.
+ Data sensitif disuntikkan ke dalam kontainer Anda ketika kontainer awalnya dimulai. Jika rahasia kemudian diperbarui atau diputar, kontainer tidak akan menerima nilai yang diperbarui secara otomatis. Anda harus menjalankan tugas baru atau jika tugas Anda adalah bagian dari layanan Anda dapat memperbarui layanan dan menggunakan **Memaksa deployment baru** untuk memaksa layanan untuk meluncurkan tugas baru.
+ Aplikasi yang berjalan pada container dan container log dan debugging tools memiliki akses ke variabel lingkungan.
+ Untuk tugas Amazon ECS aktif AWS Fargate, pertimbangkan hal berikut:
  + Untuk menyuntikkan konten penuh rahasia sebagai variabel lingkungan atau dalam konfigurasi log, Anda harus menggunakan versi `1.3.0` platform atau yang lebih baru. Untuk informasi, lihat [Versi platform Fargate untuk Amazon ECS](platform-fargate.md).
  + Untuk menyuntikkan kunci JSON tertentu atau versi rahasia sebagai variabel lingkungan atau dalam konfigurasi log, Anda harus menggunakan versi platform `1.4.0` atau yang lebih baru (Linux) atau `1.0.0` (Windows). Untuk informasi, lihat [Versi platform Fargate untuk Amazon ECS](platform-fargate.md).
+ Untuk tugas Amazon ECS di EC2, hal-hal berikut harus dipertimbangkan:
  + Untuk menyuntikkan rahasia menggunakan kunci JSON atau versi rahasia tertentu, instans kontainer Anda harus memiliki versi `1.37.0` agen kontainer atau yang lebih baru. Namun, kami merekomendasikan untuk menggunakan versi agen kontainer terbaru. Untuk informasi tentang memeriksa versi agen Anda dan memperbarui ke versi terbaru, lihat [Memperbarui agen kontainer Amazon ECS](ecs-agent-update.md).

    Untuk menyuntikkan konten penuh rahasia sebagai variabel lingkungan atau untuk menyuntikkan rahasia dalam konfigurasi log, instans kontainer Anda harus memiliki versi `1.22.0` agen kontainer atau yang lebih baru.
+ Gunakan titik akhir VPC antarmuka untuk meningkatkan kontrol keamanan dan terhubung ke Secrets Manager melalui subnet pribadi. Anda harus membuat titik akhir VPC antarmuka untuk Secrets Manager. *Untuk informasi tentang titik akhir VPC, lihat Membuat titik akhir [VPC di Panduan Pengguna](https://docs.aws.amazon.com/secretsmanager/latest/userguide/setup-create-vpc.html).AWS Secrets Manager * Untuk informasi selengkapnya tentang menggunakan Secrets Manager dan Amazon VPC, lihat [Cara menyambung ke layanan Secrets Manager dalam Amazon VPC](https://aws.amazon.com/blogs//security/how-to-connect-to-aws-secrets-manager-service-within-a-virtual-private-cloud/).
+ Untuk tugas Windows yang dikonfigurasi untuk menggunakan driver pencatatan `awslogs`, Anda juga harus mengatur variabel lingkungan `ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE` pada instans kontainer Anda. Gunakan sintaks berikut:

  ```
  <powershell>
  [Environment]::SetEnvironmentVariable("ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE", $TRUE, "Machine")
  Initialize-ECSAgent -Cluster <cluster name> -EnableTaskIAMRole -LoggingDrivers '["json-file","awslogs"]'
  </powershell>
  ```
+ Definisi tugas Anda harus menggunakan peran eksekusi tugas dengan izin tambahan untuk Secrets Manager. Untuk informasi selengkapnya, lihat [Peran IAM pelaksanaan tugas Amazon ECS](task_execution_IAM_role.md).

## Buat AWS Secrets Manager rahasianya
<a name="secrets-envvar-secrets-manager-create-secret"></a>

Anda dapat menggunakan konsol Secrets Manager untuk membuat rahasia untuk data sensitif Anda. Untuk informasi selengkapnya, lihat [Membuat AWS Secrets Manager rahasia](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) di *Panduan AWS Secrets Manager Pengguna*.

## Tambahkan variabel lingkungan ke definisi wadah
<a name="secrets-envvar-secrets-manager-update-container-definition"></a>

Dalam ketentuan kontainer Anda, Anda dapat menentukan hal berikut:
+ Objek `secrets` yang berisi nama variabel lingkungan untuk diatur dalam kontainer
+ Amazon Resource Name (ARN) rahasia Secrets Manager
+ Parameter tambahan yang berisi data sensitif untuk hadir ke kontainer

Contoh berikut menunjukkan sintaks lengkap yang harus ditentukan untuk rahasia Secrets Manager.

```
arn:aws:secretsmanager:region:aws_account_id:secret:secret-name:json-key:version-stage:version-id
```

Bagian berikut menjelaskan parameter tambahan. Parameter ini opsional, tetapi jika Anda tidak menggunakannya, Anda harus menyertakan titik dua `:` untuk menggunakan nilai default. Contoh disediakan di bawah ini untuk konteks yang lebih.

`json-key`  
Menentukan nama kunci dalam pasangan kunci-nilai dengan nilai yang ingin Anda tetapkan sebagai nilai variabel lingkungan. Hanya nilai dalam format JSON yang didukung. Jika Anda tidak menentukan kunci JSON, maka konten penuh dari rahasia tersebut akan digunakan.

`version-stage`  
Menentukan label pementasan versi rahasia yang ingin Anda gunakan. Jika label pementasan versi ditentukan, Anda tidak dapat menentukan ID versi. Jika tidak ada tahap versi yang ditentukan, perilaku default adalah untuk mengambil rahasia dengan label pementasan `AWSCURRENT`.  
Label tahapan digunakan untuk melacak berbagai versi rahasia saat diperbarui atau dirotasi. Setiap versi rahasia memiliki satu atau beberapa label tahapan dan satu ID.

`version-id`  
Menentukan pengenal unik dari versi rahasia yang ingin Anda gunakan. Jika ID versi ditentukan, Anda tidak dapat menentukan label pementasan versi. Jika tidak ada ID versi yang ditentukan, perilaku default adalah untuk mengambil rahasia dengan label pementasan `AWSCURRENT`.  
Versi IDs digunakan untuk melacak versi rahasia yang berbeda ketika mereka diperbarui atau diputar. Setiap versi rahasia memiliki satu ID. Untuk informasi selengkapnya, lihat [Syarat dan Konsep Utama AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/terms-concepts.html#term_secret) di *Panduan AWS Secrets Manager Pengguna*.

### Contoh ketentuan kontainer
<a name="secrets-examples"></a>

Contoh berikut menunjukkan cara Anda dapat mereferensikan rahasia Secrets Manager dalam definisi container Anda.

**Example mereferensikan rahasia penuh**  
Berikut ini adalah cuplikan ketentuan tugas yang menunjukkan format ketika mereferensikan teks lengkap dari rahasia Secrets Manager.  

```
{
  "containerDefinitions": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-AbCdEf"
    }]
  }]
}
```
Untuk mengakses nilai rahasia ini dari dalam wadah, Anda perlu memanggil file`$environment_variable_name`.

**Example mereferensikan rahasia lengkap**  
Berikut ini adalah cuplikan definisi tugas yang menunjukkan format saat mereferensikan teks lengkap dari beberapa rahasia Secrets Manager.  

```
{
  "containerDefinitions": [{
     "secrets": [
      {
        "name": "environment_variable_name1",
         "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-AbCdEf"
      },
      {
        "name": "environment_variable_name2",
         "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-abcdef"
      },
      {
        "name": "environment_variable_name3",
        "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-ABCDEF"
      }
    ]
  }]
}
```
Untuk mengakses nilai rahasia ini dari dalam wadah, Anda perlu memanggil`$environment_variable_name1`,`$environment_variable_name2`, dan`$environment_variable_name3`.

**Example mereferensikan kunci tertentu dalam sebuah rahasia**  
Berikut ini menunjukkan contoh output dari [get-secret-value](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-secret-value.html)perintah yang menampilkan isi rahasia bersama dengan label pementasan versi dan ID versi yang terkait dengannya.  

```
{
    "ARN": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf",
    "Name": "appauthexample",
    "VersionId": "871d9eca-18aa-46a9-8785-981ddEXAMPLE",
    "SecretString": "{\"username1\":\"password1\",\"username2\":\"password2\",\"username3\":\"password3\"}",
    "VersionStages": [
        "AWSCURRENT"
    ],
    "CreatedDate": 1581968848.921
}
```
Referensikan kunci tertentu dari output sebelumnya dalam ketentuan kontainer dengan menentukan nama kunci di akhir ARN.  

```
{
  "containerDefinitions": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1::"
    }]
  }]
}
```

**Example mereferensikan versi rahasia tertentu**  
Berikut ini menunjukkan contoh output dari perintah [describe-secret](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/describe-secret.html) yang menampilkan konten rahasia yang tidak terenkripsi bersama dengan metadata untuk semua versi rahasia.  

```
{
    "ARN": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf",
    "Name": "appauthexample",
    "Description": "Example of a secret containing application authorization data.",
    "RotationEnabled": false,
    "LastChangedDate": 1581968848.926,
    "LastAccessedDate": 1581897600.0,
    "Tags": [],
    "VersionIdsToStages": {
        "871d9eca-18aa-46a9-8785-981ddEXAMPLE": [
            "AWSCURRENT"
        ],
        "9d4cb84b-ad69-40c0-a0ab-cead3EXAMPLE": [
            "AWSPREVIOUS"
        ]
    }
}
```
Referensikan label tahapan versi tertentu dari output sebelumnya dalam ketentuan kontainer dengan menentukan nama kunci di akhir ARN.  

```
{
  "containerDefinitions": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf::AWSPREVIOUS:"
    }]
  }]
}
```
Referensikan ID versi tertentu dari output sebelumnya dalam ketentuan kontainer dengan menentukan nama kunci di akhir ARN.  

```
{
  "containerDefinitions": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:::9d4cb84b-ad69-40c0-a0ab-cead3EXAMPLE"
    }]
  }]
}
```

**Example mereferensikan kunci dan label tahapan versi tertentu dari suatu rahasia**  
Bagian berikut menunjukkan cara mereferensikan kunci tertentu dalam rahasia dan label tahapan versi tertentu.  

```
{
  "containerDefinitions": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1:AWSPREVIOUS:"
    }]
  }]
}
```
Untuk menentukan kunci dan versi ID tertentu, gunakan sintaks berikut.  

```
{
  "containerDefinitions": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1::9d4cb84b-ad69-40c0-a0ab-cead3EXAMPLE"
    }]
  }]
}
```

Untuk informasi tentang cara membuat definisi tugas dengan rahasia yang ditentukan dalam variabel lingkungan, lihat[Membuat definisi tugas Amazon ECS menggunakan konsol](create-task-definition.md). 

# Lulus parameter Systems Manager melalui variabel lingkungan Amazon ECS
<a name="secrets-envvar-ssm-paramstore"></a>

Amazon ECS memungkinkan Anda untuk menyuntikkan data sensitif ke dalam container Anda dengan menyimpan data sensitif Anda dalam AWS Systems Manager parameter Parameter Store dan kemudian mereferensikannya dalam definisi container Anda.

Pertimbangkan hal berikut saat menggunakan variabel lingkungan untuk menyuntikkan rahasia Systems Manager ke dalam wadah.
+ Data sensitif disuntikkan ke dalam kontainer Anda ketika kontainer awalnya dimulai. Jika rahasia kemudian diperbarui atau diputar, kontainer tidak akan menerima nilai yang diperbarui secara otomatis. Anda harus menjalankan tugas baru atau jika tugas Anda adalah bagian dari layanan Anda dapat memperbarui layanan dan menggunakan **Memaksa deployment baru** untuk memaksa layanan untuk meluncurkan tugas baru.
+ Untuk tugas Amazon ECS aktif AWS Fargate, hal-hal berikut harus dipertimbangkan:
  + Untuk menyuntikkan konten penuh rahasia sebagai variabel lingkungan atau dalam konfigurasi log, Anda harus menggunakan versi `1.3.0` platform atau yang lebih baru. Untuk informasi, lihat [Versi platform Fargate untuk Amazon ECS](platform-fargate.md).
  + Untuk menyuntikkan kunci JSON tertentu atau versi rahasia sebagai variabel lingkungan atau dalam konfigurasi log, Anda harus menggunakan versi platform `1.4.0` atau yang lebih baru (Linux) atau `1.0.0` (Windows). Untuk informasi, lihat [Versi platform Fargate untuk Amazon ECS](platform-fargate.md).
+ Untuk tugas Amazon ECS di EC2, hal-hal berikut harus dipertimbangkan:
  + Untuk menyuntikkan rahasia menggunakan kunci JSON atau versi rahasia tertentu, instans kontainer Anda harus memiliki versi `1.37.0` agen kontainer atau yang lebih baru. Namun, kami merekomendasikan untuk menggunakan versi agen kontainer terbaru. Untuk informasi tentang memeriksa versi agen Anda dan memperbarui ke versi terbaru, lihat [Memperbarui agen kontainer Amazon ECS](ecs-agent-update.md).

    Untuk menyuntikkan konten penuh rahasia sebagai variabel lingkungan atau untuk menyuntikkan rahasia dalam konfigurasi log, instans kontainer Anda harus memiliki versi `1.22.0` agen kontainer atau yang lebih baru.
+ Gunakan titik akhir VPC antarmuka untuk meningkatkan kontrol keamanan. Anda harus membuat titik akhir VPC antarmuka untuk Systems Manager. *Untuk informasi tentang titik akhir VPC, lihat [Meningkatkan keamanan instans EC2 dengan menggunakan titik akhir VPC untuk Systems](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-create-vpc.html) Manager di Panduan Pengguna.AWS Systems Manager *
+ Definisi tugas Anda harus menggunakan peran eksekusi tugas dengan izin tambahan untuk Systems Manager Parameter Store. Untuk informasi selengkapnya, lihat [Peran IAM pelaksanaan tugas Amazon ECS](task_execution_IAM_role.md).
+ Untuk tugas Windows yang dikonfigurasi untuk menggunakan driver pencatatan `awslogs`, Anda juga harus mengatur variabel lingkungan `ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE` pada instans kontainer Anda. Gunakan sintaks berikut:

  ```
  <powershell>
  [Environment]::SetEnvironmentVariable("ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE", $TRUE, "Machine")
  Initialize-ECSAgent -Cluster <cluster name> -EnableTaskIAMRole -LoggingDrivers '["json-file","awslogs"]'
  </powershell>
  ```

## Buat parameter Systems Manager
<a name="secrets-envvar-ssm-paramstore-create-parameter"></a>

Anda dapat menggunakan konsol Systems Manager untuk membuat parameter Systems Manager Parameter Store untuk data sensitif Anda. Untuk informasi selengkapnya, lihat [Membuat parameter Systems Manager (konsol)](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-create-console.html) atau [Membuat parameter Systems Manager (AWS CLI)](https://docs.aws.amazon.com/systems-manager/latest/userguide/param-create-cli.html) di *Panduan AWS Systems Manager Pengguna*.

## Tambahkan variabel lingkungan ke definisi wadah
<a name="secrets-ssm-paramstore-update-container-definition"></a>

Dalam definisi kontainer Anda dalam definisi tugas, tentukan `secrets` dengan nama variabel lingkungan yang akan disetel dalam wadah dan ARN lengkap dari parameter Systems Manager Parameter Store yang berisi data sensitif yang akan ditampilkan ke wadah. Untuk informasi selengkapnya, lihat [secrets](task_definition_parameters.md#ContainerDefinition-secrets).

Berikut ini adalah cuplikan definisi tugas yang menunjukkan format saat mereferensikan parameter Systems Manager Parameter Store. Jika parameter Systems Manager Parameter Store ada di Region yang sama dengan tugas yang Anda luncurkan, maka Anda dapat menggunakan ARN lengkap atau nama parameter. Jika parameter ada di Wilayah yang berbeda, maka tentukan ARN lengkap.

```
{
  "containerDefinitions": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
    }]
  }]
}
```

Untuk informasi tentang cara membuat definisi tugas dengan rahasia yang ditentukan dalam variabel lingkungan, lihat[Membuat definisi tugas Amazon ECS menggunakan konsol](create-task-definition.md).

## Perbarui aplikasi Anda untuk mengambil rahasia Systems Manager Parameter Store secara terprogram
<a name="secrets-ssm-paramstore-update-app"></a>

Untuk mengambil data sensitif yang disimpan dalam parameter Systems Manager Parameter Store, lihat [Contoh kode untuk Systems Manager yang digunakan AWS SDKs](https://docs.aws.amazon.com/code-library/latest/ug/ssm_code_examples.html) di *AWS SDK Code Examples Code Library*.

# Lulus rahasia untuk konfigurasi logging Amazon ECS
<a name="secrets-logconfig"></a>

Anda dapat menggunakan `secretOptions` parameter `logConfiguration` untuk meneruskan data sensitif yang digunakan untuk logging.

Anda dapat menyimpan rahasia di Secrets Manager atau Systems Manager.

## Gunakan Secrets Manager
<a name="secrets-logconfig-secrets-manager"></a>

Dalam definisi kontainer Anda, saat menentukan a, `logConfiguration` Anda dapat menentukan `secretOptions` dengan nama opsi driver log untuk disetel dalam wadah dan ARN lengkap dari rahasia Secrets Manager yang berisi data sensitif untuk disajikan ke wadah. Untuk informasi selengkapnya tentang membuat rahasia, lihat [Membuat AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

Berikut ini adalah cuplikan definisi tugas yang menunjukkan format saat mereferensikan rahasia Secrets Manager.

```
{
  "containerDefinitions": [{
    "logConfiguration": [{
      "logDriver": "splunk",
      "options": {
        "splunk-url": "https://your_splunk_instance:8088"
      },
      "secretOptions": [{
        "name": "splunk-token",
        "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-AbCdEf"
      }]
    }]
  }]
}
```

## Tambahkan variabel lingkungan ke definisi wadah
<a name="secrets-envvar-ssm-paramstore-update-container-definition"></a>

Dalam ketentuan kontainer Anda, tentukan `secrets` dengan nama variabel lingkungan yang akan ditetapkan dalam kontainer dan ARN lengkap parameter Systems Manager Parameter Store yang berisi data sensitif untuk diberikan ke kontainer. Untuk informasi selengkapnya, lihat [secrets](task_definition_parameters.md#ContainerDefinition-secrets).

Berikut ini adalah cuplikan definisi tugas yang menunjukkan format saat mereferensikan parameter Systems Manager Parameter Store. Jika parameter Systems Manager Parameter Store ada di Region yang sama dengan tugas yang Anda luncurkan, maka Anda dapat menggunakan ARN lengkap atau nama parameter. Jika parameter ada di Wilayah yang berbeda, maka tentukan ARN lengkap.

```
{
  "containerDefinitions": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
    }]
  }]
}
```

Untuk informasi tentang cara membuat definisi tugas dengan rahasia yang ditentukan dalam variabel lingkungan, lihat[Membuat definisi tugas Amazon ECS menggunakan konsol](create-task-definition.md).

## Gunakan Systems Manager
<a name="secrets-logconfig-ssm-paramstore"></a>

Anda dapat menyuntikkan data sensitif dalam konfigurasi log. Dalam ketentuan kontainer Anda, ketika menentukan `logConfiguration`, Anda dapat menentukan `secretOptions` dengan nama opsi driver log yang kan ditetapkan dalam kontainer dan ARN lengkap parameter Systems Manager Parameter Store yang berisi data sensitif untuk diberikan ke kontainer.

**penting**  
Jika parameter Systems Manager Parameter Store ada di Region yang sama dengan tugas yang Anda luncurkan, maka Anda dapat menggunakan ARN lengkap atau nama parameter. Jika parameter ada di Wilayah yang berbeda, maka tentukan ARN lengkap.

Berikut ini adalah cuplikan definisi tugas yang menunjukkan format saat mereferensikan parameter Systems Manager Parameter Store.

```
{
  "containerDefinitions": [{
    "logConfiguration": [{
      "logDriver": "fluentd",
      "options": {
        "tag": "fluentd demo"
      },
      "secretOptions": [{
        "name": "fluentd-address",
        "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter:/parameter_name"
      }]
    }]
  }]
}
```

# Menentukan data sensitif menggunakan rahasia Secrets Manager di Amazon ECS
<a name="specifying-sensitive-data-tutorial"></a>

Amazon ECS memungkinkan Anda untuk menyuntikkan data sensitif ke dalam container Anda dengan menyimpan data sensitif Anda dalam AWS Secrets Manager rahasia dan kemudian mereferensikannya dalam definisi container Anda. Untuk informasi selengkapnya, lihat [Meneruskan data sensitif ke wadah Amazon ECS](specifying-sensitive-data.md).

Pelajari cara membuat rahasia Secrets Manager, mereferensikan rahasia dalam definisi tugas Amazon ECS, lalu verifikasi itu berhasil dengan menanyakan variabel lingkungan di dalam wadah yang menunjukkan konten rahasia.

## Prasyarat
<a name="specifying-sensitive-data-tutorial-prereqs"></a>

Jika mengikuti tutorial ini, berarti prasyarat berikut telah selesai:
+ Langkah-langkah di [Siapkan untuk menggunakan Amazon ECS](get-set-up-for-amazon-ecs.md) telah selesai.
+ Pengguna Anda memiliki izin IAM yang diperlukan untuk membuat Secrets Manager dan sumber daya Amazon ECS.

## Langkah 1: Buat rahasia Secrets Manager
<a name="specifying-sensitive-data-tutorial-create-secret"></a>

Anda dapat menggunakan konsol Secrets Manager untuk membuat rahasia untuk data sensitif Anda. Dalam tutorial ini kita akan menciptakan rahasia dasar untuk menyimpan nama pengguna dan kata sandi untuk mereferensi nanti dalam sebuah kontainer. Untuk informasi selengkapnya, lihat [Membuat AWS Secrets Manager rahasia](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) di *Panduan AWS Secrets Manager Pengguna*.

** key/value Pasangan yang akan disimpan dalam rahasia ini** adalah nilai variabel lingkungan dalam wadah Anda di akhir tutorial.

Simpan **ARN Rahasia** untuk referensi dalam kebijakan IAM eksekusi tugas Anda dan definisi tugas di langkah selanjutnya.

## Langkah 2: Tambahkan izin rahasia ke peran eksekusi tugas
<a name="specifying-sensitive-data-tutorial-update-iam"></a>

Agar Amazon ECS dapat mengambil data sensitif dari rahasia Secrets Manager Anda, Anda harus memiliki izin rahasia untuk peran eksekusi tugas. Untuk informasi selengkapnya, lihat [Izin Secrets Manager atau Systems Manager](task_execution_IAM_role.md#task-execution-secrets).

## Langkah 3: Membuat sebuah penetapan tugas
<a name="specifying-sensitive-data-tutorial-create-taskdef"></a>

Anda dapat menggunakan konsol Amazon ECS untuk membuat definisi tugas yang mereferensikan rahasia Secrets Manager.

**Untuk membuat ketentuan tugas yang menetapkan rahasia**

Gunakan konsol IAM untuk memperbarui peran eksekusi tugas Anda dengan izin yang diperlukan.

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

1. Di panel navigasi, pilih **Definisi tugas**.

1. Pilih **Buat definisi tugas baru**, **Buat definisi tugas baru dengan JSON**.

1. Di kotak editor JSON, masukkan teks JSON definisi tugas berikut, pastikan Anda menentukan ARN lengkap rahasia Secrets Manager yang Anda buat di langkah 1 dan peran eksekusi tugas yang Anda perbarui di langkah 2. Pilih **Simpan**.

1. 

   ```
   {
       "executionRoleArn": "arn:aws:iam::aws_account_id:role/ecsTaskExecutionRole",
       "containerDefinitions": [
           {
               "entryPoint": [
                   "sh",
                   "-c"
               ],
               "portMappings": [
                   {
                       "hostPort": 80,
                       "protocol": "tcp",
                       "containerPort": 80
                   }
               ],
               "command": [
                   "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' >  /usr/local/apache2/htdocs/index.html && httpd-foreground\""
               ],
               "cpu": 10,
               "secrets": [
                   {
                       "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:username_value",
                       "name": "username_value"
                   }
               ],
               "memory": 300,
               "image": "public.ecr.aws/docker/library/httpd:2.4",
               "essential": true,
               "name": "ecs-secrets-container"
           }
       ],
       "family": "ecs-secrets-tutorial"
   }
   ```

1. Pilih **Buat**.

## Langkah 4: Buat cluster
<a name="specifying-sensitive-data-tutorial-create-cluster"></a>

Anda dapat menggunakan konsol Amazon ECS untuk membuat klaster yang berisi instance container untuk menjalankan tugas. Jika Anda memiliki klaster yang ada dengan setidaknya satu instans kontainer yang terdaftar untuk itu dengan sumber daya yang tersedia untuk menjalankan satu instans dari ketentuan tugas yang dibuat untuk tutorial ini Anda dapat melompat ke langkah berikutnya.

Untuk tutorial ini kita akan membuat cluster dengan satu instance `t2.micro` container menggunakan Amazon ECS Amazon Linux 2 AMI yang dioptimalkan Amazon ECS.

Untuk informasi tentang cara membuat cluster untuk EC2, lihat[Membuat cluster Amazon ECS untuk beban kerja Amazon EC2](create-ec2-cluster-console-v2.md).

## Langkah 5: Jalankan tugas
<a name="specifying-sensitive-data-tutorial-run-task"></a>

Anda dapat menggunakan konsol Amazon ECS untuk menjalankan tugas menggunakan definisi tugas yang Anda buat. Untuk tutorial ini kita akan menjalankan tugas menggunakan EC2, menggunakan cluster yang kita buat pada langkah sebelumnya. 

Untuk informasi tentang cara menjalankan tugas, lihat[Menjalankan aplikasi sebagai tugas Amazon ECS](standalone-task-create.md).

## Langkah 6: Verifikasi
<a name="specifying-sensitive-data-tutorial-verify"></a>

Anda dapat memverifikasi bahwa semua langkah berhasil diselesaikan dan variabel lingkungan dibuat dengan benar dalam kontainer Anda menggunakan langkah-langkah berikut.

**Untuk memverifikasi bahwa variabel lingkungan telah dibuat**

1. Cari IP publik atau alamat DNS untuk instans kontainer Anda.

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

   1. Di panel navigasi, pilih **Cluster**, lalu pilih cluster yang Anda buat.

   1. Pilih **Infrastruktur**, lalu pilih instance container.

   1. Rekam **IP Publik** atau **DNS Publik** untuk instans Anda.

1. Jika Anda menggunakan komputer macOS atau Linux, sambungkan ke instans Anda dengan perintah berikut, ganti jalur ke kunci pribadi dan alamat publik untuk instans Anda:

   ```
   $ ssh -i /path/to/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com
   ```

   Untuk informasi selengkapnya tentang menggunakan komputer Windows, lihat [Connect ke instans Linux menggunakan PuTTY](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-linux-inst-from-windows.html) di Panduan Pengguna *Amazon EC2*.
**penting**  
Untuk informasi selengkapnya tentang masalah apa pun saat menyambung ke instans, lihat [Memecahkan Masalah Menyambung ke Instans Anda](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html) di Panduan Pengguna *Amazon EC2*.

1. Cantumkan kontainer yang berjalan pada instans. Catat ID kontainer untuk kontainer `ecs-secrets-tutorial`.

   ```
   docker ps
   ```

1. Terhubung ke kontainer `ecs-secrets-tutorial` menggunakan ID kontainer dari output dari langkah sebelumnya.

   ```
   docker exec -it container_ID /bin/bash
   ```

1. Gunakan perintah `echo` untuk mencetak nilai variabel lingkungan.

   ```
   echo $username_value
   ```

   Jika tutorial berhasil, Anda akan melihat output sebagai berikut:

   ```
   password_value
   ```
**catatan**  
Atau, Anda dapat mencantumkan semua variabel lingkungan dalam wadah Anda menggunakan perintah `env` (atau `printenv`).

## Langkah 7: Bersihkan
<a name="specifying-sensitive-data-tutorial-cleanup"></a>

Setelah selesai dengan tutorial ini, Anda harus membersihkan sumber daya yang terkait untuk menghindari timbulnya biaya untuk sumber daya yang tidak terpakai.

**Untuk membersihkan sumber daya**

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

1. Pada panel navigasi, silakan pilih **Klaster**.

1. Pada halaman **Clusters**, pilih cluster.

1. Pilih **Hapus klaster**. 

1. Di kotak konfirmasi, masukkan **hapus *cluster name***, lalu pilih **Hapus**.

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

1. Di panel navigasi, pilih **Peran**. 

1. Cari daftar peran untuk `ecsTaskExecutionRole` dan pilih peran itu.

1. Pilih **Izin**, lalu pilih **X** di sebelah **ECSSecretsTutorial**. Pilih **Hapus**.

1. Buka konsol Secrets Manager di [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Pilih rahasia **username\$1value** yang Anda buat dan pilih **Tindakan**, **Hapus rahasia**.

# Parameter definisi tugas Amazon ECS untuk Instans Terkelola Amazon ECS
<a name="task_definition_parameters-managed-instances"></a>

Definisi tugas dibagi menjadi beberapa bagian terpisah: keluarga tugas, peran tugas AWS Identity and Access Management (IAM), mode jaringan, definisi wadah, volume, dan kapasitas. Definisi keluarga dan wadah diperlukan dalam definisi tugas. Sebaliknya, peran tugas, mode jaringan, volume, dan kapasitas adalah opsional.

Anda dapat menggunakan parameter ini dalam file JSON untuk mengonfigurasi definisi tugas Anda.

Berikut ini adalah deskripsi yang lebih rinci untuk setiap parameter definisi tugas untuk Instans Terkelola Amazon ECS.

## Rangkaian
<a name="family-managed-instances"></a>

`family`  
Tipe: String  
Diperlukan: Ya  
Ketika Anda mendaftarkan ketentuan tugas, Anda memberikan sebuah famili, yang mirip dengan nama untuk beberapa versi ketentuan tugas, yang ditentukan dengan nomor revisi. Definisi tugas pertama yang terdaftar ke dalam keluarga tertentu diberikan revisi 1, dan definisi tugas apa pun yang terdaftar setelah itu diberi nomor revisi berurutan.

## Kapasitas
<a name="requires_compatibilities-managed-instances"></a>

Saat mendaftarkan definisi tugas, Anda dapat menentukan kapasitas yang harus divalidasi oleh Amazon ECS terhadap definisi tugas. Jika definisi tugas tidak memvalidasi terhadap kompatibilitas yang ditentukan, pengecualian klien dikembalikan. Untuk informasi selengkapnya, lihat [jenis peluncuran Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html).

Parameter berikut diperbolehkan dalam definisi tugas.

`requiresCompatibilities`  
Tipe: Array string  
Wajib: Tidak  
Nilai yang Valid: `MANAGED_INSTANCES`  
Kapasitas untuk memvalidasi definisi tugas terhadap. Ini memulai pemeriksaan untuk memastikan bahwa semua parameter yang digunakan dalam definisi tugas memenuhi persyaratan untuk Instans Terkelola Amazon ECS.

## Peran tugas
<a name="task_role_arn-managed-instances"></a>

`taskRoleArn`  
Tipe: String  
Wajib: Tidak  
Saat mendaftarkan definisi tugas, Anda dapat memberikan peran tugas untuk peran IAM yang memungkinkan kontainer dalam izin tugas memanggil AWS APIs yang ditentukan dalam kebijakan terkait atas nama Anda. Untuk informasi selengkapnya, lihat [Peran IAM tugas Amazon ECS](task-iam-roles.md).

## Peran eksekusi tugas
<a name="execution_role_arn-managed-instances"></a>

`executionRoleArn`  
Tipe: String  
Wajib: Bersyarat  
Nama Sumber Daya Amazon (ARN) dari peran eksekusi tugas yang memberikan izin agen penampung Amazon ECS untuk melakukan panggilan AWS API atas nama Anda. Untuk informasi selengkapnya, lihat [Peran IAM pelaksanaan tugas Amazon ECS](task_execution_IAM_role.md).  
IAM role eksekusi tugas diperlukan sesuai dengan persyaratan tugas Anda. Peran ini diperlukan untuk menarik gambar ECR pribadi dan menggunakan driver `awslogs` log.

## Mode jaringan
<a name="network_mode-managed-instances"></a>

`networkMode`  
Tipe: String  
Wajib: Tidak  
Default: `awsvpc`  
Mode jaringan yang digunakan untuk wadah dalam tugas. Untuk tugas Amazon ECS yang di-host di Instans Terkelola Amazon ECS, nilai yang valid adalah dan. `awsvpc` `host` Jika tidak ada mode jaringan yang ditentukan, mode jaringan default adalah`awsvpc`.  
Jika mode jaringan`host`, tugas melewati isolasi jaringan dan kontainer menggunakan tumpukan jaringan host secara langsung.  
Saat menjalankan tugas yang menggunakan mode `host` jaringan, jangan jalankan kontainer menggunakan pengguna root (UID 0) untuk keamanan yang lebih baik. Sebagai praktik terbaik keamanan, selalu gunakan pengguna non-root.
Jika mode jaringan adalah `awsvpc`, tugas dialokasikan sebagai antarmuka jaringan elastis, dan Anda harus menentukan `NetworkConfiguration` ketika Anda membuat layanan atau menjalankan tugas dengan ketentuan tugas. Untuk informasi selengkapnya, lihat [Jaringan tugas Amazon ECS untuk Instans Terkelola Amazon ECS](managed-instance-networking.md).  
Mode `host` dan `awsvpc` jaringan menawarkan kinerja jaringan tertinggi untuk kontainer karena mereka menggunakan tumpukan jaringan Amazon EC2. Dengan mode `host` dan `awsvpc` jaringan, port kontainer yang terbuka dipetakan langsung ke port host yang sesuai (untuk mode `host` jaringan) atau port antarmuka elastis network yang terpasang (untuk mode `awsvpc` jaringan). Karena itu, Anda tidak dapat menggunakan pemetaan port host dinamis.

## Platform runtime
<a name="runtime-platform-managed-instances"></a>

`operatingSystemFamily`  
Tipe: String  
Wajib: Tidak  
Standar: LINUX  
Saat Anda mendaftarkan definisi tugas, Anda menentukan keluarga sistem operasi.   
Nilai yang valid untuk bidang ini adalah`LINUX`.  
Semua definisi tugas yang digunakan dalam layanan harus memiliki nilai yang sama untuk parameter ini.  
Ketika definisi tugas adalah bagian dari layanan, nilai ini harus sesuai dengan `platformFamily` nilai layanan.

`cpuArchitecture`  
Tipe: String  
Wajib: Bersyarat  
Saat Anda mendaftarkan definisi tugas, Anda menentukan arsitektur CPU. Nilai yang valid adalah `X86_64` dan `ARM64`.  
Jika Anda tidak menentukan nilai, Amazon ECS mencoba menempatkan tugas pada arsitektur CPU yang tersedia berdasarkan konfigurasi penyedia kapasitas. Untuk memastikan bahwa tugas ditempatkan pada arsitektur CPU tertentu, tentukan nilai untuk `cpuArchitecture` dalam definisi tugas.  
Semua definisi tugas yang digunakan dalam layanan harus memiliki nilai yang sama untuk parameter ini.  
Untuk informasi selengkapnya tentang `ARM64`, lihat [Definisi tugas Amazon ECS untuk beban kerja ARM 64-bit](ecs-arm64.md).

## Ukuran tugas
<a name="task_size-managed-instances"></a>

Saat Anda mendaftarkan definisi tugas, Anda dapat menentukan total CPU dan memori yang digunakan untuk tugas tersebut. Hal ini terpisah dari nilai `cpu` dan `memory` pada tingkat ketentuan kontainer. Untuk tugas yang di-host di instans Amazon EC2, bidang ini bersifat opsional.

**catatan**  
Tingkat tugas CPU dan memori parameter diabaikan untuk Windows kontainer. Kami merekomendasikan penentuan sumber daya tingkat kontainer untuk Windows kontainer.

`cpu`  
Tipe: String  
Wajib: Bersyarat  
Batas tegas unit CPU untuk hadir untuk tugas tersebut. Anda dapat menentukan nilai CPU dalam file JSON sebagai string dalam unit CPU atau virtual CPUs (vCPUs). Misalnya, Anda dapat menentukan nilai CPU baik seperti `1024` dalam unit CPU atau `1 vCPU` di vCPUs. Ketika definisi tugas terdaftar, nilai vCPU dikonversi ke bilangan bulat yang menunjukkan unit CPU.  
Bidang ini bersifat opsional. Jika klaster Anda tidak memiliki instans kontainer yang terdaftar dengan unit CPU yang diminta, tugas akan gagal. Nilai yang didukung adalah antara `0.125` v CPUs dan `10` vCPUs.

`memory`  
Tipe: String  
Wajib: Bersyarat  
Batas memori yang sulit untuk disajikan pada tugas. Anda dapat menentukan nilai memori dalam definisi tugas sebagai string dalam mebibytes (MiB) atau gigabyte (GB). Misalnya, Anda dapat menentukan nilai memori baik seperti `3072` di MiB atau `3 GB` GB. Ketika ketentuan tugas terdaftar, nilai GB dikonversi ke integer menunjukkan MiB.  
Bidang ini bersifat opsional dan nilai apapun dapat digunakan. Jika nilai memori tingkat tugas ditentukan, maka nilai memori tingkat kontainer adalah opsional. Jika klaster Anda tidak memiliki instance kontainer terdaftar dengan memori yang diminta tersedia, tugas gagal. Anda dapat memaksimalkan pemanfaatan sumber daya Anda dengan menyediakan tugas Anda sebanyak mungkin memori untuk jenis instans tertentu. Untuk informasi selengkapnya, lihat [Memesan memori instans wadah Amazon ECS Linux](memory-management.md).

## Parameter ketentuan tugas lainnya
<a name="other_task_definition_params-managed-instances"></a>

Parameter definisi tugas berikut dapat digunakan saat mendaftarkan definisi tugas di konsol Amazon ECS dengan menggunakan opsi **Configure via JSON**. Untuk informasi selengkapnya, lihat [Membuat definisi tugas Amazon ECS menggunakan konsol](create-task-definition.md).

**Topics**
+ [

### Penyimpanan sementara
](#task_definition_ephemeralStorage-managed-instances)
+ [

### Mode IPC
](#task_definition_ipcmode-managed-instances)
+ [

### Mode PID
](#task_definition_pidmode-managed-instances)
+ [

### Konfigurasi proxy
](#proxyConfiguration-managed-instances)
+ [

### Tag
](#tags-managed-instances)
+ [

### Akselerator Elastic Inference (usang)
](#elastic-Inference-accelerator-managed-instances)
+ [

### Kendala penempatan
](#constraints-managed-instances)
+ [

### volume
](#volumes-managed-instances)

### Penyimpanan sementara
<a name="task_definition_ephemeralStorage-managed-instances"></a>

`ephemeralStorage`  
Parameter ini tidak didukung untuk tugas yang berjalan di Instans Terkelola Amazon ECS.
Tipe: Objek [EphemeralStorage](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_EphemeralStorage.html)  
Wajib: Tidak  
Jumlah penyimpanan sementara (dalam GB) untuk dialokasikan untuk tugas tersebut. Parameter ini digunakan untuk memperluas jumlah total penyimpanan sementara yang tersedia, di luar jumlah default, untuk tugas yang di-host. AWS Fargate Untuk informasi selengkapnya, lihat [Gunakan bind mount dengan Amazon ECS](bind-mounts.md).

### Mode IPC
<a name="task_definition_ipcmode-managed-instances"></a>

`ipcMode`  
Parameter ini tidak didukung untuk tugas yang berjalan di Instans Terkelola Amazon ECS.
Tipe: String  
Wajib: Tidak  
Namespace sumber daya IPC yang digunakan untuk kontainer dalam tugas. Nilai yang valid adalah `host`, `task`, atau `none`. Jika `host` ditentukan, maka semua kontainer yang berada dalam tugas yang menentukan mode `host` IPC pada instance kontainer yang sama berbagi sumber daya IPC yang sama dengan instans Amazon EC2 host. Jika `task` ditentukan, semua kontainer yang berada dalam tugas yang ditentukan berbagi sumber daya IPC yang sama. Jika `none` ditentukan, maka sumber daya IPC dalam kontainer tugas bersifat privat dan tidak dibagi dengan kontainer lain dalam tugas atau pada instans kontainer. Jika tidak ada nilai yang ditentukan, maka berbagi namespace sumber daya IPC bergantung pada konfigurasi runtime container.

### Mode PID
<a name="task_definition_pidmode-managed-instances"></a>

`pidMode`  
Tipe: String  
Wajib: Tidak  
Namspace proses yang akan digunakan untuk kontainer dalam tugas. Nilai yang valid adalah `host` atau `task`. Jika `host` ditentukan, maka semua container yang berada dalam tugas yang menentukan mode `host` PID pada instance container yang sama berbagi namespace proses yang sama dengan instans Amazon EC2 host. Jika `task` ditentukan, semua kontainer yang berada dalam tugas yang ditentukan berbagi namespace proses yang sama. Jika tidak ada nilai yang ditentukan, defaultnya adalah namespace privat.  
Jika mode `host` PID digunakan, ada risiko tinggi eksposur namespace proses yang tidak diinginkan.

### Konfigurasi proxy
<a name="proxyConfiguration-managed-instances"></a>

`proxyConfiguration`  
Parameter ini tidak didukung untuk tugas yang berjalan di Instans Terkelola Amazon ECS.
Tipe: Objek [ProxyConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ProxyConfiguration.html)  
Wajib: Tidak  
Detail konfigurasi untuk proxy App Mesh.

### Tag
<a name="tags-managed-instances"></a>

Metadata yang Anda terapkan pada definisi tugas untuk membantu Anda mengkategorikan dan mengaturnya. Setiap tanda terdiri dari kunci dan nilai opsional. Anda mendefinisikan keduanya.

Batasan dasar berikut berlaku untuk tanda:
+ Jumlah maksimum tanda per sumber daya – 50
+ Untuk setiap sumber daya, setiap kunci tanda harus unik, dan setiap kunci tanda hanya dapat memiliki satu nilai.
+ Panjang kunci maksimum - 128 karakter Unicode dalam UTF-8
+ Panjang nilai maksimum - 256 karakter Unicode dalam UTF-8
+ Jika skema penandaan Anda digunakan di beberapa layanan dan sumber daya, ingatlah bahwa layanan lain mungkin memiliki pembatasan pada karakter yang diizinkan. Karakter-karakter yang diizinkan secara umum adalah: huruf, angka, dan spasi yang dapat diwakili dalam UTF-8, beserta karakter-karakter berikut: \$1 - = . \$1 : / @.
+ Kunci dan nilai tag peka terhadap huruf besar dan kecil.
+ Jangan gunakan`aws:`,`AWS:`, atau kombinasi huruf besar atau kecil seperti awalan untuk kunci atau nilai seperti yang dicadangkan untuk digunakan. AWS Anda tidak dapat mengedit atau menghapus kunci atau nilai tanda dengan prefiks ini. Tanda dengan prefiks ini tidak dihitung, berlawanan dengan tanda milik Anda per batas sumber daya.

`key`  
Tipe: String  
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  
Wajib: Tidak  
Bagian opsional pasangan nilai kunci yang membentuk tanda. Nilai bertindak sebagai deskriptor dalam kategori tanda (kunci).

### Akselerator Elastic Inference (usang)
<a name="elastic-Inference-accelerator-managed-instances"></a>

**catatan**  
Amazon Elastic Inference (EI) sudah tidak tersedia bagi pelanggan.

`inferenceAccelerator`  
Parameter ini tidak didukung untuk tugas yang berjalan di Instans Terkelola Amazon ECS.
Tipe: Objek [InferenceAccelerator](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_InferenceAccelerator.html)  
Wajib: Tidak  
Akselerator Elastic Inference digunakan untuk kontainer dalam tugas.

### Kendala penempatan
<a name="constraints-managed-instances"></a>

`placementConstraints`  
Tipe: Array objek [TaskDefinitionPlacementConstraint](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TaskDefinitionPlacementConstraint.html)  
Wajib: Tidak  
Array objek kendala penempatan untuk digunakan untuk tugas. Anda dapat menentukan maksimal 10 batasan per tugas (batas ini termasuk batasan dalam ketentuan tugas dan yang ditentukan pada waktu aktif).  
Amazon ECS mendukung batasan `distinctInstace` dan `memberOf` penempatan untuk tugas yang berjalan di Instans Terkelola Amazon ECS. Atribut berikut didukung untuk tugas yang menggunakan batasan `memberOf` penempatan:  
+ `ecs.subnet-id`
+ `ecs.availability-zone`
+ `ecs.cpu-architecture`
+ `ecs.instance-type`
Untuk informasi selengkapnya tentang batasan penempatan, lihat. [Menentukan Instans Kontainer Mana yang Digunakan Amazon ECS untuk Tugas](task-placement-constraints.md)

### volume
<a name="volumes-managed-instances"></a>

Saat Anda mendaftarkan definisi tugas, Anda dapat menentukan daftar volume untuk tugas Anda secara opsional. Ini memungkinkan Anda untuk menggunakan volume data dalam tugas Anda.

Untuk informasi selengkapnya tentang jenis volume dan parameter lainnya, lihat[Opsi penyimpanan untuk tugas Amazon ECS](using_data_volumes.md).

`name`  
Tipe: String  
Diperlukan: Ya  
Nama volume. Hingga 255 huruf (huruf besar dan kecil), angka, dan tanda hubung diperbolehkan. Nama ini direferensikan di parameter `sourceVolume` dari `mountPoints` ketentuan kontainer.

`host`  
Tipe: Objek [HostVolumeProperties](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_HostVolumeProperties.html)  
Wajib: Tidak  
Parameter ini ditentukan saat Anda menggunakan volume host bind mount. Isi `host` parameter menentukan apakah volume host mount bind Anda tetap ada pada instance container host dan tempat penyimpanannya. Jika `host` parameter kosong, maka sistem menetapkan jalur host untuk volume data Anda. Namun, data tidak dijamin akan bertahan setelah kontainer yang terkait dengannya berhenti berjalan.    
`sourcePath`  
Tipe: String  
Wajib: Tidak  
Ketika `host` parameter digunakan, tentukan a `sourcePath` untuk mendeklarasikan jalur pada instance host yang disajikan ke wadah. Jika parameter ini kosong, maka sistem menetapkan jalur host untuk Anda. Jika `host` parameter berisi lokasi `sourcePath` file, maka volume data tetap ada di lokasi yang ditentukan pada instance host sampai Anda menghapusnya secara manual. Jika `sourcePath` nilai tidak ada pada instance host, sistem membuatnya. Jika lokasinya memang ada, konten dari folder jalur sumber diekspor.  
Di Instans Terkelola Amazon ECS, bagian dari sistem file host bersifat hanya-baca. `sourcePath`Harus menunjuk ke direktori yang dapat ditulis seperti `/var` atau`/tmp`. Untuk informasi selengkapnya, lihat [Gunakan bind mount dengan Amazon ECS](bind-mounts.md).

`dockerVolumeConfiguration`  
Parameter ini tidak didukung untuk tugas yang berjalan di Instans Terkelola Amazon ECS.
Tipe: Objek [DockerVolumeConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DockerVolumeConfiguration.html)  
Wajib: Tidak  
Parameter ini ditentukan saat Anda menggunakan volume Docker.

`efsVolumeConfiguration`  
Jenis: Objek [EFSVolumekonfigurasi](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_EFSVolumeConfiguration.html)  
Wajib: Tidak  
Parameter ini ditentukan saat Anda menggunakan sistem file Amazon EFS untuk penyimpanan tugas.

`fsxWindowsFileServerVolumeConfiguration`  
Parameter ini tidak didukung untuk tugas yang berjalan di Instans Terkelola Amazon ECS.
Tipe: Objek [FSxWindowsFileServerVolumeConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_FSxWindowsFileServerVolumeConfiguration.html)  
Wajib: Tidak  
Parameter ini ditentukan saat Anda menggunakan sistem file Amazon FSx untuk Windows File Server untuk penyimpanan tugas.

`configuredAtLaunch`  
Tipe: Boolean  
Wajib: Tidak  
Menunjukkan apakah volume harus dikonfigurasi pada waktu peluncuran. Ini digunakan untuk membuat volume Amazon EBS untuk tugas mandiri atau tugas yang dibuat sebagai bagian dari layanan. Setiap revisi definisi tugas mungkin hanya memiliki satu volume yang dikonfigurasi saat peluncuran dalam konfigurasi volume.

## Definisi kontainer
<a name="container_definitions-managed-instances"></a>

Saat Anda mendaftarkan definisi tugas, Anda harus menentukan daftar definisi kontainer yang diteruskan ke Docker daemon pada instance container. Parameter berikut diizinkan dalam ketentuan kontainer.

**Topics**
+ [

### Nama
](#container_definition_name-managed-instances)
+ [

### Citra
](#container_definition_image-managed-instances)
+ [

### Memori
](#container_definition_memory-managed-instances)
+ [

### CPU
](#container_definition_cpu-managed-instances)
+ [

### Pemetaan port
](#container_definition_portmappings-managed-instances)
+ [

### Kredensyal Repositori Pribadi
](#container_definition_repositoryCredentials-managed-instances)
+ [

### Esensi
](#container_definition_essential-managed-instances)
+ [

### Titik masuk
](#container_definition_entrypoint-managed-instances)
+ [

### Perintah
](#container_definition_command-managed-instances)
+ [

### Direktori kerja
](#container_definition_workingdirectory-managed-instances)
+ [

### Parameter definisi kontainer tingkat lanjut
](#advanced_container_definition_params-managed-instances)
+ [

### Parameter Linux
](#container_definition_linuxparameters-managed-instances)

### Nama
<a name="container_definition_name-managed-instances"></a>

`name`  
Tipe: String  
Diperlukan: Ya  
Nama kontainer. Mengizinkan hingga 255 huruf (huruf besar dan huruf kecil), angka, tanda hubung, dan garis bawah. Jika Anda menautkan beberapa kontainer dalam definisi tugas, `name` satu kontainer dapat dimasukkan ke dalam `links` wadah lain. Ini untuk menghubungkan wadah.

### Citra
<a name="container_definition_image-managed-instances"></a>

`image`  
Tipe: String  
Diperlukan: Ya  
Citra yang digunakan untuk memulai kontainer. String ini diteruskan langsung ke Docker daemon. Secara default, gambar dalam Docker Hub registri tersedia. Anda juga dapat menentukan repositori lain dengan salah satu atau`repository-url/image:tag`. `repository-url/image@digest` Maksimal 255 huruf (huruf besar dan kecil), angka, tanda hubung, garis bawah, titik dua, titik, garis miring, dan tanda angka diizinkan. Parameter ini memetakan ke `Image` dalam perintah docker create-container dan parameter `IMAGE` dari perintah docker run.  
+ Ketika tugas baru dimulai, agen kontainer Amazon ECS menarik versi terbaru dari citra yang ditentukan dan tanda untuk kontainer yang akan digunakan. Namun, pembaruan berikutnya ke gambar repositori tidak disebarkan ke tugas yang sudah berjalan.
+ Jika Anda tidak menentukan tag atau intisari di jalur gambar dalam definisi tugas, agen penampung Amazon ECS menggunakan `latest` tag untuk menarik gambar yang ditentukan. 
+  Pembaruan selanjutnya ke gambar repositori tidak disebarkan ke tugas yang sudah berjalan.
+ Citra di registri privat didukung. Untuk informasi selengkapnya, lihat [Menggunakan gambar AWS non-kontainer di Amazon ECS](private-auth.md).
+ Gambar di repositori Amazon ECR dapat ditentukan dengan menggunakan konvensi lengkap `registry/repository:tag` atau `registry/repository@digest` penamaan (misalnya, `aws_account_id.dkr.ecr.region.amazonaws.com` `/my-web-app:latest` atau). `aws_account_id.dkr.ecr.region.amazonaws.com` `/my-web-app@sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE`
+ Gambar di repositori resmi Docker Hub menggunakan satu nama (misalnya, `ubuntu` atau`mongo`).
+ Gambar di repositori lain di Docker Hub memenuhi syarat dengan nama organisasi (misalnya,`amazon/amazon-ecs-agent`).
+ Gambar di repositori online lainnya memenuhi syarat lebih lanjut dengan nama domain (misalnya, `quay.io/assemblyline/ubuntu`).

`versionConsistency`  
Tipe: String  
Nilai yang valid: `enabled` \$1 `disabled`  
Wajib: Tidak  
Menentukan apakah Amazon ECS akan menyelesaikan tag image container yang disediakan dalam definisi container ke image digest. Secara default, perilaku ini adalah`enabled`. Jika Anda menetapkan nilai untuk container sebagai`disabled`, Amazon ECS tidak akan menyelesaikan tag image container ke intisari dan akan menggunakan URI gambar asli yang ditentukan dalam definisi container untuk penerapan. Untuk informasi selengkapnya tentang resolusi gambar kontainer, lihat[Penerjemahan image kontainer](deployment-type-ecs.md#deployment-container-image-stability).

### Memori
<a name="container_definition_memory-managed-instances"></a>

`memory`  
Tipe: Integer  
Wajib: Tidak  
Jumlah (dalam MiB) memori yang akan ditampilkan ke kontainer. Jika kontainer Anda mencoba untuk melebihi memori yang ditentukan di sini, kontainer akan dimatikan. Jumlah total memori yang disimpan untuk semua kontainer dalam tugas harus lebih rendah dari nilai `memory` tugas, jika ada yang ditentukan. Parameter ini memetakan ke `Memory` dalam perintah docker create-container dan opsi `--memory` untuk docker run.  
Daemon Docker 20.10.0 atau yang lebih baru menyimpan minimal 6 MiB memori untuk sebuah wadah. Jadi, jangan tentukan kurang dari 6 MiB memori untuk wadah Anda.  
Docker 19.03.13-ce atau daemon sebelumnya menyimpan minimal 4 MiB memori untuk sebuah wadah. Jadi, jangan tentukan kurang dari 4 MiB memori untuk wadah Anda.  
Jika Anda mencoba memaksimalkan pemanfaatan sumber daya Anda dengan menyediakan memori sebanyak mungkin untuk jenis instans tertentu, lihat[Memesan memori instans wadah Amazon ECS Linux](memory-management.md).

`memoryReservation`  
Tipe: Integer  
Wajib: Tidak  
Batas lunak (di MiB) memori untuk menyimpan kontainer. Ketika memori sistem sedang diperdebatkan, Docker upaya untuk menjaga memori kontainer ke batas lunak ini. Namun, wadah Anda dapat menggunakan lebih banyak memori saat dibutuhkan. Wadah dapat menggunakan hingga batas keras yang ditentukan dengan `memory` parameter (jika ada) atau semua memori yang tersedia pada instance kontainer, mana yang lebih dulu. Parameter ini memetakan ke `MemoryReservation` dalam perintah docker create-container dan opsi `--memory-reservation` untuk docker run.  
Jika nilai memori tingkat tugas tidak ditentukan, Anda harus menentukan bilangan bulat bukan nol untuk salah satu atau keduanya `memory` atau `memoryReservation` dalam definisi wadah. Jika Anda menentukan keduanya, `memory` harus lebih besar dari `memoryReservation`. Jika Anda menentukan`memoryReservation`, maka nilai tersebut dikurangi dari sumber daya memori yang tersedia untuk instance wadah tempat penampung ditempatkan. Jika tidak, nilai `memory` digunakan.  
Misalnya, kontainer Anda biasanya menggunakan memori 128 MiB, tetapi kadang-kadang meledak hingga 256 MiB memori untuk waktu yang singkat. Anda dapat mengatur 128 MiB, dan batas `memory` keras 300 MiB. `memoryReservation` Konfigurasi ini memungkinkan penampung untuk hanya menyimpan 128 MiB memori dari sumber daya yang tersisa pada instance container. Pada saat yang sama, konfigurasi ini juga memungkinkan wadah untuk menggunakan lebih banyak sumber daya memori bila diperlukan.  
Daemon Docker 20.10.0 atau yang lebih baru menyimpan minimal 6 MiB memori untuk sebuah wadah. Jadi, jangan tentukan kurang dari 6 MiB memori untuk wadah Anda.  
Docker 19.03.13-ce atau daemon sebelumnya menyimpan minimal 4 MiB memori untuk sebuah wadah. Jadi, jangan tentukan kurang dari 4 MiB memori untuk wadah Anda.  
Jika Anda mencoba memaksimalkan pemanfaatan sumber daya Anda dengan menyediakan memori sebanyak mungkin untuk jenis instans tertentu, lihat[Memesan memori instans wadah Amazon ECS Linux](memory-management.md).

### CPU
<a name="container_definition_cpu-managed-instances"></a>

`cpu`  
Tipe: Integer  
Wajib: Tidak  
Jumlah unit `cpu` disimpan untuk kontainer. Parameter ini memetakan ke `CpuShares` dalam perintah docker create-container dan opsi `--cpu-shares` untuk docker run.  
Bidang ini opsional untuk tugas yang menggunakan penyedia kapasitas EC2, dan satu-satunya persyaratan adalah bahwa jumlah total CPU yang dicadangkan untuk semua kontainer dalam tugas lebih rendah dari nilai tingkat tugas`cpu`.  
Anda dapat menentukan jumlah unit CPU yang tersedia per jenis instans EC2 dengan mengalikan v yang CPUs terdaftar untuk jenis instans tersebut di halaman detail [Instans Amazon EC2](https://aws.amazon.com/ec2/instance-types/) dengan 1.024.
Kontainer Linux pebagian unit CPU yang tidak dialokasikan dengan kontainer lain pada instans kontainer dengan rasio yang sama dengan jumlahnya yang dialokasikan. Misalnya, jika Anda menjalankan tugas kontainer tunggal pada tipe instans inti tunggal dengan 512 unit CPU yang ditentukan untuk kontainer itu, dan itulah satu-satunya tugas yang berjalan pada instance kontainer, kontainer tersebut dapat menggunakan 1.024 unit CPU penuh pada waktu tertentu. Namun, jika Anda meluncurkan salinan lain dari tugas yang sama pada instance container tersebut, setiap tugas dijamin minimal 512 unit CPU bila diperlukan. Selain itu, setiap kontainer dapat mengambang ke penggunaan CPU yang lebih tinggi jika wadah lain tidak menggunakannya. Jika kedua tugas tersebut 100% aktif sepanjang waktu, mereka akan dibatasi hingga 512 unit CPU.  
Pada instans kontainer Linux, daemon Docker pada instans kontainer menggunakan nilai CPU untuk menghitung rasio pembagian CPU relatif untuk menjalankan kontainer. Untuk informasi selengkapnya, lihat [batasan pembagian CPU](https://docs.docker.com/engine/reference/run/#cpu-share-constraint) dalam dokumentasi Docker. Nilai pembagian CPU minimum yang valid yang diizinkan kernel Linux adalah 2. Namun, parameter CPU tidak diperlukan, dan Anda dapat menggunakan nilai CPU di bawah 2 dalam definisi container Anda. Untuk nilai CPU di bawah 2 (termasuk null), perilakunya bervariasi berdasarkan versi agen kontainer Amazon ECS Anda:  
+ **Versi agen kurang dari atau sama dengan 1.1.0:** Nilai CPU null dan nol diteruskan ke Docker sebagai 0, yang kemudian dikonversi Docker menjadi 1.024 pembagian CPU. Nilai CPU 1 diteruskan ke Docker sebagai 1, yang dikonversi oleh kernel Linux menjadi dua pembagian CPU.
+ **Versi agen lebih dari atau sama dengan 1.2.0:** Nilai null, nol, dan CPU 1 diteruskan ke Docker sebagai 2.
Pada instans kontainer Windows, batas CPU diberlakukan sebagai batas absolut, atau kuota. Kontainer Windows hanya memiliki akses ke jumlah CPU yang ditentukan yang dijelaskan dalam definisi tugas. Nilai CPU null atau nol diteruskan ke Docker sebagai `0`, yang ditafsirkan Windows sebagai 1% dari satu CPU.

### Pemetaan port
<a name="container_definition_portmappings-managed-instances"></a>

`portMappings`  
Tipe: Array objek  
Wajib: Tidak  
Pemetaan port mengekspos port jaringan kontainer Anda ke dunia luar. ini memungkinkan klien untuk mengakses aplikasi Anda. Ini juga digunakan untuk komunikasi antar kontainer dalam tugas yang sama.  
Untuk definisi tugas yang menggunakan mode `awsvpc` jaringan, hanya tentukan`containerPort`. `hostPort`Itu selalu diabaikan, dan port kontainer secara otomatis dipetakan ke port acak bernomor tinggi pada host.  
Sebagian besar bidang parameter ini (termasuk`containerPort`,`hostPort`,`protocol`) dipetakan ke `PortBindings` dalam perintah create-container docker dan opsi `--publish` untuk docker run. Jika mode jaringan dari definisi tugas diatur ke`host`, port host harus tidak terdefinisi atau cocok dengan port kontainer dalam pemetaan port.  
Setelah tugas mencapai status `RUNNING` , tugas port kontainer dan host manual dan otomatis akan terlihat di lokasi-lokasi berikut:  
+ Konsol: bagian **Pengikatan jaringan** dari deskripsi kontainer untuk tugas yang dipilih.
+ AWS CLI: Bagian `networkBindings` dari output perintah **describe-tasks** .
+ API: Respons `DescribeTasks` .
+ Metadata: Titik akhir metadata tugas.  
`appProtocol`  
Tipe: String  
Wajib: Tidak  
Protokol aplikasi yang digunakan untuk pemetaan port. Parameter ini hanya berlaku untuk Service Connect. Kami menyarankan Anda mengatur parameter ini agar konsisten dengan protokol yang digunakan aplikasi Anda. Jika Anda menyetel parameter ini, Amazon ECS akan menambahkan penanganan koneksi khusus protokol ke proxy service connect. Jika Anda menyetel parameter ini, Amazon ECS menambahkan telemetri khusus protokol di konsol Amazon ECS dan. CloudWatch  
Jika Anda tidak menetapkan nilai untuk parameter ini, maka TCP digunakan. Namun, Amazon ECS tidak menambahkan telemetri khusus protokol untuk TCP.  
Untuk informasi selengkapnya, lihat [Menggunakan Service Connect untuk menghubungkan layanan Amazon ECS dengan nama pendek](service-connect.md).  
Nilai protokol yang valid: `"HTTP" | "HTTP2" | "GRPC" `  
`containerPort`  
Jenis: Integer  
Diperlukan: Ya, kapan `portMappings` digunakan  
Nomor port pada kontainer yang terikat ke port host yang ditentukan pengguna atau secara otomatis ditetapkan.  
Untuk tugas yang menggunakan mode `awsvpc` jaringan, Anda gunakan `containerPort` untuk menentukan port yang terbuka.  
`containerPortRange`  
Tipe: String  
Wajib: Tidak  
Rentang nomor port pada kontainer yang terikat pada rentang port host yang dipetakan secara dinamis.   
Anda hanya dapat mengatur parameter ini dengan menggunakan `register-task-definition` API. Opsi ini tersedia dalam `portMappings` parameter. Untuk informasi selengkapnya, lihat [register-task-definition](https://docs.aws.amazon.com/cli/latest/reference/ecs/register-task-definition.html) dalam *Referensi AWS Command Line Interface *.   
Aturan berikut berlaku saat Anda menentukan`containerPortRange`:  
+ Anda harus menggunakan mode `awsvpc` jaringan.
+ Instance container harus memiliki setidaknya versi 1.67.0 dari agen kontainer dan setidaknya versi 1.67.0-1 dari paket. `ecs-init`
+ Anda dapat menentukan maksimum 100 rentang port untuk setiap kontainer.
+ Anda tidak menentukan`hostPortRange`. Nilai `hostPortRange` ditetapkan sebagai berikut:
  + Untuk kontainer dalam tugas dengan mode `awsvpc` jaringan, `hostPort` diatur ke nilai yang sama dengan`containerPort`. Ini adalah strategi pemetaan statis.
+ Nilai yang `containerPortRange` valid adalah antara 1 dan 65535.
+ Sebuah port hanya dapat dimasukkan dalam satu pemetaan port untuk setiap kontainer.
+ Anda tidak dapat menentukan rentang port yang tumpang tindih.
+ Port pertama dalam kisaran harus kurang dari port terakhir dalam kisaran.
+ Dockermerekomendasikan agar Anda mematikan docker-proxy di file konfigurasi Docker daemon ketika Anda memiliki banyak port.

  Untuk informasi selengkapnya, lihat [Masalah \$111185](https://github.com/moby/moby/issues/11185) di GitHub.

  [https://docs.aws.amazon.com/AmazonECS/latest/developerguide/bootstrap_container_instance.html#bootstrap_docker_daemon](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/bootstrap_container_instance.html#bootstrap_docker_daemon)
Anda dapat menelepon [DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html)untuk melihat`hostPortRange`, yang merupakan port host yang terikat ke port kontainer.  
Rentang port tidak disertakan dalam peristiwa tugas Amazon ECS, yang dikirim ke EventBridge. Untuk informasi selengkapnya, lihat [Otomatiskan tanggapan terhadap kesalahan Amazon ECS menggunakan EventBridge](cloudwatch_event_stream.md).  
`hostPortRange`  
Tipe: String  
Wajib: Tidak  
Rentang nomor port pada host yang digunakan dengan pengikatan jaringan. Ini ditugaskan oleh Docker dan dikirim oleh agen Amazon ECS.  
`hostPort`  
Tipe: Integer  
Wajib: Tidak  
Nomor port pada instans kontainer untuk menyimpan kontainer Anda.  
`hostPort`Dapat tetap kosong atau nilainya sama dengan`containerPort`.  
Rentang port fana default Docker versi 1.6.0 dan yang lebih baru tercantum pada instance di bawah. `/proc/sys/net/ipv4/ip_local_port_range` Jika parameter kernel ini tidak tersedia, port sementara default berkisar sejak `49153–65535` digunakan. Jangan mencoba menentukan port host dalam rentang port sementara. Ini karena ini dicadangkan untuk penugasan otomatis. Secara umum, port di bawah `32768` berada di luar jangkauan port fana.   
Port cadangan default adalah `22` untuk SSH, Docker port `2375` dan`2376`, dan port agen kontainer Amazon ECS. `51678-51680` Port host apa pun yang sebelumnya ditentukan pengguna untuk tugas yang sedang berjalan juga dicadangkan saat tugas sedang berjalan. Setelah tugas berhenti, port host dilepaskan. Port cadangan saat ini ditampilkan di `remainingResources` **describe-container-instances** output. Instance kontainer mungkin memiliki hingga 100 port cadangan sekaligus, termasuk port cadangan default. Port yang ditetapkan secara otomatis tidak dihitung terhadap kuota 100 port cadangan.  
`name`  
Tipe: String  
Wajib: Tidak, diperlukan agar Service Connect dan VPC Lattice dikonfigurasi dalam layanan  
Nama yang digunakan untuk pemetaan port. Parameter ini hanya berlaku untuk Service Connect dan VPC Lattice. Parameter ini adalah nama yang Anda gunakan dalam konfigurasi Service Connect dan VPC Lattice suatu layanan.  
Untuk informasi selengkapnya, lihat [Menggunakan Service Connect untuk menghubungkan layanan Amazon ECS dengan nama pendek](service-connect.md).  
Dalam contoh berikut, kedua bidang wajib untuk Service Connect dan VPC Lattice digunakan.  

```
"portMappings": [
    {
        "name": string,
        "containerPort": integer
    }
]
```  
`protocol`  
Tipe: String  
Wajib: Tidak  
Protokol yang digunakan untuk pemetaan port. Nilai yang valid adalah `tcp` dan `udp`. Default adalah `tcp`.  
Hanya `tcp` didukung untuk Service Connect. Ingat itu `tcp` tersirat jika bidang ini tidak disetel. 
Jika Anda menentukan port host, gunakan sintaks berikut.  

```
"portMappings": [
    {
        "containerPort": integer,
        "hostPort": integer
    }
    ...
]
```
Jika Anda menginginkan port host yang ditetapkan secara otomatis, gunakan sintaks berikut.  

```
"portMappings": [
    {
        "containerPort": integer
    }
    ...
]
```

### Kredensyal Repositori Pribadi
<a name="container_definition_repositoryCredentials-managed-instances"></a>

`repositoryCredentials`  
Tipe: Objek [RepositoryCredentials](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RepositoryCredentials.html)  
Wajib: Tidak  
Kredensyal repositori untuk otentikasi registri pribadi.  
Untuk informasi selengkapnya, lihat [Menggunakan gambar AWS non-kontainer di Amazon ECS](private-auth.md).    
 `credentialsParameter`  
Tipe: String  
Diperlukan: Ya, kapan `repositoryCredentials` digunakan  
Amazon Resource Name (ARN) dari rahasia yang berisi kredensial repositori privat.  
Untuk informasi selengkapnya, lihat [Menggunakan gambar AWS non-kontainer di Amazon ECS](private-auth.md).  
Saat Anda menggunakan Amazon ECS API, AWS CLI, atau AWS SDKs, jika rahasia ada di Wilayah yang sama dengan tugas yang Anda luncurkan, maka Anda dapat menggunakan ARN lengkap atau nama rahasianya. Bila Anda menggunakan Konsol Manajemen AWS, Anda harus menentukan ARN penuh rahasia.
Berikut ini adalah cuplikan definisi tugas yang menunjukkan parameter yang diperlukan:  

```
"containerDefinitions": [
    {
        "image": "private-repo/private-image",
        "repositoryCredentials": {
            "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name"
        }
    }
]
```

### Esensi
<a name="container_definition_essential-managed-instances"></a>

`essential`  
Tipe: Boolean  
Wajib: Tidak  
Jika parameter `essential` kontainer ditandai sebagai `true`, dan kontainer itu gagal atau berhenti karena alasan apa pun, semua kontainer lain yang merupakan bagian dari tugas dihentikan. Jika `essential` parameter kontainer ditandai sebagai`false`, kegagalannya tidak mempengaruhi sisa kontainer dalam suatu tugas. Jika parameter ini dihilangkan, kontainer diasumsikan menjadi penting.  
Semua tugas harus memiliki setidaknya satu kontainer penting. Jika Anda memiliki aplikasi yang terdiri dari beberapa kontainer, kelompokkan kontainer yang digunakan untuk tujuan bersama menjadi komponen, dan pisahkan komponen yang berbeda menjadi beberapa definisi tugas. Untuk informasi selengkapnya, lihat [Merancang Aplikasi Anda untuk Amazon ECS](application_architecture.md).

### Titik masuk
<a name="container_definition_entrypoint-managed-instances"></a>

`entryPoint`  
Tipe: Array string  
Wajib: Tidak  
Titik masuk yang diteruskan ke wadah. Parameter ini memetakan ke `Entrypoint` dalam perintah docker create-container dan opsi `--entrypoint` untuk docker run.  

```
"entryPoint": ["string", ...]
```

### Perintah
<a name="container_definition_command-managed-instances"></a>

`command`  
Tipe: Array string  
Wajib: Tidak  
Perintah yang diteruskan ke kontainer. Parameter ini memetakan ke `Cmd` dalam perintah docker create-container dan parameter `COMMAND` ke docker run. Jika ada beberapa argumen, setiap argumen adalah string terpisah dalam array.  

```
"command": ["string", ...]
```

### Direktori kerja
<a name="container_definition_workingdirectory-managed-instances"></a>

`workingDirectory`  
Tipe: String  
Wajib: Tidak  
Direktori kerja untuk menjalankan perintah di dalam wadah di. Parameter ini memetakan ke `WorkingDir` dalam perintah docker create-container dan opsi `--workdir` untuk docker run.

### Parameter definisi kontainer tingkat lanjut
<a name="advanced_container_definition_params-managed-instances"></a>

Parameter definisi kontainer lanjutan berikut memberikan kemampuan yang diperluas ke perintah docker run yang digunakan untuk meluncurkan container di instance container Amazon ECS Anda.

**Topics**
+ [

#### Kebijakan Mulai Ulang
](#container_definition_restart_policy-managed-instances)
+ [

#### Pemeriksaan kondisi
](#container_definition_healthcheck-managed-instances)
+ [

#### Lingkungan
](#container_definition_environment-managed-instances)
+ [

#### Keamanan
](#container_definition_security-managed-instances)
+ [

#### Pengaturan jaringan
](#container_definition_network-managed-instances)
+ [

#### Penyimpanan dan pencatatan log
](#container_definition_storage-managed-instances)
+ [

#### Persyaratan sumber daya
](#container_definition_resourcerequirements-managed-instances)
+ [

#### Waktu habis kontainer
](#container_definition_timeout-managed-instances)
+ [

#### Dependensi kontainer
](#container_definition_dependency-managed-instances)
+ [

#### Kontrol sistem
](#container_definition_systemcontrols-managed-instances)
+ [

#### Interaktif
](#container_definition_interactive-managed-instances)
+ [

#### Terminal semu
](#container_definition_pseudoterminal-managed-instances)

#### Kebijakan Mulai Ulang
<a name="container_definition_restart_policy-managed-instances"></a>

`restartPolicy`  
Kebijakan restart kontainer dan parameter konfigurasi terkait. Saat Anda menyiapkan kebijakan restart untuk penampung, Amazon ECS dapat memulai ulang penampung tanpa perlu mengganti tugas. Untuk informasi selengkapnya, lihat [Mulai ulang kontainer individual dalam tugas Amazon ECS dengan kebijakan restart kontainer](container-restart-policy.md).    
`enabled`  
Jenis: Boolean  
Wajib: Ya  
Menentukan apakah kebijakan restart diaktifkan untuk wadah.  
`ignoredExitCodes`  
Jenis: himpunan integer  
Wajib: Tidak  
Daftar kode keluar yang akan diabaikan Amazon ECS dan tidak mencoba memulai ulang. Anda dapat menentukan maksimum 50 kode keluar kontainer. Secara default, Amazon ECS tidak mengabaikan kode keluar apa pun.  
`restartAttemptPeriod`  
Tipe: Integer  
Wajib: Tidak  
Periode waktu (dalam detik) wadah harus dijalankan sebelum restart dapat dicoba. Sebuah wadah dapat dimulai ulang hanya sekali setiap `restartAttemptPeriod` detik. Jika kontainer tidak dapat berjalan untuk periode waktu ini dan keluar lebih awal, itu tidak akan dimulai ulang. Anda dapat mengatur minimal `restartAttemptPeriod` 60 detik dan maksimum `restartAttemptPeriod` 1800 detik. Secara default, kontainer harus berjalan selama 300 detik sebelum dapat dimulai ulang.

#### Pemeriksaan kondisi
<a name="container_definition_healthcheck-managed-instances"></a>

`healthCheck`  
Perintah pemeriksaan kesehatan kontainer dan parameter konfigurasi terkait untuk wadah. Untuk informasi selengkapnya, lihat [Menentukan Kondisi Tugas Amazon ECS Menggunakan Pemeriksaan Kondisi Kontainer](healthcheck.md).    
`command`  
Array string yang mewakili perintah yang dijalankan kontainer untuk menentukan apakah itu sehat. Array string dapat dimulai dengan `CMD` untuk menjalankan argumen perintah secara langsung, atau `CMD-SHELL` untuk menjalankan perintah dengan shell default container. Jika tidak ada yang `CMD` ditentukan, digunakan.  
Saat mendaftarkan definisi tugas di Konsol Manajemen AWS, gunakan daftar perintah yang dipisahkan koma. Perintah ini dikonversi ke string setelah definisi tugas dibuat. Contoh masukan untuk pemeriksaan kesehatan adalah sebagai berikut.  

```
CMD-SHELL, curl -f http://localhost/ || exit 1
```
Saat mendaftarkan definisi tugas menggunakan panel Konsol Manajemen AWS JSON,, atau AWS CLI APIs, lampirkan daftar perintah dalam tanda kurung. Contoh masukan untuk pemeriksaan kesehatan adalah sebagai berikut.  

```
[ "CMD-SHELL", "curl -f http://localhost/ || exit 1" ]
```
Kode keluar 0, tanpa `stderr` output, menunjukkan keberhasilan, dan kode keluar bukan nol menunjukkan kegagalan.   
`interval`  
Periode waktu (dalam detik) antara setiap pemeriksaan kesehatan. Anda dapat menentukan antara 5 dan 300 detik. Nilai default-nya adalah 30 detik.  
`timeout`  
Periode waktu (dalam hitungan detik) untuk menunggu pemeriksaan kesehatan berhasil sebelum dianggap gagal. Anda dapat menentukan antara 2 dan 60 detik. Nilai defaultnya adalah 5 detik.  
`retries`  
Jumlah raktu untuk mencoba kembali pemeriksaan kondisi yang gagal sebelum kontainer dianggap tidak sehat. Anda dapat menentukan antara 1 dan 10 percobaan ulang. Nilai default-nya adalah tiga kali percobaan ulang.  
`startPeriod`  
Masa tenggang opsional untuk menyediakan waktu kontainer untuk bootstrap sebelum pemeriksaan kesehatan yang gagal dihitung terhadap jumlah maksimum percobaan ulang. Anda dapat menentukan nilai antara 0 dan 300 detik. Secara default, `startPeriod` dinonaktifkan.  
Jika pemeriksaan kondisi berhasil dalam `startPeriod`, maka kontainer dianggap sehat dan kegagalan berikutnya dihitung terhadap jumlah maksimum percobaan kembali.

#### Lingkungan
<a name="container_definition_environment-managed-instances"></a>

`cpu`  
Tipe: Integer  
Wajib: Tidak  
Jumlah `cpu` unit cadangan agen kontainer Amazon ECS untuk kontainer. Di Linux, parameter ini dipetakan `CpuShares` di bagian [Create a container](https://docs.docker.com/reference/api/engine/version/v1.38/#operation/ContainerCreate).  
Bidang ini bersifat opsional untuk tugas yang berjalan di Instans Terkelola Amazon ECS. Jumlah total CPU yang dicadangkan untuk semua kontainer yang berada dalam tugas harus lebih rendah dari nilai tingkat tugas`cpu`.  
Linuxkontainer berbagi unit CPU yang tidak terisi dengan kontainer lain pada instance kontainer dengan rasio yang sama dengan jumlah yang dialokasikan. Misalnya, asumsikan bahwa Anda menjalankan tugas kontainer tunggal pada tipe instans inti tunggal dengan 512 unit CPU yang ditentukan untuk kontainer tersebut. Selain itu, tugas itu adalah satu-satunya tugas yang berjalan pada instance container. Dalam contoh ini, wadah dapat menggunakan 1.024 pangsa unit CPU penuh pada waktu tertentu. Namun, asumsikan bahwa Anda meluncurkan salinan lain dari tugas yang sama pada instance kontainer itu. Setiap tugas dijamin minimal 512 unit CPU bila diperlukan. Demikian pula, jika wadah lain tidak menggunakan CPU yang tersisa, setiap kontainer dapat mengambang ke penggunaan CPU yang lebih tinggi. Namun, jika kedua tugas tersebut 100% aktif sepanjang waktu, mereka terbatas pada 512 unit CPU.  
Pada instance Linux container, Docker daemon pada instance container menggunakan nilai CPU untuk menghitung rasio pangsa CPU relatif untuk menjalankan container. Nilai pangsa CPU minimum yang valid yang diizinkan oleh kernel Linux adalah 2, dan nilai pangsa CPU valid maksimum yang diizinkan oleh kernel Linux adalah 262144. Namun, parameter CPU tidak diperlukan, dan Anda dapat menggunakan nilai CPU di bawah dua dan di atas 262144 dalam definisi container Anda. Untuk nilai CPU di bawah dua (termasuk null) dan di atas 262144, perilaku bervariasi berdasarkan versi agen penampung Amazon ECS Anda:  
Untuk contoh selengkapnya, lihat [Cara Amazon ECS mengelola sumber daya CPU dan memori](https://aws.amazon.com/blogs/containers/how-amazon-ecs-manages-cpu-and-memory-resources/).

`gpu`  
Tipe: Objek [ResourceRequirement](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ResourceRequirement.html)  
Wajib: Tidak  
Jumlah fisik `GPUs` yang dicadangkan agen kontainer Amazon ECS untuk kontainer. Jumlah GPUs cadangan untuk semua kontainer dalam tugas tidak boleh melebihi jumlah yang tersedia GPUs pada instance kontainer tempat tugas diluncurkan. Untuk informasi selengkapnya, lihat [Definisi tugas Amazon ECS untuk beban kerja GPU](ecs-gpu.md).

`Elastic Inference accelerator`  
Parameter ini tidak didukung untuk container yang di-host di Instans Terkelola Amazon ECS.
Tipe: Objek [ResourceRequirement](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ResourceRequirement.html)  
Wajib: Tidak  
Untuk `InferenceAccelerator` jenisnya, `value` cocok dengan yang `deviceName` `InferenceAccelerator` ditentukan dalam definisi tugas. Untuk informasi selengkapnya, lihat [Nama akselerator Elastic Inference (usang)](task_definition_parameters.md#elastic-Inference-accelerator).

`essential`  
Tipe: Boolean  
Wajib: Tidak  
Misalkan `essential` parameter wadah ditandai sebagai`true`, dan wadah itu gagal atau berhenti karena alasan apa pun. Kemudian, semua wadah lain yang merupakan bagian dari tugas dihentikan. Jika `essential` parameter wadah ditandai sebagai`false`, maka kegagalannya tidak mempengaruhi sisa kontainer dalam suatu tugas. Jika parameter ini dihilangkan, kontainer diasumsikan menjadi penting.  
Semua tugas harus memiliki setidaknya satu kontainer penting. Misalkan Anda memiliki aplikasi yang terdiri dari beberapa kontainer. Kemudian, kelompokkan wadah yang digunakan untuk tujuan bersama menjadi komponen, dan pisahkan komponen yang berbeda menjadi beberapa definisi tugas. Untuk informasi selengkapnya, lihat [Merancang Aplikasi Anda untuk Amazon ECS](application_architecture.md).  

```
"essential": true|false
```

`entryPoint`  
Versi awal agen kontainer Amazon ECS tidak menangani `entryPoint` parameter dengan benar. Jika Anda memiliki masalah menggunakan `entryPoint`, perbarui agen kontainer Anda atau masukkan perintah dan argumen Anda sebagai item array `command` sebagai gantinya.
Tipe: Array string  
Wajib: Tidak  
Titik masuk yang diteruskan ke wadah.   

```
"entryPoint": ["string", ...]
```

`command`  
Tipe: Array string  
Wajib: Tidak  
Perintah yang diteruskan ke kontainer. Parameter ini memetakan ke `Cmd` dalam perintah create-container dan parameter `COMMAND` ke docker run. Jika ada beberapa argumen, pastikan bahwa setiap argumen adalah string terpisah dalam array.  

```
"command": ["string", ...]
```

`workingDirectory`  
Tipe: String  
Wajib: Tidak  
Direktori kerja untuk menjalankan perintah di dalam wadah di. Parameter ini sesuai dengan `WorkingDir` di bagian [Buat kontainer](https://docs.docker.com/reference/api/engine/version/v1.38/#operation/ContainerCreate) di [Docker Remote API](https://docs.docker.com/reference/api/engine/version/v1.38/) dan opsi `--workdir` untuk [https://docs.docker.com/reference/cli/docker/container/run/](https://docs.docker.com/reference/cli/docker/container/run/).  

```
"workingDirectory": "string"
```

`environmentFiles`  
Tipe: Array objek  
Wajib: Tidak  
Daftar file yang berisi variabel lingkungan untuk diteruskan ke kontainer. Parameter ini memetakan ke `--env-file` opsi ke perintah docker run.  
Anda dapat menentukan hingga 10 file lingkungan. File harus memiliki ekstensi file `.env`. Setiap baris dalam file lingkungan berisi variabel lingkungan dalam `VARIABLE=VALUE` format. Baris yang dimulai dengan `#` diperlakukan sebagai komentar dan diabaikan.   
Jika ada variabel lingkungan individu yang ditentukan dalam ketentuan kontainer, maka akan lebih diutamakan daripada variabel yang ada di dalam file lingkungan. Jika beberapa file lingkungan ditentukan yang berisi variabel yang sama, mereka diproses dari atas ke bawah. Kami merekomendasikan agar Anda menggunakan nama variabel yang unik. Untuk informasi selengkapnya, lihat [Meneruskan variabel lingkungan individual ke wadah Amazon ECS](taskdef-envfiles.md).    
`value`  
Tipe: String  
Wajib: Ya  
Amazon Resource Name (ARN) dari objek Amazon S3 yang berisi variabel lingkungan file.  
`type`  
Tipe: String  
Wajib: Ya  
Tipe file yang akan digunakan. Satu-satunya nilai yang didukung adalah `s3`.

`environment`  
Tipe: Array objek  
Wajib: Tidak  
Variabel lingkungan untuk disampaikan ke kontainer. Parameter ini memetakan ke `Env` dalam perintah docker create-container dan opsi `--env` ke perintah docker run.  
Kami tidak menyarankan menggunakan variabel lingkungan teks biasa untuk informasi sensitif, seperti data kredensial.  
`name`  
Tipe: String  
Diperlukan: Ya, saat `environment` digunakan  
Nama variabel lingkungan.  
`value`  
Tipe: String  
Diperlukan: Ya, saat `environment` digunakan  
Nilai dari variabel lingkungan.

```
"environment" : [
    { "name" : "string", "value" : "string" },
    { "name" : "string", "value" : "string" }
]
```

`secrets`  
Tipe: Object array  
Wajib: Tidak  
Objek yang mewakili rahasia untuk mengekspos ke wadah Anda. Untuk informasi selengkapnya, lihat [Meneruskan data sensitif ke wadah Amazon ECS](specifying-sensitive-data.md).    
`name`  
Tipe: String  
Wajib: Ya  
Nilai untuk ditetapkan sebagai variabel lingkungan pada kontainer.  
`valueFrom`  
Tipe: String  
Wajib: Ya  
Secret untuk mengekspos ke kontainer. Nilai yang didukung adalah Nama Sumber Daya Amazon (ARN) lengkap dari AWS Secrets Manager rahasia atau ARN lengkap parameter di Parameter Store. AWS Systems Manager   
Jika parameter Systems Manager Parameter Store atau parameter Secrets Manager Wilayah AWS sama dengan tugas yang Anda luncurkan, Anda dapat menggunakan ARN lengkap atau nama rahasia. Jika parameter ada di Wilayah yang berbeda, ARN lengkap harus disebutkan.

```
"secrets": [
    {
        "name": "environment_variable_name",
        "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
    }
]
```

#### Keamanan
<a name="container_definition_security-managed-instances"></a>

`privileged`  
Tipe: Boolean  
Wajib: Tidak  
Ketika parameter ini`true`, penampung diberikan hak istimewa yang ditinggikan pada instance wadah host (mirip dengan `root` pengguna). Parameter ini memetakan ke `Privileged` dalam perintah docker create-container dan opsi `--privileged` untuk docker run.

`user`  
Tipe: String  
Wajib: Tidak  
Pengguna yang akan digunakan di dalam kontainer. Parameter ini memetakan ke `User` dalam perintah docker create-container dan opsi `--user` untuk docker run.  
Saat menjalankan tugas menggunakan mode `host` jaringan, jangan jalankan kontainer menggunakan pengguna root (UID 0). Sebaiknya gunakan pengguna non-root untuk keamanan yang lebih baik.
Anda dapat menentukan `user` dengan menggunakan format berikut. Jika menentukan UID atau GID, Anda harus menentukannya sebagai bilangan bulat positif.  
+ `user`
+ `user:group`
+ `uid`
+ `uid:gid`
+ `user:gid`
+ `uid:group`

`readonlyRootFilesystem`  
Tipe: Boolean  
Wajib: Tidak  
Ketika parameter ini`true`, wadah diberi sistem file root read-only. Parameter ini memetakan ke `ReadonlyRootfs` dalam perintah docker create-container dan opsi `--read-only` untuk docker run.

`dockerSecurityOptions`  
Parameter ini tidak didukung untuk tugas yang berjalan di Instans Terkelola Amazon ECS.
Tipe: Array string  
Wajib: Tidak  
Daftar string untuk memberikan label khusus untuk SELinux dan sistem keamanan AppArmor multi-level. Bidang ini tidak valid untuk kontainer dalam tugas yang menggunakan Fargate.

`ulimits`  
Jenis: Array objek [Ulimit](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Ulimit.html)  
Wajib: Tidak  
Daftar `ulimits` untuk diatur dalam kontainer. Jika nilai ulimit ditentukan dalam definisi tugas, itu akan mengganti nilai default yang ditetapkan oleh Docker. Parameter ini memetakan ke `Ulimits` dalam perintah docker create-container dan opsi `--ulimit` untuk docker run. Nilai penamaan yang valid ditampilkan di tipe data [Ulimit](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Ulimit.html).  
Tugas Amazon ECS yang di-host di Fargate menggunakan nilai batas sumber daya default yang ditetapkan oleh sistem operasi dengan pengecualian parameter batas sumber daya `nofile` yang diganti Fargate. Batas `nofile` sumber daya menetapkan batasan pada jumlah file terbuka yang dapat digunakan wadah. Batas `nofile` lunak default adalah `1024` dan batas keras defaultnya adalah`65535`.  
Parameter ini memerlukan API Jarak Jauh Docker versi 1.18 atau yang lebih besar pada instans kontainer Anda. Untuk memeriksa versi API Jarak Jauh Docker pada instans kontainer Anda, masuk ke instans kontainer Anda dan jalankan perintah berikut: `sudo docker version --format '{{.Server.APIVersion}}'`

`dockerLabels`  
Tipe: Peta antar string  
Wajib: Tidak  
 key/value Peta label untuk ditambahkan ke wadah. Parameter ini memetakan ke `Labels` dalam perintah docker create-container dan opsi `--label` untuk docker run.   
Parameter ini memerlukan Docker Remote API versi 1.18 atau lebih besar pada instans kontainer Anda.  

```
"dockerLabels": {"string": "string"
      ...}
```

#### Pengaturan jaringan
<a name="container_definition_network-managed-instances"></a>

`disableNetworking`  
Parameter ini tidak didukung untuk tugas yang berjalan di Instans Terkelola Amazon ECS.
Tipe: Boolean  
Wajib: Tidak  
Ketika parameter ini benar, jaringan mati di dalam wadah.  
Nilai default-nya `false`.  

```
"disableNetworking": true|false
```

`links`  
Parameter ini tidak didukung untuk tugas yang berjalan di Instans Terkelola Amazon ECS.
Tipe: Array string  
Wajib: Tidak  
Parameter `link` mengizinkan kontainer untuk berkomunikasi satu sama lain tanpa perlu port pemetaan. Parameter ini hanya didukung jika mode jaringan dari definisi tugas diatur ke`bridge`. `name:internalName`Konstruk ini analog dengan dalam tautan. `name:alias` Docker Hingga 255 huruf (huruf besar dan kecil), angka, tanda hubung, dan garis bawah diperbolehkan..  
Kontainer yang ditempatkan pada instance kontainer yang sama dapat berkomunikasi satu sama lain tanpa memerlukan tautan atau pemetaan port host. Isolasi jaringan pada instans kontainer dikendalikan oleh grup keamanan dan pengaturan VPC.

```
"links": ["name:internalName", ...]
```

`hostname`  
Parameter ini tidak didukung untuk tugas yang berjalan di Instans Terkelola Amazon ECS.
Tipe: String  
Wajib: Tidak  
Nama host yang digunakan untuk kontainer Anda. Parameter ini memetakan ke `Hostname` dalam docker create-container dan opsi `--hostname` untuk docker run.  

```
"hostname": "string"
```

`dnsServers`  
Parameter ini tidak didukung untuk tugas yang berjalan di Instans Terkelola Amazon ECS.
Tipe: Array string  
Wajib: Tidak  
Daftar server DNS yang disajikan untuk kontainer.  

```
"dnsServers": ["string", ...]
```

`extraHosts`  
Parameter ini tidak didukung untuk tugas yang menggunakan mode `awsvpc` jaringan.
Tipe: Array objek  
Wajib: Tidak  
Daftar nama host dan pemetaan alamat IP untuk ditambahkan ke file `/etc/hosts` di kontainer.   
Parameter ini memetakan ke `ExtraHosts` dalam perintah docker create-container dan opsi `--add-host` untuk docker run.  

```
"extraHosts": [
      {
        "hostname": "string",
        "ipAddress": "string"
      }
      ...
    ]
```  
`hostname`  
Tipe: String  
Diperlukan: Ya, kapan `extraHosts` digunakan  
Nama host yang akan digunakan dalam entri `/etc/hosts`.  
`ipAddress`  
Tipe: String  
Diperlukan: Ya, kapan `extraHosts` digunakan  
Alamat IP yang akan digunakan dalam `/etc/hosts` entri.

#### Penyimpanan dan pencatatan log
<a name="container_definition_storage-managed-instances"></a>

`readonlyRootFilesystem`  
Tipe: Boolean  
Wajib: Tidak  
Jika parameter ini betul, kontainer diberikan akses hanya-baca ke sistem file asalnya. Parameter ini memetakan ke `ReadonlyRootfs` dalam perintah docker create-container opsi `--read-only` untuk docker run.  
Nilai default-nya `false`.  

```
"readonlyRootFilesystem": true|false
```

`mountPoints`  
Tipe: Array objek  
Wajib: Tidak  
Titik pemasangan untuk volume data dalam penampung Anda. Parameter ini memetakan ke `Volumes` dalam create-container Docker API dan opsi `--volume` untuk docker run.  
Kontainer Windows dapat memasang seluruh direktori pada drive yang sama dengan `$env:ProgramData`. Kontainer Windows tidak dapat memasang direktori pada drive yang berbeda, dan titik pemasangan tidak dapat digunakan di seluruh drive. Anda harus menentukan titik pemasangan untuk melampirkan volume Amazon EBS langsung ke tugas Amazon ECS.    
`sourceVolume`  
Tipe: String  
Diperlukan: Ya, kapan `mountPoints` digunakan  
Nama volume yang akan dipasang.  
`containerPath`  
Tipe: String  
Diperlukan: Ya, kapan `mountPoints` digunakan  
Jalur dalam wadah tempat volume akan dipasang.  
`readOnly`  
Tipe: Boolean  
Wajib: Tidak  
Jika nilai ini adalah `true`, kontainer memiliki akses hanya-baca ke volume. Jika nilai ini adalah `false`, maka kontainer dapat menulis ke volume. Nilai default-nya adalah `false`.  
Untuk tugas yang berjalan pada instans EC2 yang menjalankan sistem operasi Windows, biarkan nilainya sebagai default. `false`

`volumesFrom`  
Tipe: Array objek  
Wajib: Tidak  
Volume data untuk memasang dari kontainer lain. Parameter ini memetakan ke `VolumesFrom` dalam perintah docker create-container dan opsi `--volumes-from` untuk docker run.    
`sourceContainer`  
Tipe: String  
Diperlukan: Ya, saat `volumesFrom` digunakan  
Nama kontainer untuk memasang volume.  
`readOnly`  
Tipe: Boolean  
Wajib: Tidak  
Jika nilai ini adalah `true`, kontainer memiliki akses hanya-baca ke volume. Jika nilai ini adalah `false`, maka kontainer dapat menulis ke volume. Nilai default-nya adalah `false`.

```
"volumesFrom": [
                {
                  "sourceContainer": "string",
                  "readOnly": true|false
                }
              ]
```

`logConfiguration`  
Jenis: [LogConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LogConfiguration.html)Objek  
Wajib: Tidak  
Spesifikasi konfigurasi log untuk kontainer.  
Misalnya definisi tugas yang menggunakan konfigurasi log, lihat[Contoh definisi tugas Amazon ECS](example_task_definitions.md).  
Parameter ini memetakan ke `LogConfig` dalam perintah docker create-container dan opsi `--log-driver` untuk docker run. Secara default, kontainer menggunakan driver logging yang sama dengan yang digunakan Docker daemon. Namun, penampung mungkin menggunakan driver logging yang berbeda dari Docker daemon dengan menentukan driver log dengan parameter ini dalam definisi container. Untuk menggunakan driver penlog yang berbeda untuk kontainer, sistem log harus dikonfigurasi dengan benar pada instans kontainer (atau pada server log yang berbeda untuk opsi penlog jarak jauh).   
Pertimbangkan hal berikut saat menentukan konfigurasi log untuk kontainer Anda:  
+ Amazon ECS mendukung subset driver logging yang tersedia untuk daemon. Docker
+ Parameter ini memerlukan Docker Remote API versi 1.18 atau yang lebih baru pada instance container Anda.

```
"logConfiguration": {
      "logDriver": "awslogs",""splunk", "awsfirelens",
      "options": {"string": "string"
        ...},
	"secretOptions": [{
		"name": "string",
		"valueFrom": "string"
	}]
}
```  
`logDriver`  
Tipe: String  
Nilai yang valid: `"awslogs","splunk","awsfirelens"`  
Diperlukan: Ya, saat `logConfiguration` digunakan  
Driver log yang digunakan untuk kontainer. Secara default, nilai valid yang tercantum sebelumnya adalah driver log yang dapat berkomunikasi dengan agen penampung Amazon ECS.  
Driver log yang didukung adalah`awslogs`,`splunk`, dan`awsfirelens`.  
Untuk informasi selengkapnya tentang cara menggunakan driver `awslogs` log dalam definisi tugas untuk mengirim log kontainer Anda ke CloudWatch Log, lihat[Kirim log Amazon ECS ke CloudWatch](using_awslogs.md).  
Untuk informasi selengkapnya tentang menggunakan driver `awsfirelens` log, lihat[Kirim log Amazon ECS ke AWS layanan atau AWS Partner](using_firelens.md).  
Jika Anda memiliki driver khusus yang tidak terdaftar, Anda dapat melakukan fork proyek agen penampung Amazon ECS yang [tersedia GitHub](https://github.com/aws/amazon-ecs-agent) dan menyesuaikannya agar berfungsi dengan driver itu. Kami mendorong Anda untuk mengirim permintaan tarik untuk perubahan yang ingin Anda sertakan. Namun, saat ini kami tidak mendukung menjalankan salinan yang dimodifikasi dari perangkat lunak ini.
Parameter ini memerlukan Docker Remote API versi 1.18 atau lebih besar pada instans kontainer Anda.  
`options`  
Tipe: Peta antar string  
Wajib: Tidak  
 key/value Peta opsi konfigurasi untuk dikirim ke driver log.  
Opsi yang dapat Anda tentukan tergantung pada driver log. Beberapa opsi yang dapat Anda tentukan saat Anda menggunakan `awslogs` router untuk merutekan log ke Amazon CloudWatch meliputi yang berikut:    
`awslogs-create-group`  
Wajib: Tidak  
Tentukan apakah Anda ingin grup log dibuat secara otomatis. Jika opsi ini tidak ditentukan, default-nya adalah `false`.  
Kebijakan IAM Anda harus menyertakan `logs:CreateLogGroup` izin sebelum Anda mencoba menggunakannya`awslogs-create-group`.  
`awslogs-region`  
Wajib: Ya  
Tentukan Wilayah AWS driver `awslogs` log untuk mengirim log Docker Anda. Anda dapat memilih untuk mengirim semua log Anda dari kluster di Wilayah yang berbeda ke satu wilayah di CloudWatch Log. Ini agar mereka semua terlihat di satu lokasi. Jika tidak, Anda dapat memisahkannya berdasarkan Wilayah untuk perincian lebih lanjut. Pastikan bahwa grup log yang ditentukan ada di Wilayah yang Anda tentukan dengan opsi ini.  
`awslogs-group`  
Wajib: Ya  
Pastikan untuk menentukan grup log tempat driver `awslogs` log mengirimkan aliran lognya.  
`awslogs-stream-prefix`  
Wajib: Ya  
Gunakan `awslogs-stream-prefix` opsi untuk mengaitkan aliran log dengan awalan yang ditentukan, nama penampung, dan ID tugas Amazon ECS tempat penampung tersebut berada. Jika Anda menentukan awalan dengan opsi ini, maka aliran log mengambil format berikut.  

```
prefix-name/container-name/ecs-task-id
```
Jika Anda tidak menentukan awalan dengan opsi ini, maka aliran log dinamai sesuai dengan ID penampung yang ditetapkan oleh daemon Docker pada instance container. Karena sulit untuk melacak log kembali ke wadah yang mengirimnya hanya dengan ID wadah Docker (yang hanya tersedia pada instance penampung), kami sarankan Anda menentukan awalan dengan opsi ini.  
Untuk layanan Amazon ECS, Anda dapat menggunakan nama layanan sebagai awalan. Dengan melakukannya, Anda dapat melacak aliran log ke layanan tempat penampung milik, nama penampung yang mengirimnya, dan ID tugas yang menjadi milik penampung tersebut.  
Anda harus menentukan awalan aliran agar log Anda muncul di panel Log saat menggunakan konsol Amazon ECS.  
`awslogs-datetime-format`  
Wajib: Tidak  
Opsi ini mendefinisikan pola mulai multiline di Python format `strftime`. Pesan log terdiri dari baris yang cocok dengan pola dan baris berikut yang tidak cocok dengan pola. Garis yang cocok adalah pembatas antara pesan log.  
Salah satu contoh kasus penggunaan format ini adalah untuk penguraian output seperti buangan tumpukan, yang mungkin bisa tercatat dalam beberapa entri. Pola yang benar akan memungkinkannya ditangkap dalam satu entri.  
Untuk informasi selengkapnya, lihat [awslogs-datetime-format](https://docs.docker.com/engine/logging/drivers/awslogs/#awslogs-datetime-format).  
Anda tidak dapat mengonfigurasi opsi `awslogs-datetime-format` dan `awslogs-multiline-pattern` opsi.  
Pencatatan multibaris melakukan penguraian dan pencocokan ekspresi reguler dari semua pesan log. Ini mungkin berdampak negatif pada performa pencatatan.  
`awslogs-multiline-pattern`  
Wajib: Tidak  
Opsi ini mendefinisikan pola mulai multiline yang menggunakan ekspresi reguler. Pesan log terdiri dari baris yang cocok dengan pola dan baris berikut yang tidak cocok dengan pola. Garis yang cocok adalah pembatas antara pesan log.  
Untuk informasi selengkapnya, lihat [awslogs-multiline-pattern](https://docs.docker.com/engine/logging/drivers/awslogs/#awslogs-multiline-pattern).  
Opsi ini diabaikan jika `awslogs-datetime-format` juga dikonfigurasi.  
Anda tidak dapat mengonfigurasi opsi `awslogs-datetime-format` dan `awslogs-multiline-pattern` opsi.  
Pencatatan multibaris melakukan penguraian dan pencocokan ekspresi reguler dari semua pesan log. Ini mungkin berdampak negatif pada performa pencatatan.  
`mode`  
Wajib: Tidak  
Nilai yang valid: `non-blocking` \$1 `blocking`  
Opsi ini mendefinisikan mode pengiriman pesan log dari wadah ke driver `awslogs` log. Mode pengiriman yang Anda pilih memengaruhi ketersediaan aplikasi saat aliran log dari kontainer terganggu.  
Jika Anda menggunakan `blocking` mode dan aliran log ke CloudWatch terganggu, panggilan dari kode kontainer untuk menulis ke `stdout` dan `stderr` aliran akan diblokir. Thread logging aplikasi akan diblokir sebagai hasilnya. Hal ini dapat menyebabkan aplikasi menjadi tidak responsif dan menyebabkan kegagalan pemeriksaan kesehatan kontainer.   
Jika Anda menggunakan `non-blocking` mode, log kontainer malah disimpan dalam buffer perantara dalam memori yang dikonfigurasi dengan opsi. `max-buffer-size` Ini mencegah aplikasi menjadi tidak responsif ketika log tidak dapat dikirim ke CloudWatch. Kami merekomendasikan menggunakan mode ini jika Anda ingin memastikan ketersediaan layanan dan baik-baik saja dengan beberapa kehilangan log. Untuk informasi selengkapnya, lihat [Mencegah kehilangan log dengan mode non-pemblokiran di driver log `awslogs` kontainer](https://aws.amazon.com/blogs/containers/preventing-log-loss-with-non-blocking-mode-in-the-awslogs-container-log-driver/).  
`max-buffer-size`  
Wajib: Tidak  
Nilai default: `1m`  
Saat `non-blocking` mode digunakan, opsi `max-buffer-size` log mengontrol ukuran buffer yang digunakan untuk penyimpanan pesan perantara. Pastikan untuk menentukan ukuran buffer yang memadai berdasarkan aplikasi Anda. Ketika buffer terisi, log lebih lanjut tidak dapat disimpan. Log yang tidak dapat disimpan hilang. 
Untuk merutekan `splunk` log menggunakan router log, Anda perlu menentukan a `splunk-token` dan a`splunk-url`.  
Saat Anda menggunakan router `awsfirelens` log untuk merutekan log ke AWS Partner Network tujuan Layanan AWS atau penyimpanan log dan analitik, Anda dapat mengatur `log-driver-buffer-limit` opsi untuk membatasi jumlah peristiwa yang di-buffer dalam memori, sebelum dikirim ke wadah router log. Ini dapat membantu menyelesaikan potensi masalah kehilangan log karena throughput yang tinggi dapat mengakibatkan memori habis untuk buffer di dalamnya. Docker Untuk informasi selengkapnya, lihat [Mengkonfigurasi log Amazon ECS untuk throughput tinggi](firelens-docker-buffer-limit.md).  
Opsi lain yang dapat Anda tentukan saat menggunakan `awsfirelens` untuk merutekan log tergantung pada tujuan. Saat Anda mengekspor log ke Amazon Data Firehose, Anda dapat menentukan Wilayah AWS dengan `region` dan nama untuk aliran log. `delivery_stream`  
Saat Anda mengekspor log ke Amazon Kinesis Data Streams, Anda dapat Wilayah AWS menentukan dengan dan `region` nama aliran data dengan. `stream`  
 Saat mengekspor log ke Amazon OpenSearch Service, Anda dapat menentukan opsi seperti`Name`, `Host` (Titik akhir OpenSearch layanan tanpa protokol),,,`Port`,`Index`,`Type`,`Aws_auth`, `Aws_region``Suppress_Type_Name`, dan`tls`.  
Saat mengekspor log ke Amazon S3, Anda dapat menentukan bucket menggunakan opsi. `bucket` Anda juga dapat menentukan`region`,`total_file_size`,`upload_timeout`, dan `use_put_object` sebagai opsi.  
Parameter ini memerlukan API Docker Remote versi 1.19 atau lebih besar pada instans kontainer Anda.  
`secretOptions`  
Tipe: Array objek  
Wajib: Tidak  
Objek yang mewakili rahasia untuk diteruskan ke konfigurasi log. Rahasia yang digunakan dalam konfigurasi log dapat mencakup token otentikasi, sertifikat, atau kunci enkripsi. Untuk informasi selengkapnya, lihat [Meneruskan data sensitif ke wadah Amazon ECS](specifying-sensitive-data.md).    
`name`  
Tipe: String  
Wajib: Ya  
Nilai untuk ditetapkan sebagai variabel lingkungan pada kontainer.  
`valueFrom`  
Tipe: String  
Wajib: Ya  
Secret untuk diekspos ke konfigurasi log kontainer.

```
"logConfiguration": {
	"logDriver": "splunk",
	"options": {
		"splunk-url": "https://cloud.splunk.com:8080",
		"splunk-token": "...",
		"tag": "...",
		...
	},
	"secretOptions": [{
		"name": "splunk-token",
		"valueFrom": "/ecs/logconfig/splunkcred"
	}]
}
```

`firelensConfiguration`  
Jenis: [FirelensConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_FirelensConfiguration.html)Objek  
Wajib: Tidak  
 FireLens Konfigurasi untuk wadah. Digunakan untuk menentukan dan mengonfigurasi router log untuk log kontainer. Untuk informasi selengkapnya, lihat [Kirim log Amazon ECS ke AWS layanan atau AWS Partner](using_firelens.md).  

```
{
    "firelensConfiguration": {
        "type": "fluentd",
        "options": {
            "KeyName": ""
        }
    }
}
```  
`options`  
Tipe: Peta antar string  
Wajib: Tidak  
 key/value Peta opsi untuk digunakan saat mengkonfigurasi router log. Bidang ini opsional dan dapat digunakan untuk menentukan file konfigurasi kustom atau untuk menambahkan metadata tambahan, seperti tugas, ketentuan tugas, klaster, dan detail instans kontainer ke log acara. Jika ditentukan, sintaksis yang digunakan adalah `"options":{"enable-ecs-log-metadata":"true|false","config-file-type:"s3|file","config-file-value":"arn:aws:s3:::amzn-s3-demo-bucket/fluent.conf|filepath"}`. Untuk informasi selengkapnya, lihat [Contoh definisi tugas Amazon ECS: Rute log ke FireLens](firelens-taskdef.md).  
`type`  
Tipe: String  
Wajib: Ya  
Router log yang akan digunakan. Nilai yang valid adalah `fluentd` atau `fluentbit`.

#### Persyaratan sumber daya
<a name="container_definition_resourcerequirements-managed-instances"></a>

`resourceRequirements`  
Tipe: Array objek [ResourceRequirement](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ResourceRequirement.html)  
Wajib: Tidak  
Tipe dan jumlah sumber daya yang akan ditetapkan ke kontainer. Satu-satunya sumber daya yang didukung adalah GPU.    
`type`  
Tipe: String  
Diperlukan: Ya  
Jenis sumber daya yang akan ditetapkan ke kontainer. Nilai yang didukung adalah `GPU`.  
`value`  
Tipe: String  
Diperlukan: Ya  
Nilai untuk jenis sumber daya yang ditentukan.  
Jika `GPU` jenisnya digunakan, nilainya adalah jumlah fisik `GPUs` yang dicadangkan agen kontainer Amazon ECS untuk kontainer. Jumlah GPUs yang dicadangkan untuk semua kontainer dalam tugas tidak dapat melebihi jumlah yang tersedia GPUs pada instance kontainer tempat tugas diluncurkan.  
GPUs tidak tersedia untuk tugas yang berjalan di Fargate.

#### Waktu habis kontainer
<a name="container_definition_timeout-managed-instances"></a>

`startTimeout`  
Tipe: Integer  
Wajib: Tidak  
Nilai contoh: `120`  
Durasi waktu (dalam detik) untuk menunggu sebelum menyerah pada penyelesaian dependensi untuk kontainer.  
Misalnya, Anda menentukan dua kontainer dalam ketentuan tugas dengan `containerA` yang memiliki dependensi untuk `containerB` yang mencapai status `COMPLETE`, `SUCCESS`, atau `HEALTHY`. Jika `startTimeout` nilai ditentukan untuk `containerB` dan tidak mencapai status yang diinginkan dalam waktu itu, maka `containerA` tidak dimulai.  
Jika kontainer tidak memenuhi batasan ketergantungan atau waktu habis sebelum memenuhi batasan, Amazon ECS tidak memajukan kontainer dependen ke status berikutnya.
Nilai maksimumnya adalah 600 detik (10 menit).

`stopTimeout`  
Tipe: Integer  
Wajib: Tidak  
Nilai contoh: `120`  
Durasi waktu (dalam detik) untuk menunggu sebelum kontainer dimatikan secara paksa jika tidak keluar dengan sendirinya secara normal.  
Jika parameter tidak ditentukan, maka nilai default 30 detik digunakan. Nilai maksimumnya adalah 86400 detik (24 jam).

#### Dependensi kontainer
<a name="container_definition_dependency-managed-instances"></a>

`dependsOn`  
Tipe: Array objek [ContainerDependency](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDependency.html)  
Wajib: Tidak  
Dependensi yang ditentukan untuk pemulaian dan penonaktifan kontainer. Kontainer dapat berisi beberapa dependensi. Ketika dependensi ditentukan untuk memulai kontainer, maka akan dibalik jika ingin menonaktifkan kontainer. Misalnya, lihat [Dependensi kontainer](example_task_definitions.md#example_task_definition-containerdependency).  
Jika kontainer tidak memenuhi batasan ketergantungan atau waktu habis sebelum memenuhi batasan, Amazon ECS tidak memajukan kontainer dependen ke status berikutnya.
Parameter ini mengharuskan tugas atau layanan menggunakan versi platform `1.3.0` atau yang lebih baru (Linux) atau `1.0.0` (Windows).  

```
"dependsOn": [
    {
        "containerName": "string",
        "condition": "string"
    }
]
```  
`containerName`  
Tipe: String  
Wajib: Ya  
Nama kontainer yang harus memenuhi syarat yang ditentukan.  
`condition`  
Tipe: String  
Wajib: Ya  
Syarat dependensi kontainer. Berikut ini adalah syarat yang tersedia dan perilakunya:  
+ `START`Kondisi ini meniru perilaku link dan volume hari ini. Kondisi memvalidasi bahwa kontainer dependen dimulai sebelum mengizinkan kontainer lain untuk memulai.
+ `COMPLETE`— Kondisi ini memvalidasi bahwa kontainer dependen berjalan hingga selesai (keluar) sebelum mengizinkan kontainer lain untuk memulai. Ini dapat berguna untuk wadah non-esensial yang menjalankan skrip dan kemudian keluar. Kondisi ini tidak dapat diatur pada kontainer penting.
+ `SUCCESS`— Kondisi ini sama dengan`COMPLETE`, tetapi juga mengharuskan wadah keluar dengan `zero` status. Kondisi ini tidak dapat diatur pada kontainer penting.
+ `HEALTHY`- Kondisi ini memvalidasi bahwa wadah dependen melewati pemeriksaan kesehatan kontainer sebelum mengizinkan wadah lain untuk memulai. Ini mengharuskan wadah dependen memiliki pemeriksaan kesehatan yang dikonfigurasi dalam definisi tugas. Syarat ini dikonfirmasi hanya pada rintisan tugas.

#### Kontrol sistem
<a name="container_definition_systemcontrols-managed-instances"></a>

`systemControls`  
Tipe: Objek [SystemControl](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_SystemControl.html)  
Wajib: Tidak  
Daftar parameter kernel namespace untuk diatur dalam wadah. Parameter ini memetakan ke `Sysctls` dalam perintah docker create-container dan opsi untuk docker run. `--sysctl` Misalnya, Anda dapat mengonfigurasi `net.ipv4.tcp_keepalive_time` pengaturan untuk mempertahankan koneksi yang lebih lama.  
Kami tidak menyarankan Anda menentukan `systemControls` parameter terkait jaringan untuk beberapa kontainer dalam satu tugas yang juga menggunakan mode `awsvpc` atau `host` jaringan. Melakukan hal ini memiliki kelemahan sebagai berikut:  
+ Jika Anda mengatur `systemControls` untuk wadah apa pun, itu berlaku untuk semua kontainer dalam tugas. Jika Anda menyetel berbeda `systemControls` untuk beberapa kontainer dalam satu tugas, penampung yang dimulai terakhir menentukan mana yang `systemControls` berlaku.
Jika Anda menyetel namespace sumber daya IPC untuk digunakan untuk kontainer dalam tugas, kondisi berikut berlaku untuk kontrol sistem Anda. Untuk informasi selengkapnya, lihat [Mode IPC](task_definition_parameters.md#task_definition_ipcmode).  
+ Untuk tugas yang menggunakan mode `host` IPC, namespace `systemControls` IPC tidak didukung.
+ Untuk tugas yang menggunakan mode `task` IPC, `systemControls` nilai namespace IPC berlaku untuk semua kontainer dalam tugas.

```
"systemControls": [
    {
         "namespace":"string",
         "value":"string"
    }
]
```  
`namespace`  
Tipe: String  
Wajib: Tidak  
Parameter kernel namespace untuk menetapkan untuk. `value`  
Nilai namespace IPC yang valid:`"kernel.msgmax" | "kernel.msgmnb" | "kernel.msgmni" | "kernel.sem" | "kernel.shmall" | "kernel.shmmax" | "kernel.shmmni" | "kernel.shm_rmid_forced"`, dan `Sysctls` itu dimulai dengan `"fs.mqueue.*"`  
Nilai namespace jaringan yang valid: `Sysctls` yang dimulai dengan. `"net.*"` Di Fargate, hanya namespace yang ada di dalam `Sysctls` container yang diterima.  
Semua nilai ini didukung oleh Fargate.  
`value`  
Tipe: String  
Wajib: Tidak  
Nilai untuk parameter kernel namespace yang ditentukan dalam. `namespace`

#### Interaktif
<a name="container_definition_interactive-managed-instances"></a>

`interactive`  
Tipe: Boolean  
Wajib: Tidak  
Ketika parameter ini`true`, Anda dapat menerapkan aplikasi kontainer yang memerlukan `stdin` atau `tty` dialokasikan. Parameter ini memetakan ke `OpenStdin` dalam perintah docker create-container dan opsi `--interactive` untuk docker run.  
Nilai default-nya `false`.

#### Terminal semu
<a name="container_definition_pseudoterminal-managed-instances"></a>

`pseudoTerminal`  
Tipe: Boolean  
Wajib: Tidak  
Jika parameter ini `true`, TTY dialokasikan. Parameter ini memetakan ke `Tty` dalam perintah docker create-container dan opsi `--tty` untuk docker run.  
Nilai default-nya `false`.

### Parameter Linux
<a name="container_definition_linuxparameters-managed-instances"></a>

`linuxParameters`  
Tipe: Objek [LinuxParameters](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LinuxParameters.html)  
Wajib: Tidak  
Modifikasi khusus Linux yang diterapkan ke kontainer, seperti kemampuan kernel Linux.    
`capabilities`  
Tipe: Objek [KernelCapabilities](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KernelCapabilities.html)  
Wajib: Tidak  
Kemampuan Linux untuk kontainer yang ditambahkan ke atau diturunkan dari konfigurasi default yang disediakan oleh Docker.  
`devices`  
Tipe: Array objek [Perangkat](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Device.html)  
Wajib: Tidak  
Perangkat host apa pun yang akan diekspos ke kontainer. Parameter ini memetakan ke `Devices` dalam perintah docker create-container dan opsi `--device` untuk docker run.  
`initProcessEnabled`  
Tipe: Boolean  
Wajib: Tidak  
Jalankan proses `init` di dalam kontainer yang meneruskan sinyal dan menuai proses. Parameter ini memetakan ke `--init` opsi untuk docker run.  
`maxSwap`  
Parameter ini tidak didukung untuk tugas yang berjalan di Instans Terkelola Amazon ECS.
Tipe: Integer  
Wajib: Tidak  
Jumlah total memori tukar (dalam MiB) yang dapat digunakan oleh kontainer. Parameter ini diterjemahkan ke `--memory-swap` opsi untuk docker run di mana nilainya adalah jumlah memori kontainer ditambah nilainya. `maxSwap`  
`swappiness`  
Parameter ini tidak didukung untuk tugas yang berjalan di Instans Terkelola Amazon ECS.
Tipe: Integer  
Wajib: Tidak  
Hal ini mengizinkan Anda untuk menyetel perilaku pertukaran memori kontainer. Nilai `swappiness` sebesar `0` menyebabkan swapping tidak terjadi kecuali benar-benar diperlukan. Nilai `swappiness` sebesar `100` menyebabkan halaman di-swap dengan sangat agresif. Nilai yang valid adalah bilangan bulat antara `0` dan`100`. Jika parameter `swappiness` tidak ditentukan, nilai default sebesar `60` akan digunakan. Jika nilai tidak ditentukan untuk `maxSwap`, parameter ini akan diabaikan. Parameter ini memetakan ke `--memory-swappiness` opsi untuk docker run.  
`sharedMemorySize`  
Parameter ini tidak didukung untuk tugas yang berjalan di Instans Terkelola Amazon ECS.
Tipe: Integer  
Wajib: Tidak  
Ukuran (dalam MiB) volume `/dev/shm`. Parameter ini memetakan ke `--shm-size` opsi untuk docker run.  
`tmpfs`  
Tipe: Array objek [Tmpfs](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Tmpfs.html)  
Wajib: Tidak  
Jalur kontainer, opsi pemasangan, dan ukuran (dalam MiB) pemasangan tmpfs. Parameter ini memetakan ke `--tmpfs` opsi untuk docker run.

# Parameter definisi tugas Amazon ECS untuk Fargate
<a name="task_definition_parameters"></a>

Definisi tugas dibagi menjadi beberapa bagian terpisah: keluarga tugas, peran tugas AWS Identity and Access Management (IAM), mode jaringan, definisi wadah, volume, dan jenis peluncuran. Definisi keluarga dan wadah diperlukan dalam definisi tugas. Sebaliknya, peran tugas, mode jaringan, volume, dan jenis peluncuran bersifat opsional.

Anda dapat menggunakan parameter ini dalam file JSON untuk mengonfigurasi definisi tugas Anda.

Berikut ini adalah deskripsi yang lebih rinci untuk setiap parameter definisi tugas untuk Fargate.

## Rangkaian
<a name="family"></a>

`family`  
Tipe: String  
Diperlukan: Ya  
Ketika Anda mendaftarkan ketentuan tugas, Anda memberikan sebuah famili, yang mirip dengan nama untuk beberapa versi ketentuan tugas, yang ditentukan dengan nomor revisi. Definisi tugas pertama yang terdaftar ke dalam keluarga tertentu diberikan revisi 1, dan definisi tugas apa pun yang terdaftar setelah itu diberi nomor revisi berurutan.

## Kapasitas
<a name="requires_compatibilities"></a>

Saat mendaftarkan definisi tugas, Anda dapat menentukan kapasitas yang harus divalidasi oleh Amazon ECS terhadap definisi tugas. Jika definisi tugas tidak memvalidasi terhadap kompatibilitas yang ditentukan, pengecualian klien dikembalikan. 

Parameter berikut diperbolehkan dalam definisi tugas.

`requiresCompatibilities`  
Tipe: Array string  
Wajib: Tidak  
Nilai yang Valid: `FARGATE`  
Kapasitas untuk memvalidasi definisi tugas terhadap. Ini memulai pemeriksaan untuk memastikan bahwa semua parameter yang digunakan dalam definisi tugas memenuhi persyaratan Fargate

## Peran tugas
<a name="task_role_arn"></a>

`taskRoleArn`  
Tipe: String  
Wajib: Tidak  
Saat mendaftarkan definisi tugas, Anda dapat memberikan peran tugas untuk peran IAM yang memungkinkan kontainer dalam izin tugas memanggil AWS APIs yang ditentukan dalam kebijakan terkait atas nama Anda. Untuk informasi selengkapnya, lihat [Peran IAM tugas Amazon ECS](task-iam-roles.md).

## Peran eksekusi tugas
<a name="execution_role_arn"></a>

`executionRoleArn`  
Tipe: String  
Wajib: Bersyarat  
Nama Sumber Daya Amazon (ARN) dari peran eksekusi tugas yang memberikan izin agen penampung Amazon ECS untuk melakukan panggilan AWS API atas nama Anda.   
IAM role eksekusi tugas diperlukan sesuai dengan persyaratan tugas Anda. Untuk informasi selengkapnya, lihat [Peran IAM pelaksanaan tugas Amazon ECS](task_execution_IAM_role.md).

## Mode jaringan
<a name="network_mode"></a>

`networkMode`  
Tipe: String  
Diperlukan: Ya  
Mode jaringan Docker digunakan untuk kontainer dalam tugas. Untuk tugas Amazon ECS yang dihosting di Fargate, `awsvpc` mode jaringan diperlukan.

## Platform runtime
<a name="runtime-platform"></a>

`operatingSystemFamily`  
Tipe: String  
Wajib: Bersyarat  
Standar: LINUX  
Parameter ini diperlukan untuk tugas Amazon ECS yang di-host di Fargate.  
Saat Anda mendaftarkan definisi tugas, Anda menentukan keluarga sistem operasi.   
Nilai yang valid adalah`LINUX`,`WINDOWS_SERVER_2025_FULL`,`WINDOWS_SERVER_2025_CORE`,`WINDOWS_SERVER_2022_FULL`,`WINDOWS_SERVER_2022_CORE`,`WINDOWS_SERVER_2019_FULL`, dan`WINDOWS_SERVER_2019_CORE`.  
Semua definisi tugas yang digunakan dalam layanan harus memiliki nilai yang sama untuk parameter ini.  
Ketika definisi tugas adalah bagian dari layanan, nilai ini harus sesuai dengan `platformFamily` nilai layanan.

`cpuArchitecture`  
Tipe: String  
Wajib: Bersyarat  
Standar: X86\$164  
Jika parameter dibiarkan sebagai`null`, nilai default secara otomatis ditetapkan pada inisiasi tugas yang dihosting di Fargate.  
Saat Anda mendaftarkan definisi tugas, Anda menentukan arsitektur CPU. Nilai yang valid adalah `X86_64` dan `ARM64`.  
Semua definisi tugas yang digunakan dalam layanan harus memiliki nilai yang sama untuk parameter ini.  
Ketika Anda memiliki tugas Linux, Anda dapat mengatur nilainya`ARM64`. Untuk informasi selengkapnya, lihat [Definisi tugas Amazon ECS untuk beban kerja ARM 64-bit](ecs-arm64.md).

## Ukuran tugas
<a name="task_size"></a>

Saat Anda mendaftarkan definisi tugas, Anda dapat menentukan total CPU dan memori yang digunakan untuk tugas tersebut. Hal ini terpisah dari nilai `cpu` dan `memory` pada tingkat ketentuan kontainer. Untuk tugas yang di-host di Fargate (baik Linux dan Windows), bidang ini diperlukan dan ada nilai khusus untuk keduanya `cpu` dan `memory` yang didukung.

Parameter berikut diizinkan dalam ketentuan tugas:

`cpu`  
Tipe: String  
Diperlukan: Ya  
Parameter CPU dan memori tingkat tugas diperlukan dan digunakan untuk menentukan jenis dan ukuran instance tempat tugas dijalankan. Untuk tugas Windows, nilai-nilai ini tidak diberlakukan saat runtime, karena Windows tidak memiliki mekanisme asli yang dapat dengan mudah menerapkan batasan sumber daya kolektif pada sekelompok kontainer. Jika Anda ingin menerapkan batasan sumber daya, sebaiknya gunakan sumber daya tingkat kontainer untuk kontainer Windows.
Batas tegas unit CPU untuk hadir untuk tugas tersebut. Anda dapat menentukan nilai CPU dalam file JSON sebagai string dalam unit CPU atau virtual CPUs (vCPUs). Misalnya, Anda dapat menentukan nilai CPU baik seperti `1024` dalam unit CPU atau `1 vCPU` di vCPUs. Ketika definisi tugas terdaftar, nilai vCPU dikonversi ke bilangan bulat yang menunjukkan unit CPU.  
Bidang ini diperlukan dan Anda harus menggunakan salah satu nilai berikut, yang menentukan rentang nilai yang didukung untuk `memory` parameter tersebut. Tabel berikut menunjukkan kombinasi yang valid antara CPU dan memori tingkat tugas.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonECS/latest/developerguide/task_definition_parameters.html)

`memory`  
Tipe: String  
Diperlukan: Ya  
Parameter CPU dan memori tingkat tugas diperlukan dan digunakan untuk menentukan jenis dan ukuran instance tempat tugas dijalankan. Untuk tugas Windows, nilai-nilai ini tidak diberlakukan saat runtime, karena Windows tidak memiliki mekanisme asli yang dapat dengan mudah menerapkan batasan sumber daya kolektif pada sekelompok kontainer. Jika Anda ingin menerapkan batasan sumber daya, sebaiknya gunakan sumber daya tingkat kontainer untuk kontainer Windows.
Batas memori yang sulit untuk disajikan pada tugas. Anda dapat menentukan nilai memori dalam definisi tugas sebagai string dalam mebibytes (MiB) atau gigabyte (GB). Misalnya, Anda dapat menentukan nilai memori baik seperti `3072` di MiB atau `3 GB` GB. Ketika ketentuan tugas terdaftar, nilai GB dikonversi ke integer menunjukkan MiB.  
Bidang ini diperlukan dan Anda harus menggunakan salah satu nilai berikut, yang menentukan rentang nilai yang didukung untuk `cpu` parameter:      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonECS/latest/developerguide/task_definition_parameters.html)

## Definisi kontainer
<a name="container_definitions"></a>

Saat Anda mendaftarkan definisi tugas, Anda harus menentukan daftar definisi kontainer yang diteruskan ke Docker daemon pada instance container. Parameter berikut diizinkan dalam ketentuan kontainer.

**Topics**
+ [

### Parameter definisi wadah standar
](#standard_container_definition_params)
+ [

### Parameter definisi kontainer tingkat lanjut
](#advanced_container_definition_params)
+ [

### Parameter definisi kontainer lainnya
](#other_container_definition_params)

### Parameter definisi wadah standar
<a name="standard_container_definition_params"></a>

Parameter ketentuan tugas berikut diperlukan atau digunakan di sebagian besar ketentuan kontainer.

**Topics**
+ [

#### Nama
](#container_definition_name)
+ [

#### Citra
](#container_definition_image)
+ [

#### Memori
](#container_definition_memory)
+ [

#### Pemetaan port
](#container_definition_portmappings)
+ [

#### Kredensyal Repositori Pribadi
](#container_definition_repositoryCredentials)

#### Nama
<a name="container_definition_name"></a>

`name`  
Tipe: String  
Diperlukan: Ya  
Nama kontainer. Mengizinkan hingga 255 huruf (huruf besar dan huruf kecil), angka, tanda hubung, dan garis bawah. Jika Anda menautkan beberapa kontainer dalam definisi tugas, `name` satu kontainer dapat dimasukkan ke dalam `links` wadah lain. Ini untuk menghubungkan wadah.

#### Citra
<a name="container_definition_image"></a>

`image`  
Tipe: String  
Diperlukan: Ya  
Citra yang digunakan untuk memulai kontainer. String ini diteruskan langsung ke Docker daemon. Secara default, gambar dalam Docker Hub registri tersedia. Anda juga dapat menentukan repositori lain dengan salah satu atau`repository-url/image:tag`. `repository-url/image@digest` Maksimal 255 huruf (huruf besar dan kecil), angka, tanda hubung, garis bawah, titik dua, titik, garis miring, dan tanda angka diizinkan. Parameter ini memetakan ke `Image` dalam perintah docker create-container dan parameter `IMAGE` dari perintah docker run.  
+ Ketika tugas baru dimulai, agen kontainer Amazon ECS menarik versi terbaru dari citra yang ditentukan dan tanda untuk kontainer yang akan digunakan. Namun, pembaruan berikutnya ke gambar repositori tidak disebarkan ke tugas yang sudah berjalan.
+ Jika Anda tidak menentukan tag atau intisari di jalur gambar dalam definisi tugas, agen penampung Amazon ECS menggunakan `latest` tag untuk menarik gambar yang ditentukan. 
+  Pembaruan selanjutnya ke gambar repositori tidak disebarkan ke tugas yang sudah berjalan.
+ Citra di registri privat didukung. Untuk informasi selengkapnya, lihat [Menggunakan gambar AWS non-kontainer di Amazon ECS](private-auth.md).
+ Gambar di repositori Amazon ECR dapat ditentukan dengan menggunakan konvensi lengkap `registry/repository:tag` atau `registry/repository@digest` penamaan (misalnya, `aws_account_id.dkr.ecr.region.amazonaws.com` `/my-web-app:latest` atau). `aws_account_id.dkr.ecr.region.amazonaws.com` `/my-web-app@sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE`
+ Gambar di repositori resmi Docker Hub menggunakan satu nama (misalnya, `ubuntu` atau`mongo`).
+ Gambar di repositori lain di Docker Hub memenuhi syarat dengan nama organisasi (misalnya,`amazon/amazon-ecs-agent`).
+ Gambar di repositori online lainnya memenuhi syarat lebih lanjut dengan nama domain (misalnya, `quay.io/assemblyline/ubuntu`).

`versionConsistency`  
Tipe: String  
Nilai yang valid: `enabled` \$1 `disabled`  
Wajib: Tidak  
Menentukan apakah Amazon ECS akan menyelesaikan tag image container yang disediakan dalam definisi container ke image digest. Secara default, perilaku ini adalah`enabled`. Jika Anda menetapkan nilai untuk container sebagai`disabled`, Amazon ECS tidak akan menyelesaikan tag image container ke intisari dan akan menggunakan URI gambar asli yang ditentukan dalam definisi container untuk penerapan. Untuk informasi selengkapnya tentang resolusi gambar kontainer, lihat[Penerjemahan image kontainer](deployment-type-ecs.md#deployment-container-image-stability).

#### Memori
<a name="container_definition_memory"></a>

`memory`  
Tipe: Integer  
Wajib: Tidak  
Jumlah (dalam MiB) memori yang akan ditampilkan ke kontainer. Jika kontainer Anda mencoba untuk melebihi memori yang ditentukan di sini, kontainer akan dimatikan. Jumlah total memori yang disimpan untuk semua kontainer dalam tugas harus lebih rendah dari nilai `memory` tugas, jika ada yang ditentukan. Parameter ini memetakan ke `Memory` dalam perintah docker create-container dan opsi `--memory` untuk docker run.  
Daemon Docker 20.10.0 atau yang lebih baru menyimpan minimal 6 MiB memori untuk sebuah wadah. Jadi, jangan tentukan kurang dari 6 MiB memori untuk wadah Anda.  
Docker 19.03.13-ce atau daemon sebelumnya menyimpan minimal 4 MiB memori untuk sebuah wadah. Jadi, jangan tentukan kurang dari 4 MiB memori untuk wadah Anda.  
Jika Anda mencoba memaksimalkan pemanfaatan sumber daya Anda dengan menyediakan memori sebanyak mungkin untuk jenis instans tertentu, lihat[Memesan memori instans wadah Amazon ECS Linux](memory-management.md).

`memoryReservation`  
Tipe: Integer  
Wajib: Tidak  
Batas lunak (di MiB) memori untuk menyimpan kontainer. Ketika memori sistem sedang diperdebatkan, Docker upaya untuk menjaga memori kontainer ke batas lunak ini. Namun, wadah Anda dapat menggunakan lebih banyak memori saat dibutuhkan. Wadah dapat menggunakan hingga batas keras yang ditentukan dengan `memory` parameter (jika ada) atau semua memori yang tersedia pada instance kontainer, mana yang lebih dulu. Parameter ini memetakan ke `MemoryReservation` dalam perintah docker create-container dan opsi `--memory-reservation` untuk docker run.  
Jika nilai memori tingkat tugas tidak ditentukan, Anda harus menentukan bilangan bulat bukan nol untuk salah satu atau keduanya `memory` atau `memoryReservation` dalam definisi wadah. Jika Anda menentukan keduanya, `memory` harus lebih besar dari `memoryReservation`. Jika Anda menentukan`memoryReservation`, maka nilai tersebut dikurangi dari sumber daya memori yang tersedia untuk instance wadah tempat penampung ditempatkan. Jika tidak, nilai `memory` digunakan.  
Misalnya, kontainer Anda biasanya menggunakan memori 128 MiB, tetapi kadang-kadang meledak hingga 256 MiB memori untuk waktu yang singkat. Anda dapat mengatur 128 MiB, dan batas `memory` keras 300 MiB. `memoryReservation` Konfigurasi ini memungkinkan penampung untuk hanya menyimpan 128 MiB memori dari sumber daya yang tersisa pada instance container. Pada saat yang sama, konfigurasi ini juga memungkinkan wadah untuk menggunakan lebih banyak sumber daya memori bila diperlukan.  
Parameter ini tidak didukung untuk wadah Windows.
Daemon Docker 20.10.0 atau yang lebih baru menyimpan minimal 6 MiB memori untuk sebuah wadah. Jadi, jangan tentukan kurang dari 6 MiB memori untuk wadah Anda.  
Docker 19.03.13-ce atau daemon sebelumnya menyimpan minimal 4 MiB memori untuk sebuah wadah. Jadi, jangan tentukan kurang dari 4 MiB memori untuk wadah Anda.  
Jika Anda mencoba memaksimalkan pemanfaatan sumber daya Anda dengan menyediakan memori sebanyak mungkin untuk jenis instans tertentu, lihat[Memesan memori instans wadah Amazon ECS Linux](memory-management.md).

#### Pemetaan port
<a name="container_definition_portmappings"></a>

`portMappings`  
Tipe: Array objek  
Wajib: Tidak  
Pemetaan port mengekspos port jaringan kontainer Anda ke dunia luar. ini memungkinkan klien untuk mengakses aplikasi Anda. Ini juga digunakan untuk komunikasi antar kontainer dalam tugas yang sama.  
Untuk definisi tugas yang menggunakan mode `awsvpc` jaringan, hanya tentukan`containerPort`. `hostPort`Itu selalu diabaikan, dan port kontainer secara otomatis dipetakan ke port acak bernomor tinggi pada host.  
Pemetaan port pada Windows menggunakan alamat gateway `NetNAT` daripada `localhost`. Tidak ada loopback untuk pemetaan port di Windows, jadi Anda tidak dapat mengakses port yang dipetakan kontainer dari host itu sendiri.   
Sebagian besar bidang parameter ini (termasuk`containerPort`,`hostPort`,`protocol`) dipetakan ke `PortBindings` dalam perintah create-container docker dan opsi `--publish` untuk docker run. Jika mode jaringan dari definisi tugas diatur ke`host`, port host harus tidak terdefinisi atau cocok dengan port kontainer dalam pemetaan port.  
Setelah tugas mencapai status `RUNNING` , tugas port kontainer dan host manual dan otomatis akan terlihat di lokasi-lokasi berikut:  
+ Konsol: bagian **Pengikatan jaringan** dari deskripsi kontainer untuk tugas yang dipilih.
+ AWS CLI: Bagian `networkBindings` dari output perintah **describe-tasks** .
+ API: Respons `DescribeTasks` .
+ Metadata: Titik akhir metadata tugas.  
`appProtocol`  
Tipe: String  
Wajib: Tidak  
Protokol aplikasi yang digunakan untuk pemetaan port. Parameter ini hanya berlaku untuk Service Connect. Kami menyarankan Anda mengatur parameter ini agar konsisten dengan protokol yang digunakan aplikasi Anda. Jika Anda menyetel parameter ini, Amazon ECS akan menambahkan penanganan koneksi khusus protokol ke proxy service connect. Jika Anda menyetel parameter ini, Amazon ECS menambahkan telemetri khusus protokol di konsol Amazon ECS dan. CloudWatch  
Jika Anda tidak menetapkan nilai untuk parameter ini, maka TCP digunakan. Namun, Amazon ECS tidak menambahkan telemetri khusus protokol untuk TCP.  
Untuk informasi selengkapnya, lihat [Menggunakan Service Connect untuk menghubungkan layanan Amazon ECS dengan nama pendek](service-connect.md).  
Nilai protokol yang valid: `"http" | "http2" | "grpc" `  
`containerPort`  
Jenis: Integer  
Diperlukan: Ya, kapan `portMappings` digunakan  
Nomor port pada kontainer yang terikat ke port host yang ditentukan pengguna atau secara otomatis ditetapkan.  
Untuk tugas yang menggunakan mode `awsvpc` jaringan, Anda gunakan `containerPort` untuk menentukan port yang terbuka.  
Untuk wadah Windows di Fargate, Anda tidak dapat menggunakan port 3150 untuk file. `containerPort` Ini karena sudah dipesan.  
`containerPortRange`  
Tipe: String  
Wajib: Tidak  
Rentang nomor port pada kontainer yang terikat pada rentang port host yang dipetakan secara dinamis.   
Anda hanya dapat mengatur parameter ini dengan menggunakan `register-task-definition` API. Opsi ini tersedia dalam `portMappings` parameter. Untuk informasi selengkapnya, lihat [register-task-definition](https://docs.aws.amazon.com/cli/latest/reference/ecs/register-task-definition.html) dalam *Referensi AWS Command Line Interface *.   
Aturan berikut berlaku saat Anda menentukan`containerPortRange`:  
+ Anda harus menggunakan mode `awsvpc` jaringan.
+ Parameter ini tersedia untuk sistem operasi Linux dan Windows.
+ Instance container harus memiliki setidaknya versi 1.67.0 dari agen kontainer dan setidaknya versi 1.67.0-1 dari paket. `ecs-init`
+ Anda dapat menentukan maksimum 100 rentang port untuk setiap kontainer.
+ Anda tidak menentukan`hostPortRange`. Nilai `hostPortRange` ditetapkan sebagai berikut:
  + Untuk kontainer dalam tugas dengan mode `awsvpc` jaringan, `hostPort` diatur ke nilai yang sama dengan`containerPort`. Ini adalah strategi pemetaan statis.
+ Nilai yang `containerPortRange` valid adalah antara 1 dan 65535.
+ Sebuah port hanya dapat dimasukkan dalam satu pemetaan port untuk setiap kontainer.
+ Anda tidak dapat menentukan rentang port yang tumpang tindih.
+ Port pertama dalam kisaran harus kurang dari port terakhir dalam kisaran.
+ Dockermerekomendasikan agar Anda mematikan docker-proxy di file konfigurasi Docker daemon ketika Anda memiliki banyak port.

  Untuk informasi selengkapnya, lihat [Masalah \$111185](https://github.com/moby/moby/issues/11185) di GitHub.

  [https://docs.aws.amazon.com/AmazonECS/latest/developerguide/bootstrap_container_instance.html#bootstrap_docker_daemon](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/bootstrap_container_instance.html#bootstrap_docker_daemon)
Anda dapat menelepon [DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html)untuk melihat`hostPortRange`, yang merupakan port host yang terikat ke port kontainer.  
Rentang port tidak disertakan dalam peristiwa tugas Amazon ECS, yang dikirim ke EventBridge. Untuk informasi selengkapnya, lihat [Otomatiskan tanggapan terhadap kesalahan Amazon ECS menggunakan EventBridge](cloudwatch_event_stream.md).  
`hostPortRange`  
Tipe: String  
Wajib: Tidak  
Rentang nomor port pada host yang digunakan dengan pengikatan jaringan. Ini ditugaskan oleh Docker dan dikirim oleh agen Amazon ECS.  
`hostPort`  
Tipe: Integer  
Wajib: Tidak  
Nomor port pada instans kontainer untuk menyimpan kontainer Anda.  
`hostPort`Dapat tetap kosong atau nilainya sama dengan`containerPort`.  
Rentang port fana default Docker versi 1.6.0 dan yang lebih baru tercantum pada instance di bawah. `/proc/sys/net/ipv4/ip_local_port_range` Jika parameter kernel ini tidak tersedia, port sementara default berkisar sejak `49153–65535` digunakan. Jangan mencoba menentukan port host dalam rentang port sementara. Ini karena ini dicadangkan untuk penugasan otomatis. Secara umum, port di bawah `32768` berada di luar jangkauan port fana.   
Port cadangan default adalah `22` untuk SSH, Docker port `2375` dan`2376`, dan port agen kontainer Amazon ECS. `51678-51680` Port host apa pun yang sebelumnya ditentukan pengguna untuk tugas yang sedang berjalan juga dicadangkan saat tugas sedang berjalan. Setelah tugas berhenti, port host dilepaskan. Port cadangan saat ini ditampilkan di `remainingResources` **describe-container-instances** output. Instance kontainer mungkin memiliki hingga 100 port cadangan sekaligus, termasuk port cadangan default. Port yang ditetapkan secara otomatis tidak dihitung terhadap kuota 100 port cadangan.  
`name`  
Tipe: String  
Wajib: Tidak, diperlukan agar Service Connect dan VPC Lattice dikonfigurasi dalam layanan  
Nama yang digunakan untuk pemetaan port. Parameter ini hanya berlaku untuk Service Connect dan VPC Lattice. Parameter ini adalah nama yang Anda gunakan dalam konfigurasi Service Connect dan VPC Lattice suatu layanan.  
Untuk informasi selengkapnya, lihat [Menggunakan Service Connect untuk menghubungkan layanan Amazon ECS dengan nama pendek](service-connect.md).  
Dalam contoh berikut, kedua bidang wajib untuk Service Connect dan VPC Lattice digunakan.  

```
"portMappings": [
    {
        "name": string,
        "containerPort": integer
    }
]
```  
`protocol`  
Tipe: String  
Wajib: Tidak  
Protokol yang digunakan untuk pemetaan port. Nilai yang valid adalah `tcp` dan `udp`. Default adalah `tcp`.  
Hanya `tcp` didukung untuk Service Connect. Ingat itu `tcp` tersirat jika bidang ini tidak disetel. 
Jika Anda menentukan port host, gunakan sintaks berikut.  

```
"portMappings": [
    {
        "containerPort": integer,
        "hostPort": integer
    }
    ...
]
```
Jika Anda menginginkan port host yang ditetapkan secara otomatis, gunakan sintaks berikut.  

```
"portMappings": [
    {
        "containerPort": integer
    }
    ...
]
```

#### Kredensyal Repositori Pribadi
<a name="container_definition_repositoryCredentials"></a>

`repositoryCredentials`  
Tipe: Objek [RepositoryCredentials](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RepositoryCredentials.html)  
Wajib: Tidak  
Kredensyal repositori untuk otentikasi registri pribadi.  
Untuk informasi selengkapnya, lihat [Menggunakan gambar AWS non-kontainer di Amazon ECS](private-auth.md).    
 `credentialsParameter`  
Tipe: String  
Diperlukan: Ya, kapan `repositoryCredentials` digunakan  
Amazon Resource Name (ARN) dari rahasia yang berisi kredensial repositori privat.  
Untuk informasi selengkapnya, lihat [Menggunakan gambar AWS non-kontainer di Amazon ECS](private-auth.md).  
Saat Anda menggunakan Amazon ECS API, AWS CLI, atau AWS SDKs, jika rahasia ada di Wilayah yang sama dengan tugas yang Anda luncurkan, maka Anda dapat menggunakan ARN lengkap atau nama rahasianya. Bila Anda menggunakan Konsol Manajemen AWS, Anda harus menentukan ARN penuh rahasia.
Berikut ini adalah cuplikan definisi tugas yang menunjukkan parameter yang diperlukan:  

```
"containerDefinitions": [
    {
        "image": "private-repo/private-image",
        "repositoryCredentials": {
            "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name"
        }
    }
]
```

### Parameter definisi kontainer tingkat lanjut
<a name="advanced_container_definition_params"></a>

Parameter definisi kontainer lanjutan berikut memberikan kemampuan yang diperluas ke perintah docker run yang digunakan untuk meluncurkan container di instance container Amazon ECS Anda.

**Topics**
+ [

#### Kebijakan Mulai Ulang
](#container_definition_restart_policy)
+ [

#### Pemeriksaan kondisi
](#container_definition_healthcheck)
+ [

#### Lingkungan
](#container_definition_environment)
+ [

#### Pengaturan jaringan
](#container_definition_network)
+ [

#### Penyimpanan dan pencatatan log
](#container_definition_storage)
+ [

#### Keamanan
](#container_definition_security)
+ [

#### Batas sumber daya
](#container_definition_limits)
+ [

#### Label docker
](#container_definition_labels)

#### Kebijakan Mulai Ulang
<a name="container_definition_restart_policy"></a>

`restartPolicy`  
Kebijakan restart kontainer dan parameter konfigurasi terkait. Saat Anda menyiapkan kebijakan restart untuk penampung, Amazon ECS dapat memulai ulang penampung tanpa perlu mengganti tugas. Untuk informasi selengkapnya, lihat [Mulai ulang kontainer individual dalam tugas Amazon ECS dengan kebijakan restart kontainer](container-restart-policy.md).    
`enabled`  
Jenis: Boolean  
Wajib: Ya  
Menentukan apakah kebijakan restart diaktifkan untuk wadah.  
`ignoredExitCodes`  
Jenis: himpunan integer  
Wajib: Tidak  
Daftar kode keluar yang akan diabaikan Amazon ECS dan tidak mencoba memulai ulang. Anda dapat menentukan maksimum 50 kode keluar kontainer. Secara default, Amazon ECS tidak mengabaikan kode keluar apa pun.  
`restartAttemptPeriod`  
Tipe: Integer  
Wajib: Tidak  
Periode waktu (dalam detik) wadah harus dijalankan sebelum restart dapat dicoba. Sebuah wadah dapat dimulai ulang hanya sekali setiap `restartAttemptPeriod` detik. Jika kontainer tidak dapat berjalan untuk periode waktu ini dan keluar lebih awal, itu tidak akan dimulai ulang. Anda dapat mengatur minimal `restartAttemptPeriod` 60 detik dan maksimum `restartAttemptPeriod` 1800 detik. Secara default, kontainer harus berjalan selama 300 detik sebelum dapat dimulai ulang.

#### Pemeriksaan kondisi
<a name="container_definition_healthcheck"></a>

`healthCheck`  
Perintah pemeriksaan kesehatan kontainer dan parameter konfigurasi terkait untuk wadah. Untuk informasi selengkapnya, lihat [Menentukan Kondisi Tugas Amazon ECS Menggunakan Pemeriksaan Kondisi Kontainer](healthcheck.md).    
`command`  
Array string yang mewakili perintah yang dijalankan kontainer untuk menentukan apakah itu sehat. Array string dapat dimulai dengan `CMD` untuk menjalankan argumen perintah secara langsung, atau `CMD-SHELL` untuk menjalankan perintah dengan shell default container. Jika tidak ada yang `CMD` ditentukan, digunakan.  
Saat mendaftarkan definisi tugas di Konsol Manajemen AWS, gunakan daftar perintah yang dipisahkan koma. Perintah ini dikonversi ke string setelah definisi tugas dibuat. Contoh masukan untuk pemeriksaan kesehatan adalah sebagai berikut.  

```
CMD-SHELL, curl -f http://localhost/ || exit 1
```
Saat mendaftarkan definisi tugas menggunakan panel Konsol Manajemen AWS JSON,, atau AWS CLI APIs, lampirkan daftar perintah dalam tanda kurung. Contoh masukan untuk pemeriksaan kesehatan adalah sebagai berikut.  

```
[ "CMD-SHELL", "curl -f http://localhost/ || exit 1" ]
```
Kode keluar 0, tanpa `stderr` output, menunjukkan keberhasilan, dan kode keluar bukan nol menunjukkan kegagalan.   
`interval`  
Periode waktu (dalam detik) antara setiap pemeriksaan kesehatan. Anda dapat menentukan antara 5 dan 300 detik. Nilai default-nya adalah 30 detik.  
`timeout`  
Periode waktu (dalam hitungan detik) untuk menunggu pemeriksaan kesehatan berhasil sebelum dianggap gagal. Anda dapat menentukan antara 2 dan 60 detik. Nilai defaultnya adalah 5 detik.  
`retries`  
Jumlah raktu untuk mencoba kembali pemeriksaan kondisi yang gagal sebelum kontainer dianggap tidak sehat. Anda dapat menentukan antara 1 dan 10 percobaan ulang. Nilai default-nya adalah tiga kali percobaan ulang.  
`startPeriod`  
Masa tenggang opsional untuk menyediakan waktu kontainer untuk bootstrap sebelum pemeriksaan kesehatan yang gagal dihitung terhadap jumlah maksimum percobaan ulang. Anda dapat menentukan nilai antara 0 dan 300 detik. Secara default, `startPeriod` dinonaktifkan.  
Jika pemeriksaan kondisi berhasil dalam `startPeriod`, maka kontainer dianggap sehat dan kegagalan berikutnya dihitung terhadap jumlah maksimum percobaan kembali.

#### Lingkungan
<a name="container_definition_environment"></a>

`cpu`  
Tipe: Integer  
Wajib: Tidak  
Jumlah `cpu` unit cadangan agen kontainer Amazon ECS untuk kontainer. Di Linux, parameter ini dipetakan `CpuShares` di bagian [Create a container](https://docs.docker.com/reference/api/engine/version/v1.38/#operation/ContainerCreate).  
Bidang ini opsional untuk tugas yang menggunakan Fargate. Jumlah total CPU yang dicadangkan untuk semua kontainer yang berada dalam tugas harus lebih rendah dari nilai tingkat tugas`cpu`.  
Linuxkontainer berbagi unit CPU yang tidak terisi dengan kontainer lain pada instance kontainer dengan rasio yang sama dengan jumlah yang dialokasikan. Misalnya, asumsikan bahwa Anda menjalankan tugas kontainer tunggal pada tipe instans inti tunggal dengan 512 unit CPU yang ditentukan untuk kontainer tersebut. Selain itu, tugas itu adalah satu-satunya tugas yang berjalan pada instance container. Dalam contoh ini, wadah dapat menggunakan 1.024 pangsa unit CPU penuh pada waktu tertentu. Namun, asumsikan bahwa Anda meluncurkan salinan lain dari tugas yang sama pada instance kontainer itu. Setiap tugas dijamin minimal 512 unit CPU bila diperlukan. Demikian pula, jika wadah lain tidak menggunakan CPU yang tersisa, setiap kontainer dapat mengambang ke penggunaan CPU yang lebih tinggi. Namun, jika kedua tugas tersebut 100% aktif sepanjang waktu, mereka terbatas pada 512 unit CPU.  
Pada instance Linux container, Docker daemon pada instance container menggunakan nilai CPU untuk menghitung rasio pangsa CPU relatif untuk menjalankan container. Nilai pangsa CPU minimum yang valid yang diizinkan oleh kernel Linux adalah 2, dan nilai pangsa CPU valid maksimum yang diizinkan oleh kernel Linux adalah 262144. Namun, parameter CPU tidak diperlukan, dan Anda dapat menggunakan nilai CPU di bawah dua dan di atas 262144 dalam definisi container Anda. Untuk nilai CPU di bawah dua (termasuk null) dan di atas 262144, perilaku bervariasi berdasarkan versi agen penampung Amazon ECS Anda:  
Pada instance Windows kontainer, kuota CPU diberlakukan sebagai kuota absolut. Windowscontainer hanya memiliki akses ke jumlah CPU tertentu yang ditentukan dalam definisi tugas. Nilai CPU nol atau nol diteruskan ke Docker as`0`. Windowskemudian menafsirkan nilai ini sebagai 1% dari satu CPU.  
Untuk contoh selengkapnya, lihat [Cara Amazon ECS mengelola sumber daya CPU dan memori](https://aws.amazon.com/blogs/containers/how-amazon-ecs-manages-cpu-and-memory-resources/).

`gpu`  
Parameter ini tidak didukung untuk kontainer yang di-host di Fargate.  
Tipe: Objek [ResourceRequirement](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ResourceRequirement.html)  
Wajib: Tidak  
Jumlah fisik `GPUs` yang dicadangkan agen kontainer Amazon ECS untuk kontainer. Jumlah GPUs cadangan untuk semua kontainer dalam tugas tidak boleh melebihi jumlah yang tersedia GPUs pada instance kontainer tempat tugas diluncurkan. Untuk informasi selengkapnya, lihat [Definisi tugas Amazon ECS untuk beban kerja GPU](ecs-gpu.md).

`Elastic Inference accelerator`  
Parameter ini tidak didukung untuk kontainer yang di-host di Fargate.  
Tipe: Objek [ResourceRequirement](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ResourceRequirement.html)  
Wajib: Tidak  
Untuk `InferenceAccelerator` jenisnya, `value` cocok dengan yang `deviceName` `InferenceAccelerator` ditentukan dalam definisi tugas. Untuk informasi selengkapnya, lihat [Nama akselerator Elastic Inference (usang)](#elastic-Inference-accelerator).

`essential`  
Tipe: Boolean  
Wajib: Tidak  
Misalkan `essential` parameter wadah ditandai sebagai`true`, dan wadah itu gagal atau berhenti karena alasan apa pun. Kemudian, semua wadah lain yang merupakan bagian dari tugas dihentikan. Jika `essential` parameter wadah ditandai sebagai`false`, maka kegagalannya tidak mempengaruhi sisa kontainer dalam suatu tugas. Jika parameter ini dihilangkan, kontainer diasumsikan menjadi penting.  
Semua tugas harus memiliki setidaknya satu kontainer penting. Misalkan Anda memiliki aplikasi yang terdiri dari beberapa kontainer. Kemudian, kelompokkan wadah yang digunakan untuk tujuan bersama menjadi komponen, dan pisahkan komponen yang berbeda menjadi beberapa definisi tugas. Untuk informasi selengkapnya, lihat [Merancang Aplikasi Anda untuk Amazon ECS](application_architecture.md).  

```
"essential": true|false
```

`entryPoint`  
Versi awal agen kontainer Amazon ECS tidak menangani `entryPoint` parameter dengan benar. Jika Anda memiliki masalah menggunakan `entryPoint`, perbarui agen kontainer Anda atau masukkan perintah dan argumen Anda sebagai item array `command` sebagai gantinya.
Tipe: Array string  
Wajib: Tidak  
Titik masuk yang diteruskan ke wadah.   

```
"entryPoint": ["string", ...]
```

`command`  
Tipe: Array string  
Wajib: Tidak  
Perintah yang diteruskan ke kontainer. Parameter ini memetakan ke `Cmd` dalam perintah create-container dan parameter `COMMAND` ke docker run. Jika ada beberapa argumen, pastikan bahwa setiap argumen adalah string terpisah dalam array.  

```
"command": ["string", ...]
```

`workingDirectory`  
Tipe: String  
Wajib: Tidak  
Direktori kerja untuk menjalankan perintah di dalam wadah di. Parameter ini memetakan ke `WorkingDir` di bagian [Membuat kontainer](https://docs.docker.com/reference/api/engine/version/v1.38/#operation/ContainerCreate) dari [API Jarak Jauh Docker](https://docs.docker.com/reference/api/engine/version/v1.38/) dan pilihan `--workdir` untuk [https://docs.docker.com/reference/cli/docker/container/run/](https://docs.docker.com/reference/cli/docker/container/run/).  

```
"workingDirectory": "string"
```

`environmentFiles`  
Ini tidak tersedia untuk wadah Windows di Fargate.  
Tipe: Array objek  
Wajib: Tidak  
Daftar file yang berisi variabel lingkungan untuk diteruskan ke kontainer. Parameter ini memetakan ke `--env-file` opsi ke perintah docker run.  
Anda dapat menentukan hingga 10 file lingkungan. File harus memiliki ekstensi file `.env`. Setiap baris dalam file lingkungan berisi variabel lingkungan dalam `VARIABLE=VALUE` format. Baris yang dimulai dengan `#` diperlakukan sebagai komentar dan diabaikan.   
Jika ada variabel lingkungan individu yang ditentukan dalam ketentuan kontainer, maka akan lebih diutamakan daripada variabel yang ada di dalam file lingkungan. Jika beberapa file lingkungan ditentukan yang berisi variabel yang sama, mereka diproses dari atas ke bawah. Kami merekomendasikan agar Anda menggunakan nama variabel yang unik. Untuk informasi selengkapnya, lihat [Meneruskan variabel lingkungan individual ke wadah Amazon ECS](taskdef-envfiles.md).    
`value`  
Tipe: String  
Wajib: Ya  
Amazon Resource Name (ARN) dari objek Amazon S3 yang berisi variabel lingkungan file.  
`type`  
Tipe: String  
Wajib: Ya  
Tipe file yang akan digunakan. Satu-satunya nilai yang didukung adalah `s3`.

`environment`  
Tipe: Array objek  
Wajib: Tidak  
Variabel lingkungan untuk disampaikan ke kontainer. Parameter ini memetakan ke `Env` dalam perintah docker create-container dan opsi `--env` ke perintah docker run.  
Kami tidak menyarankan menggunakan variabel lingkungan teks biasa untuk informasi sensitif, seperti data kredensial.  
`name`  
Tipe: String  
Diperlukan: Ya, saat `environment` digunakan  
Nama variabel lingkungan.  
`value`  
Tipe: String  
Diperlukan: Ya, saat `environment` digunakan  
Nilai dari variabel lingkungan.

```
"environment" : [
    { "name" : "string", "value" : "string" },
    { "name" : "string", "value" : "string" }
]
```

`secrets`  
Tipe: Object array  
Wajib: Tidak  
Objek yang mewakili rahasia untuk mengekspos ke wadah Anda. Untuk informasi selengkapnya, lihat [Meneruskan data sensitif ke wadah Amazon ECS](specifying-sensitive-data.md).    
`name`  
Tipe: String  
Wajib: Ya  
Nilai untuk ditetapkan sebagai variabel lingkungan pada kontainer.  
`valueFrom`  
Tipe: String  
Wajib: Ya  
Secret untuk mengekspos ke kontainer. Nilai yang didukung adalah Nama Sumber Daya Amazon (ARN) lengkap dari AWS Secrets Manager rahasia atau ARN lengkap parameter di Parameter Store. AWS Systems Manager   
Jika parameter Systems Manager Parameter Store atau parameter Secrets Manager Wilayah AWS sama dengan tugas yang Anda luncurkan, Anda dapat menggunakan ARN lengkap atau nama rahasia. Jika parameter ada di Wilayah yang berbeda, ARN lengkap harus disebutkan.

```
"secrets": [
    {
        "name": "environment_variable_name",
        "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
    }
]
```

#### Pengaturan jaringan
<a name="container_definition_network"></a>

`disableNetworking`  
Parameter ini tidak didukung untuk tugas yang berjalan di Fargate.  
Tipe: Boolean  
Wajib: Tidak  
Ketika parameter ini benar, jaringan mati di dalam wadah.  
Nilai default-nya `false`.  

```
"disableNetworking": true|false
```

`links`  
Parameter ini tidak didukung untuk tugas yang menggunakan mode `awsvpc` jaringan.  
Tipe: Array string  
Wajib: Tidak  
Parameter `link` mengizinkan kontainer untuk berkomunikasi satu sama lain tanpa perlu port pemetaan. Parameter ini hanya didukung jika mode jaringan dari definisi tugas diatur ke`bridge`. `name:internalName`Konstruk ini analog dengan dalam tautan. `name:alias` Docker Hingga 255 huruf (huruf besar dan kecil), angka, tanda hubung, dan garis bawah diperbolehkan..  
Kontainer yang ditempatkan pada instance kontainer yang sama dapat berkomunikasi satu sama lain tanpa memerlukan tautan atau pemetaan port host. Isolasi jaringan pada instans kontainer dikendalikan oleh grup keamanan dan pengaturan VPC.

```
"links": ["name:internalName", ...]
```

`hostname`  
Tipe: String  
Wajib: Tidak  
Nama host yang digunakan untuk kontainer Anda. Parameter ini memetakan ke `Hostname` dalam docker create-container dan opsi `--hostname` untuk docker run.  
Jika Anda menggunakan mode `awsvpc` jaringan, `hostname` parameter tidak didukung.

```
"hostname": "string"
```

`dnsServers`  
Ini tidak didukung untuk tugas yang berjalan di Fargate.  
Tipe: Array string  
Wajib: Tidak  
Daftar server DNS yang disajikan untuk kontainer.  

```
"dnsServers": ["string", ...]
```

`extraHosts`  
Parameter ini tidak didukung untuk tugas yang menggunakan mode `awsvpc` jaringan.  
Tipe: Array objek  
Wajib: Tidak  
Daftar nama host dan pemetaan alamat IP untuk ditambahkan ke file `/etc/hosts` di kontainer.   
Parameter ini memetakan ke `ExtraHosts` dalam perintah docker create-container dan opsi `--add-host` untuk docker run.  

```
"extraHosts": [
      {
        "hostname": "string",
        "ipAddress": "string"
      }
      ...
    ]
```  
`hostname`  
Tipe: String  
Diperlukan: Ya, kapan `extraHosts` digunakan  
Nama host yang akan digunakan dalam entri `/etc/hosts`.  
`ipAddress`  
Tipe: String  
Diperlukan: Ya, kapan `extraHosts` digunakan  
Alamat IP yang akan digunakan dalam `/etc/hosts` entri.

#### Penyimpanan dan pencatatan log
<a name="container_definition_storage"></a>

`readonlyRootFilesystem`  
Tipe: Boolean  
Wajib: Tidak  
Jika parameter ini betul, kontainer diberikan akses hanya-baca ke sistem file asalnya. Parameter ini memetakan ke `ReadonlyRootfs` dalam perintah docker create-container opsi `--read-only` untuk docker run.  
Parameter ini tidak didukung untuk kontainer Windows.
Nilai default-nya `false`.  

```
"readonlyRootFilesystem": true|false
```

`mountPoints`  
Tipe: Array objek  
Wajib: Tidak  
Titik pemasangan untuk volume data dalam penampung Anda. Parameter ini memetakan ke `Volumes` dalam create-container Docker API dan opsi `--volume` untuk docker run.  
Kontainer Windows dapat memasang seluruh direktori pada drive yang sama dengan `$env:ProgramData`. Kontainer Windows tidak dapat memasang direktori pada drive yang berbeda, dan titik pemasangan tidak dapat digunakan di seluruh drive. Anda harus menentukan titik pemasangan untuk melampirkan volume Amazon EBS langsung ke tugas Amazon ECS.    
`sourceVolume`  
Tipe: String  
Diperlukan: Ya, kapan `mountPoints` digunakan  
Nama volume yang akan dipasang.  
`containerPath`  
Tipe: String  
Diperlukan: Ya, kapan `mountPoints` digunakan  
Jalur dalam wadah tempat volume akan dipasang.  
`readOnly`  
Tipe: Boolean  
Wajib: Tidak  
Jika nilai ini adalah `true`, kontainer memiliki akses hanya-baca ke volume. Jika nilai ini adalah `false`, maka kontainer dapat menulis ke volume. Nilai default-nya adalah `false`.  
Untuk tugas yang berjalan pada instans EC2 yang menjalankan sistem operasi Windows, biarkan nilainya sebagai default. `false`

`volumesFrom`  
Tipe: Array objek  
Wajib: Tidak  
Volume data untuk memasang dari kontainer lain. Parameter ini memetakan ke `VolumesFrom` dalam perintah docker create-container dan opsi `--volumes-from` untuk docker run.    
`sourceContainer`  
Tipe: String  
Diperlukan: Ya, saat `volumesFrom` digunakan  
Nama kontainer untuk memasang volume.  
`readOnly`  
Tipe: Boolean  
Wajib: Tidak  
Jika nilai ini adalah `true`, kontainer memiliki akses hanya-baca ke volume. Jika nilai ini adalah `false`, maka kontainer dapat menulis ke volume. Nilai default-nya adalah `false`.

```
"volumesFrom": [
                {
                  "sourceContainer": "string",
                  "readOnly": true|false
                }
              ]
```

`logConfiguration`  
Jenis: [LogConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LogConfiguration.html)Objek  
Wajib: Tidak  
Spesifikasi konfigurasi log untuk kontainer.  
Misalnya definisi tugas yang menggunakan konfigurasi log, lihat[Contoh definisi tugas Amazon ECS](example_task_definitions.md).  
Parameter ini memetakan ke `LogConfig` dalam perintah docker create-container dan opsi `--log-driver` untuk docker run. Secara default, kontainer menggunakan driver logging yang sama dengan yang digunakan Docker daemon. Namun, penampung mungkin menggunakan driver logging yang berbeda dari Docker daemon dengan menentukan driver log dengan parameter ini dalam definisi container. Untuk menggunakan driver penlog yang berbeda untuk kontainer, sistem log harus dikonfigurasi dengan benar pada instans kontainer (atau pada server log yang berbeda untuk opsi penlog jarak jauh).   
Pertimbangkan hal berikut saat menentukan konfigurasi log untuk kontainer Anda:  
+ Amazon ECS mendukung subset driver logging yang tersedia untuk daemon. Docker
+ Parameter ini memerlukan Docker Remote API versi 1.18 atau yang lebih baru pada instance container Anda.
+ Anda harus menginstal perangkat lunak tambahan apa pun di luar tugas. Misalnya, agregator Fluentd keluaran atau host jarak jauh yang menjalankan Logstash untuk mengirim log ke. Gelf

```
"logConfiguration": {
      "logDriver": "awslogs","fluentd","gelf","json-file","journald","splunk","syslog","awsfirelens",
      "options": {"string": "string"
        ...},
	"secretOptions": [{
		"name": "string",
		"valueFrom": "string"
	}]
}
```  
`logDriver`  
Tipe: String  
Nilai yang valid: `"awslogs","fluentd","gelf","json-file","journald","splunk","syslog","awsfirelens"`  
Diperlukan: Ya, saat `logConfiguration` digunakan  
Driver log yang digunakan untuk kontainer. Secara default, nilai valid yang tercantum sebelumnya adalah driver log yang dapat berkomunikasi dengan agen penampung Amazon ECS.  
Driver log yang didukung adalah`awslogs`,`splunk`, dan`awsfirelens`.  
Untuk informasi selengkapnya tentang cara menggunakan driver `awslogs` log dalam definisi tugas untuk mengirim log kontainer Anda ke CloudWatch Log, lihat[Kirim log Amazon ECS ke CloudWatch](using_awslogs.md).  
Untuk informasi selengkapnya tentang penggunaan driver log `awsfirelens`, lihat [Perutean Log Kustom](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html).  
Jika Anda memiliki driver khusus yang tidak terdaftar, Anda dapat melakukan fork proyek agen penampung Amazon ECS yang [tersedia GitHub](https://github.com/aws/amazon-ecs-agent) dan menyesuaikannya agar berfungsi dengan driver itu. Kami mendorong Anda untuk mengirim permintaan tarik untuk perubahan yang ingin Anda sertakan. Namun, saat ini kami tidak mendukung menjalankan salinan yang dimodifikasi dari perangkat lunak ini.
Parameter ini memerlukan Docker Remote API versi 1.18 atau lebih besar pada instans kontainer Anda.  
`options`  
Tipe: Peta antar string  
Wajib: Tidak  
 key/value Peta opsi konfigurasi untuk dikirim ke driver log.  
Opsi yang dapat Anda tentukan tergantung pada driver log. Beberapa opsi yang dapat Anda tentukan saat Anda menggunakan `awslogs` router untuk merutekan log ke Amazon CloudWatch meliputi yang berikut:    
`awslogs-create-group`  
Wajib: Tidak  
Tentukan apakah Anda ingin grup log dibuat secara otomatis. Jika opsi ini tidak ditentukan, default-nya adalah `false`.  
Kebijakan IAM Anda harus menyertakan `logs:CreateLogGroup` izin sebelum Anda mencoba menggunakannya`awslogs-create-group`.  
`awslogs-region`  
Wajib: Ya  
Tentukan Wilayah AWS driver `awslogs` log untuk mengirim log Docker Anda. Anda dapat memilih untuk mengirim semua log Anda dari kluster di Wilayah yang berbeda ke satu wilayah di CloudWatch Log. Ini agar mereka semua terlihat di satu lokasi. Jika tidak, Anda dapat memisahkannya berdasarkan Wilayah untuk perincian lebih lanjut. Pastikan bahwa grup log yang ditentukan ada di Wilayah yang Anda tentukan dengan opsi ini.  
`awslogs-group`  
Wajib: Ya  
Pastikan untuk menentukan grup log tempat driver `awslogs` log mengirimkan aliran lognya.  
`awslogs-stream-prefix`  
Wajib: Ya  
Gunakan `awslogs-stream-prefix` opsi untuk mengaitkan aliran log dengan awalan yang ditentukan, nama penampung, dan ID tugas Amazon ECS tempat penampung tersebut berada. Jika Anda menentukan awalan dengan opsi ini, maka aliran log mengambil format berikut.  

```
prefix-name/container-name/ecs-task-id
```
Jika Anda tidak menentukan awalan dengan opsi ini, maka aliran log dinamai sesuai dengan ID penampung yang ditetapkan oleh daemon Docker pada instance container. Karena sulit untuk melacak log kembali ke wadah yang mengirimnya hanya dengan ID wadah Docker (yang hanya tersedia pada instance penampung), kami sarankan Anda menentukan awalan dengan opsi ini.  
Untuk layanan Amazon ECS, Anda dapat menggunakan nama layanan sebagai awalan. Dengan melakukannya, Anda dapat melacak aliran log ke layanan tempat penampung milik, nama penampung yang mengirimnya, dan ID tugas yang menjadi milik penampung tersebut.  
Anda harus menentukan awalan aliran agar log Anda muncul di panel Log saat menggunakan konsol Amazon ECS.  
`awslogs-datetime-format`  
Wajib: Tidak  
Opsi ini mendefinisikan pola mulai multiline di Python format `strftime`. Pesan log terdiri dari baris yang cocok dengan pola dan baris berikut yang tidak cocok dengan pola. Garis yang cocok adalah pembatas antara pesan log.  
Salah satu contoh kasus penggunaan format ini adalah untuk penguraian output seperti buangan tumpukan, yang mungkin bisa tercatat dalam beberapa entri. Pola yang benar akan memungkinkannya ditangkap dalam satu entri.  
Untuk informasi selengkapnya, lihat [awslogs-datetime-format](https://docs.docker.com/engine/logging/drivers/awslogs/#awslogs-datetime-format).  
Anda tidak dapat mengonfigurasi opsi `awslogs-datetime-format` dan `awslogs-multiline-pattern` opsi.  
Pencatatan multibaris melakukan penguraian dan pencocokan ekspresi reguler dari semua pesan log. Ini mungkin berdampak negatif pada performa pencatatan.  
`awslogs-multiline-pattern`  
Wajib: Tidak  
Opsi ini mendefinisikan pola mulai multiline yang menggunakan ekspresi reguler. Pesan log terdiri dari baris yang cocok dengan pola dan baris berikut yang tidak cocok dengan pola. Garis yang cocok adalah pembatas antara pesan log.  
Untuk informasi selengkapnya, lihat [awslogs-multiline-pattern](https://docs.docker.com/engine/logging/drivers/awslogs/#awslogs-multiline-pattern).  
Opsi ini diabaikan jika `awslogs-datetime-format` juga dikonfigurasi.  
Anda tidak dapat mengonfigurasi opsi `awslogs-datetime-format` dan `awslogs-multiline-pattern` opsi.  
Pencatatan multibaris melakukan penguraian dan pencocokan ekspresi reguler dari semua pesan log. Ini mungkin berdampak negatif pada performa pencatatan.
Opsi berikut berlaku untuk semua driver log yang didukung.    
`mode`  
Wajib: Tidak  
Nilai yang valid: `non-blocking` \$1 `blocking`  
Opsi ini mendefinisikan mode pengiriman pesan log dari wadah ke driver log yang ditentukan menggunakan`logDriver`. Mode pengiriman yang Anda pilih memengaruhi ketersediaan aplikasi saat aliran log dari kontainer terganggu.  
Jika Anda menggunakan `blocking` mode dan aliran log terputus, panggilan dari kode kontainer untuk menulis ke `stdout` dan `stderr` aliran akan diblokir. Thread logging aplikasi akan diblokir sebagai hasilnya. Hal ini dapat menyebabkan aplikasi menjadi tidak responsif dan menyebabkan kegagalan pemeriksaan kesehatan kontainer.   
Jika Anda menggunakan `non-blocking` mode, log kontainer malah disimpan dalam buffer perantara dalam memori yang dikonfigurasi dengan opsi. `max-buffer-size` Ini mencegah aplikasi menjadi tidak responsif ketika log tidak dapat dikirim. Kami merekomendasikan menggunakan mode ini jika Anda ingin memastikan ketersediaan layanan dan baik-baik saja dengan beberapa kehilangan log. Untuk informasi selengkapnya, lihat [Mencegah kehilangan log dengan mode non-pemblokiran di driver log `awslogs` kontainer](https://aws.amazon.com/blogs/containers/preventing-log-loss-with-non-blocking-mode-in-the-awslogs-container-log-driver/).  
Anda dapat mengatur default `mode` untuk semua kontainer tertentu Wilayah AWS dengan menggunakan setelan `defaultLogDriverMode` akun. Jika Anda tidak menentukan `mode` opsi di `logConfiguration` atau mengonfigurasi pengaturan akun, Amazon ECS akan default ke `non-blocking` mode. Untuk informasi selengkapnya tentang pengaturan akun, lihat[Mode driver log default](ecs-account-settings.md#default-log-driver-mode).  
Saat `non-blocking` mode digunakan, opsi `max-buffer-size` log mengontrol ukuran buffer yang digunakan untuk penyimpanan pesan perantara. Pastikan untuk menentukan ukuran buffer yang memadai berdasarkan aplikasi Anda. Jumlah total memori yang dialokasikan pada tingkat tugas harus lebih besar dari jumlah memori yang dialokasikan untuk semua wadah selain buffer memori driver log.  
Pada 25 Juni 2025, Amazon ECS mengubah mode driver log default dari menjadi `blocking` `non-blocking` memprioritaskan ketersediaan tugas daripada pencatatan. Untuk terus menggunakan `blocking` mode setelah perubahan ini, lakukan salah satu hal berikut:  
+ Tetapkan `mode` opsi dalam definisi kontainer Anda `logConfiguration` sebagai`blocking`.
+ Atur pengaturan `defaultLogDriverMode` akun ke`blocking`.  
`max-buffer-size`  
Wajib: Tidak  
Nilai default: `10m`  
Saat `non-blocking` mode digunakan, opsi `max-buffer-size` log mengontrol ukuran buffer yang digunakan untuk penyimpanan pesan perantara. Pastikan untuk menentukan ukuran buffer yang memadai berdasarkan aplikasi Anda. Ketika buffer terisi, log lebih lanjut tidak dapat disimpan. Log yang tidak dapat disimpan hilang. 
Untuk merutekan `splunk` log menggunakan router log, Anda perlu menentukan a `splunk-token` dan a`splunk-url`.  
Saat Anda menggunakan router `awsfirelens` log untuk merutekan log ke AWS Partner Network tujuan Layanan AWS atau penyimpanan log dan analitik, Anda dapat mengatur `log-driver-buffer-limit` opsi untuk membatasi jumlah baris log yang di-buffer dalam memori, sebelum dikirim ke wadah router log. Ini dapat membantu menyelesaikan potensi masalah kehilangan log karena throughput yang tinggi dapat mengakibatkan memori habis untuk buffer di dalamnya. Docker Untuk informasi selengkapnya, lihat [Mengkonfigurasi log Amazon ECS untuk throughput tinggi](firelens-docker-buffer-limit.md).  
Opsi lain yang dapat Anda tentukan saat menggunakan `awsfirelens` untuk merutekan log tergantung pada tujuan. Saat mengekspor log ke Amazon Data Firehose, Anda dapat menentukan Wilayah AWS dengan `region` dan nama untuk aliran log. `delivery_stream`  
Saat Anda mengekspor log ke Amazon Kinesis Data Streams, Anda dapat Wilayah AWS menentukan dengan dan `region` nama aliran data dengan. `stream`  
 Saat mengekspor log ke Amazon OpenSearch Service, Anda dapat menentukan opsi seperti`Name`, `Host` (Titik akhir OpenSearch layanan tanpa protokol),,,`Port`,`Index`,`Type`,`Aws_auth`, `Aws_region``Suppress_Type_Name`, dan`tls`.  
Saat mengekspor log ke Amazon S3, Anda dapat menentukan bucket menggunakan opsi. `bucket` Anda juga dapat menentukan`region`,`total_file_size`,`upload_timeout`, dan `use_put_object` sebagai opsi.  
Parameter ini memerlukan API Docker Remote versi 1.19 atau lebih besar pada instans kontainer Anda.  
`secretOptions`  
Tipe: Array objek  
Wajib: Tidak  
Objek yang mewakili rahasia untuk diteruskan ke konfigurasi log. Rahasia yang digunakan dalam konfigurasi log dapat mencakup token otentikasi, sertifikat, atau kunci enkripsi. Untuk informasi selengkapnya, lihat [Meneruskan data sensitif ke wadah Amazon ECS](specifying-sensitive-data.md).    
`name`  
Tipe: String  
Wajib: Ya  
Nilai untuk ditetapkan sebagai variabel lingkungan pada kontainer.  
`valueFrom`  
Tipe: String  
Wajib: Ya  
Secret untuk diekspos ke konfigurasi log kontainer.

```
"logConfiguration": {
	"logDriver": "splunk",
	"options": {
		"splunk-url": "https://cloud.splunk.com:8080",
		"splunk-token": "...",
		"tag": "...",
		...
	},
	"secretOptions": [{
		"name": "splunk-token",
		"valueFrom": "/ecs/logconfig/splunkcred"
	}]
}
```

`firelensConfiguration`  
Jenis: [FirelensConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_FirelensConfiguration.html)Objek  
Wajib: Tidak  
 FireLens Konfigurasi untuk wadah. Digunakan untuk menentukan dan mengonfigurasi router log untuk log kontainer. Untuk informasi selengkapnya, lihat [Kirim log Amazon ECS ke AWS layanan atau AWS Partner](using_firelens.md).  

```
{
    "firelensConfiguration": {
        "type": "fluentd",
        "options": {
            "KeyName": ""
        }
    }
}
```  
`options`  
Tipe: Peta antar string  
Wajib: Tidak  
 key/value Peta opsi untuk digunakan saat mengkonfigurasi router log. Bidang ini opsional dan dapat digunakan untuk menentukan file konfigurasi kustom atau untuk menambahkan metadata tambahan, seperti tugas, ketentuan tugas, klaster, dan detail instans kontainer ke log acara. Jika ditentukan, sintaksis yang digunakan adalah `"options":{"enable-ecs-log-metadata":"true|false","config-file-type:"s3|file","config-file-value":"arn:aws:s3:::amzn-s3-demo-bucket/fluent.conf|filepath"}`. Untuk informasi selengkapnya, lihat [Contoh definisi tugas Amazon ECS: Rute log ke FireLens](firelens-taskdef.md).  
`type`  
Tipe: String  
Wajib: Ya  
Router log yang akan digunakan. Nilai yang valid adalah `fluentd` atau `fluentbit`.

#### Keamanan
<a name="container_definition_security"></a>

Untuk informasi selengkapnya tentang keamanan kontainer, lihat [praktik terbaik tugas Amazon ECS dan keamanan kontainer](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security-tasks-containers.html).

`credentialSpecs`  
Tipe: Array string  
Wajib: Tidak  
Daftar ARNs di SSM atau Amazon S3 ke file credential spec `CredSpec` () yang mengonfigurasi wadah untuk otentikasi Active Directory. Kami menyarankan Anda menggunakan parameter ini alih-alih`dockerSecurityOptions`. Jumlah maksimum ARNs adalah 1.  
Ada dua format untuk setiap ARN.    
CredentialSpecDomainless:mYarn  
Anda gunakan `credentialspecdomainless:MyARN` untuk `CredSpec` menyediakan bagian tambahan untuk rahasia di Secrets Manager. Anda memberikan kredensyal login ke domain secara rahasia.  
Setiap tugas yang berjalan pada instance kontainer apa pun dapat bergabung dengan domain yang berbeda.  
Anda dapat menggunakan format ini tanpa menggabungkan instance container ke domain.  
Spesifikasi kredensial:mYarn  
Anda gunakan `credentialspec:MyARN` untuk menyediakan `CredSpec` untuk satu domain.  
Anda harus menggabungkan instance penampung ke domain sebelum memulai tugas apa pun yang menggunakan definisi tugas ini.
Dalam kedua format, ganti `MyARN` dengan ARN di SSM atau Amazon S3.  
`credspec`Harus menyediakan ARN di Secrets Manager untuk rahasia yang berisi nama pengguna, kata sandi, dan domain untuk terhubung. Untuk keamanan yang lebih baik, instance tidak digabungkan ke domain untuk otentikasi tanpa domain. Aplikasi lain pada instance tidak dapat menggunakan kredensyal tanpa domain. Anda dapat menggunakan parameter ini untuk menjalankan tugas pada instance yang sama, bahkan tugas harus bergabung dengan domain yang berbeda. Untuk informasi selengkapnya, lihat [Menggunakan g MSAs untuk Kontainer Windows](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/windows-gmsa.html) dan [Menggunakan g MSAs untuk Kontainer Linux](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/linux-gmsa.html).

`user`  
Tipe: String  
Wajib: Tidak  
Pengguna yang akan digunakan di dalam kontainer. Parameter ini memetakan ke `User` dalam perintah docker create-container dan opsi `--user` untuk docker run.  
Saat menjalankan tugas yang menggunakan mode `host` jaringan, jangan jalankan kontainer menggunakan pengguna root (UID 0). Sebagai praktik terbaik keamanan, selalu gunakan pengguna non-root.
Anda dapat menentukan `user` dengan menggunakan format berikut. Jika menentukan UID atau GID, Anda harus menentukannya sebagai bilangan bulat positif.  
+ `user`
+ `user:group`
+ `uid`
+ `uid:gid`
+ `user:gid`
+ `uid:group`
Parameter ini tidak didukung untuk kontainer Windows.

```
"user": "string"
```

#### Batas sumber daya
<a name="container_definition_limits"></a>

`ulimits`  
Tipe: Array objek  
Wajib: Tidak  
Daftar nilai `ulimit` yang harus ditentukan untuk kontainer. Nilai ini menimpa pengaturan kuota sumber daya default untuk sistem operasi. Parameter ini memetakan ke `Ulimits` dalam perintah docker create-container dan opsi `--ulimit` untuk docker run.  
Tugas Amazon ECS yang dihosting di Fargate menggunakan nilai batas sumber daya default yang ditetapkan oleh sistem operasi dengan pengecualian parameter batas sumber daya. `nofile` Batas `nofile` sumber daya menetapkan batasan pada jumlah file terbuka yang dapat digunakan wadah. Di Fargate, batas `nofile` lunak default adalah ` 65535` dan batas keras adalah. `65535` Anda dapat mengatur nilai dari kedua batas hingga`1048576`. Untuk informasi selengkapnya, lihat [Batas sumber daya tugas](fargate-tasks-services.md#fargate-resource-limits).  
Parameter ini memerlukan Docker Remote API versi 1.18 atau lebih besar pada instans kontainer Anda.  
Parameter ini tidak didukung untuk kontainer Windows.

```
"ulimits": [
      {
        "name": "core"|"cpu"|"data"|"fsize"|"locks"|"memlock"|"msgqueue"|"nice"|"nofile"|"nproc"|"rss"|"rtprio"|"rttime"|"sigpending"|"stack",
        "softLimit": integer,
        "hardLimit": integer
      }
      ...
    ]
```  
`name`  
Tipe: String  
Nilai yang valid: `"core" | "cpu" | "data" | "fsize" | "locks" | "memlock" | "msgqueue" | "nice" | "nofile" | "nproc" | "rss" | "rtprio" | "rttime" | "sigpending" | "stack"`  
Diperlukan: Ya, kapan `ulimits` digunakan  
`type` dari `ulimit`.  
`hardLimit`  
Jenis: Integer  
Diperlukan: Ya, kapan `ulimits` digunakan  
Batas keras untuk tipe `ulimit`. Nilai dapat ditentukan dalam byte, detik, atau sebagai hitungan, tergantung `type` pada`ulimit`.  
`softLimit`  
Jenis: Integer  
Diperlukan: Ya, kapan `ulimits` digunakan  
Batas lunak untuk tipe `ulimit`. Nilai dapat ditentukan dalam byte, detik, atau sebagai hitungan, tergantung `type` pada`ulimit`.

#### Label docker
<a name="container_definition_labels"></a>

`dockerLabels`  
Tipe: Peta antar string  
Wajib: Tidak  
 key/value Peta label untuk ditambahkan ke wadah. Parameter ini memetakan ke `Labels` dalam perintah docker create-container dan opsi `--label` untuk docker run.   
Parameter ini memerlukan Docker Remote API versi 1.18 atau lebih besar pada instans kontainer Anda.  

```
"dockerLabels": {"string": "string"
      ...}
```

### Parameter definisi kontainer lainnya
<a name="other_container_definition_params"></a>

Parameter definisi kontainer berikut dapat digunakan saat mendaftarkan definisi tugas di konsol Amazon ECS dengan menggunakan opsi **Configure via JSON**. Untuk informasi selengkapnya, lihat [Membuat definisi tugas Amazon ECS menggunakan konsol](create-task-definition.md).

**Topics**
+ [

#### Parameter Linux
](#container_definition_linuxparameters)
+ [

#### Dependensi kontainer
](#container_definition_dependson)
+ [

#### Waktu habis kontainer
](#container_definition_timeout)
+ [

#### Kontrol sistem
](#container_definition_systemcontrols)
+ [

#### Interaktif
](#container_definition_interactive)
+ [

#### Terminal semu
](#container_definition_pseudoterminal)

#### Parameter Linux
<a name="container_definition_linuxparameters"></a>

`linuxParameters`  
Tipe: Objek [LinuxParameters](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LinuxParameters.html)  
Wajib: Tidak  
Linux-opsi spesifik yang diterapkan ke wadah, seperti [KernelCapabilities](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KernelCapabilities.html).  
Parameter ini tidak didukung untuk Windows kontainer.

```
"linuxParameters": {
      "capabilities": {
        "add": ["string", ...],
        "drop": ["string", ...]
        }
      }
```  
`capabilities`  
Tipe: Objek [KernelCapabilities](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KernelCapabilities.html)  
Wajib: Tidak  
LinuxKemampuan untuk wadah yang dijatuhkan dari konfigurasi default yang disediakan olehDocker. Untuk informasi lebih lanjut tentang Linux kemampuan ini, lihat halaman manual [kemampuan (7)](http://man7.org/linux/man-pages/man7/capabilities.7.html) Linux.    
`add`  
Tipe: Array string  
Nilai yang valid: `"SYS_PTRACE"`  
Wajib: Tidak  
LinuxKemampuan kontainer untuk ditambahkan ke konfigurasi default yang disediakan olehDocker. Parameter ini memetakan ke `CapAdd` dalam perintah docker create-container dan opsi `--cap-add` untuk docker run.  
`drop`  
Tipe: Array string  
Nilai yang valid: `"ALL" | "AUDIT_CONTROL" | "AUDIT_WRITE" | "BLOCK_SUSPEND" | "CHOWN" | "DAC_OVERRIDE" | "DAC_READ_SEARCH" | "FOWNER" | "FSETID" | "IPC_LOCK" | "IPC_OWNER" | "KILL" | "LEASE" | "LINUX_IMMUTABLE" | "MAC_ADMIN" | "MAC_OVERRIDE" | "MKNOD" | "NET_ADMIN" | "NET_BIND_SERVICE" | "NET_BROADCAST" | "NET_RAW" | "SETFCAP" | "SETGID" | "SETPCAP" | "SETUID" | "SYS_ADMIN" | "SYS_BOOT" | "SYS_CHROOT" | "SYS_MODULE" | "SYS_NICE" | "SYS_PACCT" | "SYS_PTRACE" | "SYS_RAWIO" | "SYS_RESOURCE" | "SYS_TIME" | "SYS_TTY_CONFIG" | "SYSLOG" | "WAKE_ALARM"`  
Wajib: Tidak  
LinuxKemampuan untuk wadah untuk menghapus dari konfigurasi default yang disediakan olehDocker. Parameter ini memetakan ke `CapDrop` dalam perintah docker create-container dan opsi `--cap-drop` untuk docker run.  
`devices`  
Perangkat host apa pun yang akan diekspos ke kontainer. Parameter ini memetakan ke `Devices` dalam perintah docker create-container dan opsi `--device` untuk docker run.  
`devices`Parameter tidak didukung saat Anda menggunakan tipe peluncuran Fargate.
Tipe: Array objek [Perangkat](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Device.html)  
Wajib: Tidak    
`hostPath`  
Jalur untuk perangkat pada instans kontainer host.  
Tipe: String  
Diperlukan: Ya  
`containerPath`  
Jalur di dalam wadah untuk mengekspos perangkat host di.  
Tipe: String  
Wajib: Tidak  
`permissions`  
Izin eksplisit untuk diberikan ke kontainer untuk perangkat. Secara default, kontainer memiliki izin untuk`read`, `write`, dan `mknod` pada perangkat.  
Tipe: Array string  
Nilai yang Valid: `read` \$1 `write` \$1 `mknod`  
`initProcessEnabled`  
Jalankan proses `init` di dalam kontainer yang meneruskan sinyal dan melakukan proses kembali. Parameter ini memetakan ke `--init` opsi untuk docker run.  
Parameter ini memerlukan API Docker Remote versi 1.25 atau lebih besar pada instans kontainer Anda.  
`maxSwap`  
Ini tidak didukung untuk tugas yang berjalan di Fargate.  
Jumlah total memori tukar (dalam MiB) yang dapat digunakan oleh kontainer. Parameter ini diterjemahkan ke `--memory-swap` opsi untuk docker run di mana nilainya adalah jumlah memori kontainer ditambah nilainya. `maxSwap`  
Jika nilai `maxSwap` sebesar `0` ditentukan, kontainer tidak menggunakan swap. Nilai yang diterima adalah `0` atau bilangan bulat positif. Jika `maxSwap` parameter diabaikan, kontainer menggunakan konfigurasi swap untuk instans kontainer tempatnya berjalan. Nilai `maxSwap` harus ditetapkan untuk parameter `swappiness` yang akan digunakan.  
`sharedMemorySize`  
Nilai untuk ukuran (dalam MiB) volume `/dev/shm`. Parameter ini memetakan ke `--shm-size` opsi untuk docker run.  
Jika Anda menggunakan tugas yang menggunakan Fargate, `sharedMemorySize` parameter tidak didukung.
Jenis: Integer  
`tmpfs`  
Jalur kontainer, opsi pemasangan, dan ukuran maksimum (dalam MiB) dudukan. tmpfs Parameter ini memetakan ke `--tmpfs` opsi untuk docker run.  
Tipe: Array objek [Tmpfs](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Tmpfs.html)  
Wajib: Tidak    
`containerPath`  
Jalur file absolut di mana tmpfs volume akan dipasang.  
Tipe: String  
Diperlukan: Ya  
`mountOptions`  
Daftar opsi pemasangan volume tmpfs.  
Tipe: Array string  
Wajib: Tidak  
Nilai yang Valid: `"defaults" | "ro" | "rw" | "suid" | "nosuid" | "dev" | "nodev" | "exec" | "noexec" | "sync" | "async" | "dirsync" | "remount" | "mand" | "nomand" | "atime" | "noatime" | "diratime" | "nodiratime" | "bind" | "rbind" | "unbindable" | "runbindable" | "private" | "rprivate" | "shared" | "rshared" | "slave" | "rslave" | "relatime" | "norelatime" | "strictatime" | "nostrictatime" | "mode" | "uid" | "gid" | "nr_inodes" | "nr_blocks" | "mpol"`  
`size`  
Ukuran maksimum (dalam MiB) volume. tmpfs  
Jenis: Integer  
Wajib: Ya

#### Dependensi kontainer
<a name="container_definition_dependson"></a>

`dependsOn`  
Tipe: Array objek [ContainerDependency](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDependency.html)  
Wajib: Tidak  
Dependensi yang ditentukan untuk pemulaian dan penonaktifan kontainer. Kontainer dapat berisi beberapa dependensi. Ketika dependensi ditentukan untuk memulai kontainer, maka akan dibalik jika ingin menonaktifkan kontainer. Misalnya, lihat [Dependensi kontainer](example_task_definitions.md#example_task_definition-containerdependency).  
Jika kontainer tidak memenuhi batasan ketergantungan atau waktu habis sebelum memenuhi batasan, Amazon ECS tidak memajukan kontainer dependen ke status berikutnya.
Parameter ini mengharuskan tugas atau layanan menggunakan versi platform `1.3.0` atau yang lebih baru (Linux) atau `1.0.0` (Windows).  

```
"dependsOn": [
    {
        "containerName": "string",
        "condition": "string"
    }
]
```  
`containerName`  
Tipe: String  
Wajib: Ya  
Nama kontainer yang harus memenuhi syarat yang ditentukan.  
`condition`  
Tipe: String  
Wajib: Ya  
Syarat dependensi kontainer. Berikut ini adalah syarat yang tersedia dan perilakunya:  
+ `START`Kondisi ini meniru perilaku link dan volume hari ini. Kondisi memvalidasi bahwa kontainer dependen dimulai sebelum mengizinkan kontainer lain untuk memulai.
+ `COMPLETE`— Kondisi ini memvalidasi bahwa kontainer dependen berjalan hingga selesai (keluar) sebelum mengizinkan kontainer lain untuk memulai. Ini dapat berguna untuk wadah non-esensial yang menjalankan skrip dan kemudian keluar. Kondisi ini tidak dapat diatur pada kontainer penting.
+ `SUCCESS`— Kondisi ini sama dengan`COMPLETE`, tetapi juga mengharuskan wadah keluar dengan `zero` status. Kondisi ini tidak dapat diatur pada kontainer penting.
+ `HEALTHY`- Kondisi ini memvalidasi bahwa wadah dependen melewati pemeriksaan kesehatan kontainer sebelum mengizinkan wadah lain untuk memulai. Ini mengharuskan wadah dependen memiliki pemeriksaan kesehatan yang dikonfigurasi dalam definisi tugas. Syarat ini dikonfirmasi hanya pada memulai tugas.

#### Waktu habis kontainer
<a name="container_definition_timeout"></a>

`startTimeout`  
Tipe: Integer  
Wajib: Tidak  
Nilai contoh: `120`  
Durasi waktu (dalam detik) untuk menunggu sebelum menyerah pada penyelesaian dependensi untuk kontainer.  
Misalnya, Anda menentukan dua kontainer dalam ketentuan tugas dengan `containerA` yang memiliki dependensi untuk `containerB` yang mencapai status `COMPLETE`, `SUCCESS`, atau `HEALTHY`. Jika `startTimeout` nilai ditentukan untuk `containerB` dan tidak mencapai status yang diinginkan dalam waktu itu, maka `containerA` tidak dimulai.  
Jika kontainer tidak memenuhi batasan ketergantungan atau waktu habis sebelum memenuhi batasan, Amazon ECS tidak memajukan kontainer dependen ke status berikutnya.
Parameter ini mengharuskan tugas atau layanan menggunakan versi platform `1.3.0` atau yang lebih baru (Linux). Nilai maksimumnya adalah 120 detik.

`stopTimeout`  
Tipe: Integer  
Wajib: Tidak  
Nilai contoh: `120`  
Durasi waktu (dalam detik) untuk menunggu sebelum kontainer dimatikan secara paksa jika tidak keluar dengan sendirinya secara normal.  
Parameter ini mengharuskan tugas atau layanan menggunakan versi platform `1.3.0` atau yang lebih baru (Linux). Jika parameter tidak ditentukan, maka nilai default 30 detik digunakan. Nilai maksimumnya adalah 120 detik.

#### Kontrol sistem
<a name="container_definition_systemcontrols"></a>

`systemControls`  
Tipe: Objek [SystemControl](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_SystemControl.html)  
Wajib: Tidak  
Daftar parameter kernel namespace untuk diatur dalam wadah. Parameter ini memetakan ke `Sysctls` dalam perintah docker create-container dan opsi untuk docker run. `--sysctl` Misalnya, Anda dapat mengonfigurasi `net.ipv4.tcp_keepalive_time` pengaturan untuk mempertahankan koneksi yang lebih lama.  
Kami tidak menyarankan Anda menentukan `systemControls` parameter terkait jaringan untuk beberapa kontainer dalam satu tugas yang juga menggunakan mode `awsvpc` atau `host` jaringan. Melakukan hal ini memiliki kelemahan sebagai berikut:  
+ Jika Anda mengatur `systemControls` untuk wadah apa pun, itu berlaku untuk semua kontainer dalam tugas. Jika Anda menyetel berbeda `systemControls` untuk beberapa kontainer dalam satu tugas, penampung yang dimulai terakhir menentukan mana yang `systemControls` berlaku.
Jika Anda menyetel namespace sumber daya IPC untuk digunakan untuk kontainer dalam tugas, kondisi berikut berlaku untuk kontrol sistem Anda. Untuk informasi selengkapnya, lihat [Mode IPC](#task_definition_ipcmode).  
+ Untuk tugas yang menggunakan mode `host` IPC, namespace `systemControls` IPC tidak didukung.
+ Untuk tugas yang menggunakan mode `task` IPC, `systemControls` nilai namespace IPC berlaku untuk semua kontainer dalam tugas.
Parameter ini tidak didukung untuk kontainer Windows.
Parameter ini hanya didukung untuk tugas yang di-host AWS Fargate jika tugas menggunakan versi platform `1.4.0` atau yang lebih baru (Linux). Ini tidak didukung untuk wadah Windows di Fargate.

```
"systemControls": [
    {
         "namespace":"string",
         "value":"string"
    }
]
```  
`namespace`  
Tipe: String  
Wajib: Tidak  
Parameter kernel namespace untuk menetapkan untuk. `value`  
Nilai namespace IPC yang valid:`"kernel.msgmax" | "kernel.msgmnb" | "kernel.msgmni" | "kernel.sem" | "kernel.shmall" | "kernel.shmmax" | "kernel.shmmni" | "kernel.shm_rmid_forced"`, dan `Sysctls` itu dimulai dengan `"fs.mqueue.*"`  
Nilai namespace jaringan yang valid: `Sysctls` yang dimulai dengan. `"net.*"` Di Fargate, hanya namespace yang ada di dalam `Sysctls` container yang diterima.  
Semua nilai ini didukung oleh Fargate.  
`value`  
Tipe: String  
Wajib: Tidak  
Nilai untuk parameter kernel namespace yang ditentukan dalam. `namespace`

#### Interaktif
<a name="container_definition_interactive"></a>

`interactive`  
Tipe: Boolean  
Wajib: Tidak  
Ketika parameter ini`true`, Anda dapat menerapkan aplikasi kontainer yang memerlukan `stdin` atau `tty` dialokasikan. Parameter ini memetakan ke `OpenStdin` dalam perintah docker create-container dan opsi `--interactive` untuk docker run.  
Nilai default-nya `false`.

#### Terminal semu
<a name="container_definition_pseudoterminal"></a>

`pseudoTerminal`  
Tipe: Boolean  
Wajib: Tidak  
Jika parameter ini `true`, TTY dialokasikan. Parameter ini memetakan ke `Tty` dalam perintah docker create-container dan opsi `--tty` untuk docker run.  
Nilai default-nya `false`.

## Nama akselerator Elastic Inference (usang)
<a name="elastic-Inference-accelerator"></a>

Persyaratan sumber daya akselerator Elastic Inference untuk definisi tugas Anda. 

**catatan**  
Amazon Elastic Inference (EI) sudah tidak tersedia bagi pelanggan.

Parameter berikut diizinkan dalam definisi tugas:

`deviceName`  
Tipe: String  
Diperlukan: Ya  
Nama perangkat akselerator Elastic Inference. Itu juga `deviceName` harus direferensikan dalam definisi kontainer lihat[Elastic Inference accelerator](#ContainerDefinition-elastic-inference).

`deviceType`  
Tipe: String  
Diperlukan: Ya  
Akselerator Elastic Inference untuk digunakan.

## Konfigurasi proxy
<a name="proxyConfiguration"></a>

`proxyConfiguration`  
Tipe: Objek [ProxyConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ProxyConfiguration.html)  
Wajib: Tidak  
Detail konfigurasi untuk proxy App Mesh.  
Parameter ini tidak didukung untuk kontainer Windows.

```
"proxyConfiguration": {
    "type": "APPMESH",
    "containerName": "string",
    "properties": [
        {
           "name": "string",
           "value": "string"
        }
    ]
}
```  
`type`  
Tipe: String  
Nilai nilai: `APPMESH`  
Wajib: Tidak  
Tipe proxy. Satu-satunya nilai yang didukung adalah `APPMESH`.  
`containerName`  
Tipe: String  
Diperlukan: Ya  
Nama wadah yang berfungsi sebagai proxy App Mesh.  
`properties`  
Tipe: Array objek [KeyValuePair](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KeyValuePair.html)  
Wajib: Tidak  
Set parameter konfigurasi jaringan berfungsi untuk menyediakan plugin Container Network Interface (CNI), yang ditetapkan sebagai pasangan nilai kunci.  
+ `IgnoredUID`— (Wajib) ID pengguna (UID) dari wadah proxy sebagaimana didefinisikan oleh `user` parameter dalam definisi kontainer. Ini digunakan untuk memastikan bahwa proksi mengabaikan lalu lintasnya sendiri. Jika `IgnoredGID` ditentukan, bidang ini tidak boleh kosong.
+ `IgnoredGID`— (Wajib) ID grup (GID) dari wadah proxy sebagaimana didefinisikan oleh `user` parameter dalam definisi kontainer. Ini digunakan untuk memastikan bahwa proksi mengabaikan lalu lintasnya sendiri. Jika `IgnoredUID` ditentukan, bidang ini tidak boleh kosong.
+ `AppPorts`— (Wajib) Daftar port yang digunakan aplikasi. Lalu lintas jaringan ke port ini diteruskan ke `ProxyIngressPort` dan `ProxyEgressPort`.
+ `ProxyIngressPort`— (Wajib) Menentukan port yang lalu lintas masuk ke `AppPorts` diarahkan.
+ `ProxyEgressPort`— (Wajib) Menentukan port yang lalu lintas keluar dari `AppPorts` diarahkan ke.
+ `EgressIgnoredPorts`— (Wajib) Lalu lintas keluar yang menuju ke port yang ditentukan ini diabaikan dan tidak dialihkan ke port. `ProxyEgressPort` Ia bisa berupa daftar kosong.
+ `EgressIgnoredIPs`— (Wajib) Lalu lintas keluar yang menuju ke alamat IP yang ditentukan ini diabaikan dan tidak dialihkan ke. `ProxyEgressPort` Ia bisa berupa daftar kosong.  
`name`  
Tipe: String  
Wajib: Tidak  
Nama pasangan nilai kunci.  
`value`  
Tipe: String  
Wajib: Tidak  
Nilai pasangan nilai kunci.

## volume
<a name="volumes"></a>

Saat Anda mendaftarkan definisi tugas, Anda dapat secara opsional menentukan daftar volume yang akan diteruskan ke Docker daemon pada instance container, yang kemudian tersedia untuk diakses oleh container lain pada instance container yang sama.

Berikut ini adalah jenis volume data yang dapat digunakan:
+ Volume Amazon EBS - Menyediakan penyimpanan blok yang hemat biaya, tahan lama, dan berkinerja tinggi untuk beban kerja kontainer intensif data. Anda dapat melampirkan 1 volume Amazon EBS per tugas Amazon ECS saat menjalankan tugas mandiri, atau saat membuat atau memperbarui layanan. Volume Amazon EBS didukung untuk tugas-tugas Linux yang dihosting di Fargate. Untuk informasi selengkapnya, lihat [Gunakan volume Amazon EBS dengan Amazon ECS](ebs-volumes.md).
+ Volume Amazon EFS - Menyediakan penyimpanan file yang sederhana, dapat diskalakan, dan persisten untuk digunakan dengan tugas Amazon ECS Anda. Kapasitas penyimpanan Amazon EFS bersifat elastis. Hal ini bertumbuh dan menyusut secara otomatis seiring Anda menambahkan dan menghapus file. Aplikasi Anda dapat memiliki penyimpanan yang mereka butuhkan dan ketika mereka membutuhkannya. Volume Amazon EFS didukung untuk tugas yang di-host di Fargate. Untuk informasi selengkapnya, lihat [Gunakan volume Amazon EFS dengan Amazon ECS](efs-volumes.md).
+ FSx untuk volume Windows File Server - Menyediakan server file Microsoft Windows yang dikelola sepenuhnya. Server file ini didukung oleh sistem file Windows. Saat menggunakan FSx untuk Windows File Server bersama dengan Amazon ECS, Anda dapat menyediakan tugas Windows Anda dengan penyimpanan file persisten, terdistribusi, bersama, dan statis. Untuk informasi selengkapnya, lihat [Gunakan FSx untuk volume Server File Windows dengan Amazon ECS](wfsx-volumes.md).

  Wadah Windows di Fargate tidak mendukung opsi ini.
+ Bind mount — File atau direktori pada mesin host yang dipasang ke dalam wadah. Volume host Bind mount didukung saat menjalankan tugas. Untuk menggunakan volume host bind mount, tentukan `sourcePath` nilai `host` dan opsional dalam definisi tugas Anda.

Untuk informasi selengkapnya, lihat [Opsi penyimpanan untuk tugas Amazon ECS](using_data_volumes.md).

Parameter berikut diizinkan dalam ketentuan kontainer.

`name`  
Tipe: String  
Wajib: Tidak  
Nama volume. Hingga 255 huruf (huruf besar dan kecil), angka, tanda hubung (), dan garis bawah (`-`) diperbolehkan. `_` Nama ini direferensikan dalam `sourceVolume` parameter `mountPoints` objek definisi kontainer.

`host`  
Wajib: Tidak  
`host`Parameter ini digunakan untuk mengikat siklus hidup bind mount ke instans Amazon EC2 host, bukan tugas, dan tempat penyimpanannya. Jika `host` parameternya kosong, maka daemon Docker menetapkan jalur host untuk volume data Anda, tetapi data tidak dijamin akan bertahan setelah wadah yang terkait dengannya berhenti berjalan.  
Kontainer Windows dapat memasang seluruh direktori pada drive yang sama dengan `$env:ProgramData`.  
`sourcePath`Parameter hanya didukung saat menggunakan tugas yang dihosting di instans Amazon EC2 atau Instans Terkelola Amazon ECS.  
`sourcePath`  
Tipe: String  
Wajib: Tidak  
Saat `host` parameter digunakan, tentukan a `sourcePath` untuk mendeklarasikan jalur pada instans Amazon EC2 host yang disajikan ke wadah. Jika parameter ini kosong, daemon Docker akan menetapkan jalur host untuk Anda. Jika `host` parameter berisi lokasi `sourcePath` file, maka volume data tetap ada di lokasi yang ditentukan pada instans Amazon EC2 host hingga Anda menghapusnya secara manual. Jika `sourcePath` nilai tidak ada pada instans Amazon EC2 host, daemon Docker membuatnya. Jika lokasinya memang ada, konten dari folder jalur sumber diekspor.

`configuredAtLaunch`  
Tipe: Boolean  
Wajib: Tidak  
Menentukan apakah volume dikonfigurasi saat peluncuran. Saat disetel ke`true`, Anda dapat mengonfigurasi volume saat menjalankan tugas mandiri, atau saat membuat atau memperbarui layanan. Saat disetel ke`true`, Anda tidak akan dapat memberikan konfigurasi volume lain dalam definisi tugas. Parameter ini harus diatur `true` untuk mengonfigurasi volume Amazon EBS untuk lampiran ke tugas. Menyetel `configuredAtLaunch` ke `true` dan menunda konfigurasi volume ke fase peluncuran memungkinkan Anda membuat definisi tugas yang tidak dibatasi untuk jenis volume atau pengaturan volume tertentu. Melakukan hal ini membuat definisi tugas Anda dapat digunakan kembali di seluruh lingkungan eksekusi yang berbeda. Untuk informasi selengkapnya, lihat [volume Amazon EBS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ebs-volumes.html).

`dockerVolumeConfiguration`  
Jenis: [DockerVolumeConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DockerVolumeConfiguration.html)Objek  
Wajib: Tidak  
Parameter ini ditentukan saat menggunakan volume Docker. Volume Docker hanya didukung saat menjalankan tugas pada instans EC2. Kontainer Windows hanya mendukung penggunaan driver `local`. Untuk menggunakan pemasangan mengikat, tentukan `host` saja.    
`scope`  
Tipe: String  
Nilai Valid: `task` \$1 `shared`  
Wajib: Tidak  
Cakupan untuk volume Docker, yang menentukan siklus hidupnya. Volume Docker yang tercakup ke `task` secara otomatis disediakan saat tugas dimulai dan dihancurkan saat tugas berhenti. Volume Docker yang tercakup sebagai `shared` dipertahankan setelah tugas berhenti.  
`autoprovision`  
Jenis: Boolean  
Nilai default: `false`  
Wajib: Tidak  
Jika nilai ini`true`, volume Docker dibuat jika belum ada. Bidang ini hanya digunakan jika `scope` ada`shared`. Jika `scope` ya`task`, maka parameter ini harus dihilangkan.  
`driver`  
Tipe: String  
Wajib: Tidak  
Driver volume Docker yang digunakan. Nilai driver harus sesuai dengan nama driver yang disediakan oleh Docker karena nama ini digunakan untuk penempatan tugas. Jika driver diinstal dengan menggunakan CLI plugin Docker, `docker plugin ls` gunakan untuk mengambil nama driver dari instance container Anda. Jika driver diinstal dengan menggunakan metode lain, gunakan penemuan plugin Docker untuk mengambil nama driver.  
`driverOpts`  
Tipe: String  
Wajib: Tidak  
Peta opsi khusus driver Docker untuk dilewati. Parameter ini dipetakan ke `DriverOpts` bagian Create a volume dari Docker.  
`labels`  
Tipe: String  
Wajib: Tidak  
Metadata kustom untuk ditambahkan ke volume Docker.

`efsVolumeConfiguration`  
Jenis: [EFSVolumeKonfigurasi](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_EFSVolumeConfiguration.html) Objek  
Wajib: Tidak  
Parameter ini ditentukan saat menggunakan volume Amazon EFS.    
`fileSystemId`  
Tipe: String  
Diperlukan: Ya  
ID sistem file Amazon EFS yang akan digunakan.  
`rootDirectory`  
Tipe: String  
Wajib: Tidak  
Direktori dalam sistem file Amazon EFS untuk dipasang sebagai direktori root di dalam host. Jika parameter ini dihilangkan, root volume Amazon EFS akan digunakan. Menentukan `/` memiliki efek yang sama seperti mengabaikan parameter ini.  
Jika titik akses EFS ditentukan dalam`authorizationConfig`, parameter direktori root harus dihilangkan atau disetel ke`/`, yang akan menerapkan jalur yang disetel pada titik akses EFS.  
`transitEncryption`  
Tipe: String  
Nilai yang valid: `ENABLED` \$1 `DISABLED`  
Wajib: Tidak  
Menentukan apakah akan mengaktifkan enkripsi untuk data Amazon EFS dalam perjalanan antara host Amazon ECS dan server Amazon EFS. Jika otorisasi Amazon EFS IAM digunakan, enkripsi transit harus diaktifkan. Jika parameter ini diabaikan, nilai default `DISABLED` akan digunakan. Untuk informasi lebih lanjut, lihat [Pengenkripsian Data Saat Transit](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html) di *Panduan Pengguna Amazon Elastic File System*.  
`transitEncryptionPort`  
Tipe: Integer  
Wajib: Tidak  
Port yang akan digunakan saat mengirim data terenkripsi antara host Amazon ECS dan server Amazon EFS. Jika Anda tidak menentukan port enkripsi transit, tugas akan menggunakan strategi pemilihan port yang digunakan oleh helper mount Amazon EFS. Untuk informasi lebih lanjut, lihat [Pembantu Pemasangan EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-mount-helper.html) di *Panduan Pengguna Amazon Elastic File System*.  
`authorizationConfig`  
Jenis: [EFSAuthorizationConfig Object](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_EFSAuthorizationConfig.html)  
Wajib: Tidak  
Detail konfigurasi otorisasi untuk sistem file Amazon EFS.    
`accessPointId`  
Tipe: String  
Wajib: Tidak  
ID titik akses yang akan digunakan. Jika titik akses ditentukan, nilai direktori root di dalam `efsVolumeConfiguration` harus dihilangkan atau disetel ke`/`, yang akan memberlakukan jalur yang ditetapkan pada titik akses EFS. Jika titik akses digunakan, enkripsi transit harus diaktifkan di `EFSVolumeConfiguration`. Untuk informasi lebih lanjut, lihat [Bekerja dengan Titik Akses Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html) dalam *Panduan Pengguna Amazon Elastic File System*.  
`iam`  
Tipe: String  
Nilai yang valid: `ENABLED` \$1 `DISABLED`  
Wajib: Tidak  
Menentukan apakah akan menggunakan peran IAM tugas Amazon ECS yang ditentukan dalam definisi tugas saat memasang sistem file Amazon EFS. Jika diaktifkan, enkripsi transit harus diaktifkan di `EFSVolumeConfiguration`. Jika Anda menghilangkan parameter ini, nilai default `DISABLED` akan digunakan. Untuk informasi selengkapnya, lihat [IAM Role pada Tugas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html).

`FSxWindowsFileServerVolumeConfiguration`  
Jenis: [FSxWindowsFileServerVolumeConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_FSxWindowsFileServerVolumeConfiguration.html)Objek  
Wajib: Ya  
Parameter ini ditentukan saat Anda menggunakan sistem file [Amazon FSx untuk Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) untuk penyimpanan tugas.    
`fileSystemId`  
Tipe: String  
Diperlukan: Ya  
ID sistem file Windows File Server untuk digunakan. FSx   
`rootDirectory`  
Tipe: String  
Diperlukan: Ya  
Direktori dalam sistem file FSx untuk Windows File Server untuk dipasang sebagai direktori root di dalam host.  
`authorizationConfig`    
`credentialsParameter`  
Tipe: String  
Diperlukan: Ya  
Opsi kredensi otorisasi.  

**pilihan:**
+ Nama Sumber Daya Amazon (ARN) dari sebuah [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)rahasia.
+ ARN dari suatu [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/integration-ps-secretsmanager.html)parameter.  
`domain`  
Tipe: String  
Diperlukan: Ya  
Nama domain yang sepenuhnya memenuhi syarat yang dihosting oleh direktori [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html)(AWS Managed Microsoft AD) atau Direktori Aktif EC2 yang dihosting sendiri.

## Tag
<a name="tags"></a>

Ketika mendaftarkan ketentuan tugas, Anda secara opsional dapat menentukan tanda metadata yang diterapkan ke ketentuan tugas. Tanda membantu mengategorikan dan mengatur ketentuan tugas Anda. Setiap tanda terdiri dari kunci dan nilai opsional. Anda mendefinisikan keduanya. Untuk informasi selengkapnya, lihat [Menandai sumber daya Amazon ECS](ecs-using-tags.md).

**penting**  
Jangan menambahkan informasi identitas pribadi atau informasi rahasia atau sensitif lainnya dalam tag. Tag dapat diakses oleh banyak AWS layanan, termasuk penagihan. Tag tidak dimaksudkan untuk digunakan untuk data pribadi atau sensitif.

Parameter berikut diperbolehkan dalam objek tanda.

`key`  
Tipe: String  
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  
Wajib: Tidak  
Bagian opsional pasangan nilai kunci yang membentuk tanda. Nilai bertindak sebagai deskriptor dalam kategori tanda (kunci).

## Parameter ketentuan tugas lainnya
<a name="other_task_definition_params"></a>

Parameter definisi tugas berikut dapat digunakan saat mendaftarkan definisi tugas di konsol Amazon ECS dengan menggunakan opsi **Configure via JSON**. Untuk informasi selengkapnya, lihat [Membuat definisi tugas Amazon ECS menggunakan konsol](create-task-definition.md).

**Topics**
+ [

### Penyimpanan sementara
](#task_definition_ephemeralStorage)
+ [

### Mode IPC
](#task_definition_ipcmode)
+ [

### Mode PID
](#task_definition_pidmode)
+ [

### Injeksi kesalahan
](#task_definition_faultInjection)

### Penyimpanan sementara
<a name="task_definition_ephemeralStorage"></a>

`ephemeralStorage`  
Tipe: Objek [EphemeralStorage](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_EphemeralStorage.html)  
Wajib: Tidak  
Jumlah penyimpanan sementara (dalam GB) untuk dialokasikan untuk tugas tersebut. Parameter ini digunakan untuk memperluas jumlah total penyimpanan sementara yang tersedia, di luar jumlah default, untuk tugas yang di-host. AWS Fargate Untuk informasi selengkapnya, lihat [Gunakan bind mount dengan Amazon ECS](bind-mounts.md).  
Parameter ini hanya didukung pada versi platform `1.4.0` atau yang lebih baru (Linux) atau `1.0.0` atau yang lebih baru (Windows).

### Mode IPC
<a name="task_definition_ipcmode"></a>

`ipcMode`  
Ini tidak didukung untuk tugas yang berjalan di Fargate.  
Tipe: String  
Wajib: Tidak  
Namespace sumber daya IPC yang digunakan untuk kontainer dalam tugas. Nilai yang valid adalah `host`, `task`, atau `none`. Jika `host` ditentukan, maka semua kontainer yang berada dalam tugas yang menentukan mode `host` IPC pada instance kontainer yang sama berbagi sumber daya IPC yang sama dengan instans Amazon EC2 host. Jika `task` ditentukan, semua kontainer yang berada dalam tugas yang ditentukan berbagi sumber daya IPC yang sama. Jika `none` ditentukan, maka sumber daya IPC dalam kontainer tugas bersifat privat dan tidak dibagi dengan kontainer lain dalam tugas atau pada instans kontainer. Jika tidak ada nilai yang ditentukan, maka berbagi namespace sumber daya IPC tergantung pada pengaturan daemon Docker pada instans kontainer.  
Jika mode `host` IPC digunakan, ada risiko tinggi eksposur namespace IPC yang tidak diinginkan.  
Jika Anda menyetel parameter kernel namespace yang digunakan `systemControls` untuk kontainer dalam tugas, hal berikut ini berlaku untuk namespace sumber daya IPC Anda.   
+ Untuk tugas yang menggunakan mode `host` IPC, namespace IPC yang terkait `systemControls` tidak didukung.
+ Untuk tugas yang menggunakan mode `task` IPC, `systemControls` yang berhubungan dengan namespace IPC berlaku untuk semua kontainer dalam tugas.

**catatan**  
Parameter ini tidak didukung untuk wadah atau tugas Windows menggunakan tipe peluncuran Fargate.

### Mode PID
<a name="task_definition_pidmode"></a>

`pidMode`  
Tipe: String  
Nilai Valid: `host` \$1 `task`  
Wajib: Tidak  
Namspace proses yang akan digunakan untuk kontainer dalam tugas. Nilai yang valid adalah `host` atau `task`. Pada wadah Linux, satu-satunya nilai yang valid adalah`task`. Misalnya, pemantauan sidecar mungkin `pidMode` perlu mengakses informasi tentang kontainer lain yang berjalan dalam tugas yang sama.  
Jika `task` ditentukan, semua kontainer dalam tugas tertentu berbagi namespace proses yang sama.  
Jika tidak ada nilai yang ditentukan, defaultnya adalah namespace pribadi untuk setiap kontainer. 

**catatan**  
Parameter ini hanya didukung untuk tugas yang di-host AWS Fargate jika tugas menggunakan versi platform `1.4.0` atau yang lebih baru (Linux). Ini tidak didukung untuk wadah Windows di Fargate.

### Injeksi kesalahan
<a name="task_definition_faultInjection"></a>

`enableFaultInjection`  
Jenis: Boolean  
Nilai Valid: `true` \$1 `false`  
Wajib: Tidak  
Jika parameter ini disetel ke`true`, dalam payload tugas, Amazon ECS dan Fargate menerima permintaan injeksi kesalahan dari penampung tugas. Secara default, parameter ini diatur ke`false`.

# Parameter definisi tugas Amazon ECS untuk Amazon EC2
<a name="task_definition_parameters_ec2"></a>

Definisi tugas dibagi menjadi beberapa bagian terpisah: keluarga tugas, peran tugas AWS Identity and Access Management (IAM), mode jaringan, definisi wadah, volume, kendala penempatan tugas, dan kapasitas. Definisi keluarga dan wadah diperlukan dalam definisi tugas. Sebaliknya, peran tugas, mode jaringan, volume, kendala penempatan tugas, dan jenis peluncuran bersifat opsional.

Anda dapat menggunakan parameter ini dalam file JSON untuk mengonfigurasi definisi tugas Anda.

Berikut ini adalah deskripsi yang lebih rinci untuk setiap parameter definisi tugas untuk Amazon EC2

## Rangkaian
<a name="family_ec2"></a>

`family`  
Tipe: String  
Diperlukan: Ya  
Ketika Anda mendaftarkan ketentuan tugas, Anda memberikan sebuah famili, yang mirip dengan nama untuk beberapa versi ketentuan tugas, yang ditentukan dengan nomor revisi. Definisi tugas pertama yang terdaftar ke dalam keluarga tertentu diberikan revisi 1, dan definisi tugas apa pun yang terdaftar setelah itu diberi nomor revisi berurutan.

## Kapasitas
<a name="requires_compatibilities_ec2"></a>

Saat mendaftarkan definisi tugas, Anda dapat menentukan kapasitas yang harus divalidasi oleh Amazon ECS terhadap definisi tugas. Jika definisi tugas tidak memvalidasi terhadap kompatibilitas yang ditentukan, pengecualian klien dikembalikan.

Parameter berikut diperbolehkan dalam definisi tugas.

`requiresCompatibilities`  
Tipe: Array string  
Wajib: Tidak  
Nilai yang Valid: `EC2`   
Kapasitas untuk memvalidasi definisi tugas terhadap. Ini memulai pemeriksaan untuk memastikan bahwa semua parameter yang digunakan dalam definisi tugas memenuhi persyaratan Amazon EC2.

## Peran tugas
<a name="task_role_arn_ec2"></a>

`taskRoleArn`  
Tipe: String  
Wajib: Tidak  
Saat mendaftarkan definisi tugas, Anda dapat memberikan peran tugas untuk peran IAM yang memungkinkan kontainer dalam izin tugas memanggil AWS APIs yang ditentukan dalam kebijakan terkait atas nama Anda. Untuk informasi selengkapnya, lihat [Peran IAM tugas Amazon ECS](task-iam-roles.md).  
Saat Anda meluncurkan AMI Windows Server Amazon ECS yang dioptimalkan, peran IAM untuk tugas di Windows mengharuskan `-EnableTaskIAMRole` opsi disetel. Container Anda juga harus menjalankan beberapa kode konfigurasi untuk menggunakan fitur tersebut. Untuk informasi selengkapnya, lihat [Konfigurasi tambahan instans Amazon EC2 Windows](task-iam-roles.md#windows_task_IAM_roles).

## Peran eksekusi tugas
<a name="execution_role_arn_ec2"></a>

`executionRoleArn`  
Tipe: String  
Wajib: Bersyarat  
Nama Sumber Daya Amazon (ARN) dari peran eksekusi tugas yang memberikan izin agen penampung Amazon ECS untuk melakukan panggilan AWS API atas nama Anda.   
IAM role eksekusi tugas diperlukan sesuai dengan persyaratan tugas Anda. Untuk informasi selengkapnya, lihat [Peran IAM pelaksanaan tugas Amazon ECS](task_execution_IAM_role.md).

## Mode jaringan
<a name="network_mode_ec2"></a>

`networkMode`  
Tipe: String  
Wajib: Tidak  
Mode jaringan Docker digunakan untuk kontainer dalam tugas. Untuk tugas Amazon ECS yang di-host di instans Amazon EC2 Linux, nilai yang valid `none` adalah,,`bridge`, `awsvpc` dan. `host` Jika tidak ada mode jaringan yang ditentukan, mode jaringan default adalah`bridge`. Untuk tugas Amazon ECS yang dihosting di instans Windows Amazon EC2, nilai `default` yang valid adalah, dan. `awsvpc` Jika tidak ada mode jaringan yang ditentukan, mode `default` jaringan digunakan.  
Jika mode jaringan disetel ke`none`, kontainer tugas tidak memiliki konektivitas eksternal dan pemetaan port tidak dapat ditentukan dalam definisi kontainer.  
Jika mode jaringan`bridge`, tugas menggunakan jaringan virtual bawaan Docker di Linux, yang berjalan di dalam setiap instans Amazon EC2 yang menghosting tugas. Jaringan virtual bawaan di Linux menggunakan driver jaringan `bridge` Docker.  
Jika mode jaringan`host`, tugas menggunakan jaringan host yang melewati jaringan virtual bawaan Docker dengan memetakan port kontainer langsung ke ENI dari instans Amazon EC2 yang menghosting tugas. Pemetaan port dinamis tidak dapat digunakan dalam mode jaringan ini. Wadah dalam definisi tugas yang menggunakan mode ini harus menentukan `hostPort` nomor tertentu. Nomor port pada host tidak dapat digunakan oleh banyak tugas. Akibatnya, Anda tidak dapat menjalankan beberapa tugas dengan definisi tugas yang sama pada satu instans Amazon EC2.  
Saat menjalankan tugas yang menggunakan mode `host` jaringan, jangan jalankan kontainer menggunakan pengguna root (UID 0) untuk keamanan yang lebih baik. Sebagai praktik terbaik keamanan, selalu gunakan pengguna non-root.
Jika mode jaringan adalah `awsvpc`, tugas dialokasikan sebagai antarmuka jaringan elastis, dan Anda harus menentukan `NetworkConfiguration` ketika Anda membuat layanan atau menjalankan tugas dengan ketentuan tugas. Untuk informasi selengkapnya, lihat [Opsi Jaringan Tugas Amazon ECS untuk EC2](task-networking.md).  
Jika mode jaringan`default`, tugas menggunakan jaringan virtual bawaan Docker di Windows, yang berjalan di dalam setiap instans Amazon EC2 yang menghosting tugas. Jaringan virtual bawaan pada Windows menggunakan driver jaringan `nat` Docker.   
Mode `host` dan `awsvpc` jaringan menawarkan kinerja jaringan tertinggi untuk kontainer karena mereka menggunakan tumpukan jaringan Amazon EC2. Dengan mode `host` dan `awsvpc` jaringan, port kontainer yang terbuka dipetakan langsung ke port host yang sesuai (untuk mode `host` jaringan) atau port antarmuka elastis network yang terpasang (untuk mode `awsvpc` jaringan). Karena itu, Anda tidak dapat menggunakan pemetaan port host dinamis.  
Mode jaringan yang diijinkan tergantung pada sistem operasi instans EC2 yang mendasarinya. Jika Linux, mode jaringan apa pun bisa digunakan. Jika Windows, hanya dapat menggunakan mode jaringan `default`, dan `awsvpc`. 

## Platform runtime
<a name="runtime-platform_ec2"></a>

`operatingSystemFamily`  
Tipe: String  
Wajib: Bersyarat  
Standar: LINUX  
Saat Anda mendaftarkan definisi tugas, Anda menentukan keluarga sistem operasi.   
Nilai yang valid adalah`LINUX`,`WINDOWS_SERVER_2025_FULL`, `WINDOWS_SERVER_2025_CORE``WINDOWS_SERVER_2022_CORE`,`WINDOWS_SERVER_2022_FULL`,`WINDOWS_SERVER_2019_FULL`, dan`WINDOWS_SERVER_2019_CORE`,`WINDOWS_SERVER_2016_FULL`,`WINDOWS_SERVER_2004_CORE`, dan`WINDOWS_SERVER_20H2_CORE`.  
Semua definisi tugas yang digunakan dalam layanan harus memiliki nilai yang sama untuk parameter ini.  
Ketika definisi tugas adalah bagian dari layanan, nilai ini harus sesuai dengan `platformFamily` nilai layanan.

`cpuArchitecture`  
Tipe: String  
Wajib: Bersyarat  
Saat Anda mendaftarkan definisi tugas, Anda dapat menentukan arsitektur CPU. Nilai yang valid adalah `X86_64` dan `ARM64`. Jika Anda tidak menentukan nilai, Amazon ECS mencoba menempatkan tugas pada arsitektur CPU yang tersedia berdasarkan konfigurasi penyedia kapasitas. Untuk memastikan bahwa tugas ditempatkan pada arsitektur CPU tertentu, tentukan nilai untuk `cpuArchitecture` dalam definisi tugas.  
Semua definisi tugas yang digunakan dalam layanan harus memiliki nilai yang sama untuk parameter ini.  
Ketika Anda memiliki tugas Linux, Anda dapat mengatur nilainya`ARM64`. Untuk informasi selengkapnya, lihat [Definisi tugas Amazon ECS untuk beban kerja ARM 64-bit](ecs-arm64.md).

## Ukuran tugas
<a name="task_size_ec2"></a>

Saat Anda mendaftarkan definisi tugas, Anda dapat menentukan total CPU dan memori yang digunakan untuk tugas tersebut. Hal ini terpisah dari nilai `cpu` dan `memory` pada tingkat ketentuan kontainer. Untuk tugas yang di-host di instans Amazon EC2, bidang ini bersifat opsional.

**catatan**  
Tingkat tugas CPU dan memori parameter diabaikan untuk Windows kontainer. Kami merekomendasikan penentuan sumber daya tingkat kontainer untuk Windows kontainer.

`cpu`  
Tipe: String  
Wajib: Bersyarat  
Parameter ini tidak didukung untuk kontainer Windows.
Batas tegas unit CPU untuk hadir untuk tugas tersebut. Anda dapat menentukan nilai CPU dalam file JSON sebagai string dalam unit CPU atau virtual CPUs (vCPUs). Misalnya, Anda dapat menentukan nilai CPU baik seperti `1024` dalam unit CPU atau `1 vCPU` di vCPUs. Ketika definisi tugas terdaftar, nilai vCPU dikonversi ke bilangan bulat yang menunjukkan unit CPU.  
Bidang ini bersifat opsional. Jika klaster Anda tidak memiliki instans kontainer yang terdaftar dengan unit CPU yang diminta, tugas akan gagal. Nilai yang didukung adalah antara `0.125` v CPUs dan `192` vCPUs.

`memory`  
Tipe: String  
Wajib: Bersyarat  
Parameter ini tidak didukung untuk kontainer Windows.
Batas memori yang sulit untuk disajikan pada tugas. Anda dapat menentukan nilai memori dalam definisi tugas sebagai string dalam mebibytes (MiB) atau gigabyte (GB). Misalnya, Anda dapat menentukan nilai memori baik seperti `3072` di MiB atau `3 GB` GB. Ketika ketentuan tugas terdaftar, nilai GB dikonversi ke integer menunjukkan MiB.  
Bidang ini bersifat opsional dan nilai apapun dapat digunakan. Jika nilai memori tingkat tugas ditentukan, maka nilai memori tingkat kontainer adalah opsional. Jika klaster Anda tidak memiliki instance kontainer terdaftar dengan memori yang diminta tersedia, tugas gagal. Anda dapat memaksimalkan pemanfaatan sumber daya Anda dengan menyediakan tugas Anda sebanyak mungkin memori untuk jenis instans tertentu. Untuk informasi selengkapnya, lihat [Memesan memori instans wadah Amazon ECS Linux](memory-management.md).

## Definisi kontainer
<a name="container_definitions_ec2"></a>

Saat Anda mendaftarkan definisi tugas, Anda harus menentukan daftar definisi kontainer yang diteruskan ke Docker daemon pada instance container. Parameter berikut diizinkan dalam ketentuan kontainer.

**Topics**
+ [

### Parameter definisi wadah standar
](#standard_container_definition_params_ec2)
+ [

### Parameter definisi kontainer tingkat lanjut
](#advanced_container_definition_params_ec2)
+ [

### Parameter definisi kontainer lainnya
](#other_container_definition_params_ec2)

### Parameter definisi wadah standar
<a name="standard_container_definition_params_ec2"></a>

Parameter ketentuan tugas berikut diperlukan atau digunakan di sebagian besar ketentuan kontainer.

**Topics**
+ [

#### Nama
](#container_definition_name_ec2)
+ [

#### Citra
](#container_definition_image_ec2)
+ [

#### Memori
](#container_definition_memory_ec2)
+ [

#### Pemetaan port
](#container_definition_portmappings_ec2)
+ [

#### Kredensyal Repositori Pribadi
](#container_definition_repositoryCredentials_ec2)

#### Nama
<a name="container_definition_name_ec2"></a>

`name`  
Tipe: String  
Diperlukan: Ya  
Nama kontainer. Mengizinkan hingga 255 huruf (huruf besar dan huruf kecil), angka, tanda hubung, dan garis bawah. Jika Anda menautkan beberapa kontainer dalam definisi tugas, `name` satu kontainer dapat dimasukkan ke dalam `links` wadah lain. Ini untuk menghubungkan wadah.

#### Citra
<a name="container_definition_image_ec2"></a>

`image`  
Tipe: String  
Diperlukan: Ya  
Citra yang digunakan untuk memulai kontainer. String ini diteruskan langsung ke Docker daemon. Secara default, gambar dalam Docker Hub registri tersedia. Anda juga dapat menentukan repositori lain dengan salah satu atau`repository-url/image:tag`. `repository-url/image@digest` Maksimal 255 huruf (huruf besar dan kecil), angka, tanda hubung, garis bawah, titik dua, titik, garis miring, dan tanda angka diizinkan. Parameter ini memetakan ke `Image` dalam perintah docker create-container dan parameter `IMAGE` dari perintah docker run.  
+ Ketika tugas baru dimulai, agen kontainer Amazon ECS menarik versi terbaru dari citra yang ditentukan dan tanda untuk kontainer yang akan digunakan. Namun, pembaruan berikutnya ke gambar repositori tidak disebarkan ke tugas yang sudah berjalan.
+ Jika Anda tidak menentukan tag atau intisari di jalur gambar dalam definisi tugas, agen penampung Amazon ECS menggunakan `latest` tag untuk menarik gambar yang ditentukan. 
+  Pembaruan selanjutnya ke gambar repositori tidak disebarkan ke tugas yang sudah berjalan.
+ Citra di registri privat didukung. Untuk informasi selengkapnya, lihat [Menggunakan gambar AWS non-kontainer di Amazon ECS](private-auth.md).
+ Gambar di repositori Amazon ECR dapat ditentukan dengan menggunakan konvensi lengkap `registry/repository:tag` atau `registry/repository@digest` penamaan (misalnya, `aws_account_id.dkr.ecr.region.amazonaws.com` `/my-web-app:latest` atau). `aws_account_id.dkr.ecr.region.amazonaws.com` `/my-web-app@sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE`
+ Gambar di repositori resmi Docker Hub menggunakan satu nama (misalnya, `ubuntu` atau`mongo`).
+ Gambar di repositori lain di Docker Hub memenuhi syarat dengan nama organisasi (misalnya,`amazon/amazon-ecs-agent`).
+ Gambar di repositori online lainnya memenuhi syarat lebih lanjut dengan nama domain (misalnya, `quay.io/assemblyline/ubuntu`).

`versionConsistency`  
Tipe: String  
Nilai yang valid: `enabled` \$1 `disabled`  
Wajib: Tidak  
Menentukan apakah Amazon ECS akan menyelesaikan tag image container yang disediakan dalam definisi container ke image digest. Secara default, perilaku ini adalah`enabled`. Jika Anda menetapkan nilai untuk container sebagai`disabled`, Amazon ECS tidak akan menyelesaikan tag image container ke intisari dan akan menggunakan URI gambar asli yang ditentukan dalam definisi container untuk penerapan. Untuk informasi selengkapnya tentang resolusi gambar kontainer, lihat[Penerjemahan image kontainer](deployment-type-ecs.md#deployment-container-image-stability).

#### Memori
<a name="container_definition_memory_ec2"></a>

`memory`  
Tipe: Integer  
Wajib: Tidak  
Jumlah (dalam MiB) memori yang akan ditampilkan ke kontainer. Jika kontainer Anda mencoba untuk melebihi memori yang ditentukan di sini, kontainer akan dimatikan. Jumlah total memori yang disimpan untuk semua kontainer dalam tugas harus lebih rendah dari nilai `memory` tugas, jika ada yang ditentukan. Parameter ini memetakan ke `Memory` dalam perintah docker create-container dan opsi `--memory` untuk docker run.  
Anda harus menentukan nilai memori tingkat tugas atau nilai memori tingkat kontainer. Jika Anda menentukan tingkat kontainer `memory` dan `memoryReservation` nilai, nilainya harus lebih besar dari `memory` nilainya. `memoryReservation` Jika Anda menentukan`memoryReservation`, maka nilai tersebut dikurangi dari sumber daya memori yang tersedia untuk instance wadah tempat penampung ditempatkan. Jika tidak, nilai `memory` digunakan.  
Daemon Docker 20.10.0 atau yang lebih baru menyimpan minimal 6 MiB memori untuk sebuah wadah. Jadi, jangan tentukan kurang dari 6 MiB memori untuk wadah Anda.  
Docker 19.03.13-ce atau daemon sebelumnya menyimpan minimal 4 MiB memori untuk sebuah wadah. Jadi, jangan tentukan kurang dari 4 MiB memori untuk wadah Anda.  
Jika Anda mencoba memaksimalkan pemanfaatan sumber daya Anda dengan menyediakan memori sebanyak mungkin untuk jenis instans tertentu, lihat[Memesan memori instans wadah Amazon ECS Linux](memory-management.md).

`memoryReservation`  
Tipe: Integer  
Wajib: Tidak  
Batas lunak (di MiB) memori untuk menyimpan kontainer. Ketika memori sistem sedang diperdebatkan, Docker upaya untuk menjaga memori kontainer ke batas lunak ini. Namun, wadah Anda dapat menggunakan lebih banyak memori saat dibutuhkan. Wadah dapat menggunakan hingga batas keras yang ditentukan dengan `memory` parameter (jika ada) atau semua memori yang tersedia pada instance kontainer, mana yang lebih dulu. Parameter ini memetakan ke `MemoryReservation` dalam perintah docker create-container dan opsi `--memory-reservation` untuk docker run.  
Jika nilai memori tingkat tugas tidak ditentukan, Anda harus menentukan bilangan bulat bukan nol untuk salah satu atau keduanya `memory` atau `memoryReservation` dalam definisi wadah. Jika Anda menentukan keduanya, `memory` harus lebih besar dari `memoryReservation`. Jika Anda menentukan`memoryReservation`, maka nilai tersebut dikurangi dari sumber daya memori yang tersedia untuk instance wadah tempat penampung ditempatkan. Jika tidak, nilai `memory` digunakan.  
Misalnya, kontainer Anda biasanya menggunakan memori 128 MiB, tetapi kadang-kadang meledak hingga 256 MiB memori untuk waktu yang singkat. Anda dapat mengatur 128 MiB, dan batas `memory` keras 300 MiB. `memoryReservation` Konfigurasi ini memungkinkan penampung untuk hanya menyimpan 128 MiB memori dari sumber daya yang tersisa pada instance container. Pada saat yang sama, konfigurasi ini juga memungkinkan wadah untuk menggunakan lebih banyak sumber daya memori bila diperlukan.  
Parameter ini tidak didukung untuk wadah Windows.
Daemon Docker 20.10.0 atau yang lebih baru menyimpan minimal 6 MiB memori untuk sebuah wadah. Jadi, jangan tentukan kurang dari 6 MiB memori untuk wadah Anda.  
Docker 19.03.13-ce atau daemon sebelumnya menyimpan minimal 4 MiB memori untuk sebuah wadah. Jadi, jangan tentukan kurang dari 4 MiB memori untuk wadah Anda.  
Jika Anda mencoba memaksimalkan pemanfaatan sumber daya Anda dengan menyediakan memori sebanyak mungkin untuk jenis instans tertentu, lihat[Memesan memori instans wadah Amazon ECS Linux](memory-management.md).

#### Pemetaan port
<a name="container_definition_portmappings_ec2"></a>

`portMappings`  
Tipe: Array objek  
Wajib: Tidak  
Pemetaan port mengekspos port jaringan kontainer Anda ke dunia luar. ini memungkinkan klien untuk mengakses aplikasi Anda. Ini juga digunakan untuk komunikasi antar kontainer dalam tugas yang sama.  
Untuk definisi tugas yang menggunakan mode `awsvpc` jaringan, hanya tentukan`containerPort`. `hostPort`Itu selalu diabaikan, dan port kontainer secara otomatis dipetakan ke port acak bernomor tinggi pada host.  
Pemetaan port pada Windows menggunakan alamat gateway `NetNAT` daripada `localhost`. Tidak ada loopback untuk pemetaan port di Windows, jadi Anda tidak dapat mengakses port yang dipetakan kontainer dari host itu sendiri.   
Sebagian besar bidang parameter ini (termasuk`containerPort`,`hostPort`,`protocol`) dipetakan ke `PortBindings` dalam perintah create-container docker dan opsi `--publish` untuk docker run. Jika mode jaringan dari definisi tugas diatur ke`host`, port host harus tidak terdefinisi atau cocok dengan port kontainer dalam pemetaan port.  
Setelah tugas mencapai status `RUNNING` , tugas port kontainer dan host manual dan otomatis akan terlihat di lokasi-lokasi berikut:  
+ Konsol: bagian **Pengikatan jaringan** dari deskripsi kontainer untuk tugas yang dipilih.
+ AWS CLI: Bagian `networkBindings` dari output perintah **describe-tasks** .
+ API: Respons `DescribeTasks` .
+ Metadata: Titik akhir metadata tugas.  
`appProtocol`  
Tipe: String  
Wajib: Tidak  
Protokol aplikasi yang digunakan untuk pemetaan port. Parameter ini hanya berlaku untuk Service Connect. Kami menyarankan Anda mengatur parameter ini agar konsisten dengan protokol yang digunakan aplikasi Anda. Jika Anda menyetel parameter ini, Amazon ECS akan menambahkan penanganan koneksi khusus protokol ke proxy service connect. Jika Anda menyetel parameter ini, Amazon ECS menambahkan telemetri khusus protokol di konsol Amazon ECS dan. CloudWatch  
Jika Anda tidak menetapkan nilai untuk parameter ini, maka TCP digunakan. Namun, Amazon ECS tidak menambahkan telemetri khusus protokol untuk TCP.  
Untuk informasi selengkapnya, lihat [Menggunakan Service Connect untuk menghubungkan layanan Amazon ECS dengan nama pendek](service-connect.md).  
Nilai protokol yang valid: `"http" | "http2" | "grpc" `  
`containerPort`  
Jenis: Integer  
Diperlukan: Ya, kapan `portMappings` digunakan  
Nomor port pada kontainer yang terikat ke port host yang ditentukan pengguna atau secara otomatis ditetapkan.  
Untuk tugas yang menggunakan mode `awsvpc` jaringan, Anda gunakan `containerPort` untuk menentukan port yang terbuka.  
Misalkan Anda menggunakan kontainer dalam tugas dengan penyedia kapasitas EC2 dan Anda menentukan port kontainer dan bukan port host. Kemudian, kontainer Anda secara otomatis menerima port host dalam rentang port sementara. Untuk informasi selengkapnya, lihat `hostPort`. Pemetaan port yang secara otomatis ditetapkan dengan cara ini tidak dihitung terhadap kuota 100 port cadangan dari instance kontainer.  
`containerPortRange`  
Tipe: String  
Wajib: Tidak  
Rentang nomor port pada kontainer yang terikat pada rentang port host yang dipetakan secara dinamis.   
Anda hanya dapat mengatur parameter ini dengan menggunakan `register-task-definition` API. Opsi ini tersedia dalam `portMappings` parameter. Untuk informasi selengkapnya, lihat [register-task-definition](https://docs.aws.amazon.com/cli/latest/reference/ecs/register-task-definition.html) dalam *Referensi AWS Command Line Interface *.   
Aturan berikut berlaku saat Anda menentukan`containerPortRange`:  
+ Anda harus menggunakan mode `bridge` jaringan atau mode `awsvpc` jaringan.
+ Parameter ini tersedia untuk sistem operasi Linux dan Windows.
+ Instance container harus memiliki setidaknya versi 1.67.0 dari agen kontainer dan setidaknya versi 1.67.0-1 dari paket. `ecs-init`
+ Anda dapat menentukan maksimum 100 rentang port untuk setiap kontainer.
+ Anda tidak menentukan`hostPortRange`. Nilai `hostPortRange` ditetapkan sebagai berikut:
  + Untuk kontainer dalam tugas dengan mode `awsvpc` jaringan, `hostPort` diatur ke nilai yang sama dengan`containerPort`. Ini adalah strategi pemetaan statis.
  + Untuk kontainer dalam tugas dengan mode `bridge` jaringan, agen Amazon ECS menemukan port host terbuka dari rentang singkat default dan meneruskannya ke docker untuk mengikatnya ke port kontainer.
+ Nilai yang `containerPortRange` valid adalah antara 1 dan 65535.
+ Sebuah port hanya dapat dimasukkan dalam satu pemetaan port untuk setiap kontainer.
+ Anda tidak dapat menentukan rentang port yang tumpang tindih.
+ Port pertama dalam kisaran harus kurang dari port terakhir dalam kisaran.
+ Dockermerekomendasikan agar Anda mematikan docker-proxy di file konfigurasi Docker daemon ketika Anda memiliki banyak port.

  Untuk informasi selengkapnya, lihat [Masalah \$111185](https://github.com/moby/moby/issues/11185) di GitHub.

  [https://docs.aws.amazon.com/AmazonECS/latest/developerguide/bootstrap_container_instance.html#bootstrap_docker_daemon](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/bootstrap_container_instance.html#bootstrap_docker_daemon)
Anda dapat menelepon [DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html)untuk melihat`hostPortRange`, yang merupakan port host yang terikat ke port kontainer.  
Rentang port tidak disertakan dalam peristiwa tugas Amazon ECS, yang dikirim ke EventBridge. Untuk informasi selengkapnya, lihat [Otomatiskan tanggapan terhadap kesalahan Amazon ECS menggunakan EventBridge](cloudwatch_event_stream.md).  
`hostPortRange`  
Tipe: String  
Wajib: Tidak  
Rentang nomor port pada host yang digunakan dengan pengikatan jaringan. Ini ditugaskan oleh Docker dan dikirim oleh agen Amazon ECS.  
`hostPort`  
Tipe: Integer  
Wajib: Tidak  
Nomor port pada instans kontainer untuk menyimpan kontainer Anda.  
Anda dapat menentukan port host yang tidak dicadangkan untuk pemetaan port kontainer Anda. Ini disebut sebagai pemetaan port host *statis*. Atau, Anda dapat menghilangkan `hostPort` (atau mengaturnya ke`0`) sambil menentukan a. `containerPort` Container Anda secara otomatis menerima port dalam rentang port sementara untuk sistem operasi dan Docker versi instans kontainer Anda. Ini disebut sebagai pemetaan port host *dinamis*.  
Rentang port fana default Docker versi 1.6.0 dan yang lebih baru tercantum pada instance di bawah. `/proc/sys/net/ipv4/ip_local_port_range` Jika parameter kernel ini tidak tersedia, port sementara default berkisar sejak `49153–65535` digunakan. Jangan mencoba menentukan port host dalam rentang port sementara. Ini karena ini dicadangkan untuk penugasan otomatis. Secara umum, port di bawah `32768` berada di luar jangkauan port fana. Anda dapat menggunakan `ECS_DYNAMIC_HOST_PORT_RANGE` pengaturan dalam konfigurasi agen kontainer ECS untuk menentukan rentang kustom untuk port host yang ditetapkan secara dinamis. Itu mungkin membantu jika tugas Anda gagal dimulai karena konflik port dengan proses lain pada instance kontainer seperti koneksi keluar yang juga menggunakan port dari rentang port sementara. Untuk informasi selengkapnya, lihat [Konfigurasi agen kontainer Amazon ECS](ecs-agent-config.md).  
Port cadangan default adalah `22` untuk SSH, Docker port `2375` dan`2376`, dan port agen kontainer Amazon ECS. `51678-51680` Port host apa pun yang sebelumnya ditentukan pengguna untuk tugas yang sedang berjalan juga dicadangkan saat tugas sedang berjalan. Setelah tugas berhenti, port host dilepaskan. Port cadangan saat ini ditampilkan `remainingResources` di **describe-container-instances** output. Instance kontainer mungkin memiliki hingga 100 port cadangan sekaligus, termasuk port cadangan default. Port yang ditetapkan secara otomatis tidak dihitung terhadap kuota 100 port cadangan.  
`name`  
Tipe: String  
Wajib: Tidak, diperlukan agar Service Connect dan VPC Lattice dikonfigurasi dalam layanan  
Nama yang digunakan untuk pemetaan port. Parameter ini hanya berlaku untuk Service Connect dan VPC Lattice. Parameter ini adalah nama yang Anda gunakan dalam konfigurasi Service Connect dan VPC Lattice suatu layanan.  
Untuk informasi selengkapnya, lihat [Menggunakan Service Connect untuk menghubungkan layanan Amazon ECS dengan nama pendek](service-connect.md).  
Dalam contoh berikut, kedua bidang wajib untuk Service Connect dan VPC Lattice digunakan.  

```
"portMappings": [
    {
        "name": string,
        "containerPort": integer
    }
]
```  
`protocol`  
Tipe: String  
Wajib: Tidak  
Protokol yang digunakan untuk pemetaan port. Nilai yang valid adalah `tcp` dan `udp`. Default adalah `tcp`.  
Hanya `tcp` didukung untuk Service Connect. Ingat itu `tcp` tersirat jika bidang ini tidak disetel. 
Dukungan UDP hanya tersedia pada instance kontainer yang diluncurkan dengan agen kontainer Amazon ECS versi 1.2.0 (seperti `amzn-ami-2015.03.c-amazon-ecs-optimized` AMI) atau yang lebih baru, atau dengan agen kontainer yang telah diperbarui ke versi 1.3.0 atau yang lebih baru. Untuk memperbarui agen kontainer ke versi terbaru, lihat [Memperbarui agen kontainer Amazon ECS](ecs-agent-update.md).
Jika Anda menentukan port host, gunakan sintaks berikut.  

```
"portMappings": [
    {
        "containerPort": integer,
        "hostPort": integer
    }
    ...
]
```
Jika Anda menginginkan port host yang ditetapkan secara otomatis, gunakan sintaks berikut.  

```
"portMappings": [
    {
        "containerPort": integer
    }
    ...
]
```

#### Kredensyal Repositori Pribadi
<a name="container_definition_repositoryCredentials_ec2"></a>

`repositoryCredentials`  
Tipe: Objek [RepositoryCredentials](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RepositoryCredentials.html)  
Wajib: Tidak  
Kredensyal repositori untuk otentikasi registri pribadi.  
Untuk informasi selengkapnya, lihat [Menggunakan gambar AWS non-kontainer di Amazon ECS](private-auth.md).    
 `credentialsParameter`  
Tipe: String  
Diperlukan: Ya, kapan `repositoryCredentials` digunakan  
Amazon Resource Name (ARN) dari rahasia yang berisi kredensial repositori privat.  
Untuk informasi selengkapnya, lihat [Menggunakan gambar AWS non-kontainer di Amazon ECS](private-auth.md).  
Saat Anda menggunakan Amazon ECS API, AWS CLI, atau AWS SDKs, jika rahasia ada di Wilayah yang sama dengan tugas yang Anda luncurkan, maka Anda dapat menggunakan ARN lengkap atau nama rahasianya. Bila Anda menggunakan Konsol Manajemen AWS, Anda harus menentukan ARN penuh rahasia.
Berikut ini adalah cuplikan definisi tugas yang menunjukkan parameter yang diperlukan:  

```
"containerDefinitions": [
    {
        "image": "private-repo/private-image",
        "repositoryCredentials": {
            "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name"
        }
    }
]
```

### Parameter definisi kontainer tingkat lanjut
<a name="advanced_container_definition_params_ec2"></a>

Parameter definisi kontainer lanjutan berikut memberikan kemampuan yang diperluas ke perintah docker run yang digunakan untuk meluncurkan container di instance container Amazon ECS Anda.

**Topics**
+ [

#### Kebijakan Mulai Ulang
](#container_definition_restart_policy_ec2)
+ [

#### Pemeriksaan kondisi
](#container_definition_healthcheck_ec2)
+ [

#### Lingkungan
](#container_definition_environment_ec2)
+ [

#### Pengaturan jaringan
](#container_definition_network_ec2)
+ [

#### Penyimpanan dan pencatatan log
](#container_definition_storage_ec2)
+ [

#### Keamanan
](#container_definition_security_ec2)
+ [

#### Batas sumber daya
](#container_definition_limits_ec2)
+ [

#### Label docker
](#container_definition_labels_ec2)

#### Kebijakan Mulai Ulang
<a name="container_definition_restart_policy_ec2"></a>

`restartPolicy`  
Kebijakan restart kontainer dan parameter konfigurasi terkait. Saat Anda menyiapkan kebijakan restart untuk penampung, Amazon ECS dapat memulai ulang penampung tanpa perlu mengganti tugas. Untuk informasi selengkapnya, lihat [Mulai ulang kontainer individual dalam tugas Amazon ECS dengan kebijakan restart kontainer](container-restart-policy.md).    
`enabled`  
Jenis: Boolean  
Wajib: Ya  
Menentukan apakah kebijakan restart diaktifkan untuk wadah.  
`ignoredExitCodes`  
Jenis: himpunan integer  
Wajib: Tidak  
Daftar kode keluar yang akan diabaikan Amazon ECS dan tidak mencoba memulai ulang. Anda dapat menentukan maksimum 50 kode keluar kontainer. Secara default, Amazon ECS tidak mengabaikan kode keluar apa pun.  
`restartAttemptPeriod`  
Tipe: Integer  
Wajib: Tidak  
Periode waktu (dalam detik) wadah harus dijalankan sebelum restart dapat dicoba. Sebuah wadah dapat dimulai ulang hanya sekali setiap `restartAttemptPeriod` detik. Jika kontainer tidak dapat berjalan untuk periode waktu ini dan keluar lebih awal, itu tidak akan dimulai ulang. Anda dapat mengatur minimal `restartAttemptPeriod` 60 detik dan maksimum `restartAttemptPeriod` 1800 detik. Secara default, kontainer harus berjalan selama 300 detik sebelum dapat dimulai ulang.

#### Pemeriksaan kondisi
<a name="container_definition_healthcheck_ec2"></a>

`healthCheck`  
Perintah pemeriksaan kesehatan kontainer dan parameter konfigurasi terkait untuk wadah. Untuk informasi selengkapnya, lihat [Menentukan Kondisi Tugas Amazon ECS Menggunakan Pemeriksaan Kondisi Kontainer](healthcheck.md).    
`command`  
Array string yang mewakili perintah yang dijalankan kontainer untuk menentukan apakah itu sehat. Array string dapat dimulai dengan `CMD` untuk menjalankan argumen perintah secara langsung, atau `CMD-SHELL` untuk menjalankan perintah dengan shell default container. Jika tidak ada yang `CMD` ditentukan, digunakan.  
Saat mendaftarkan definisi tugas di Konsol Manajemen AWS, gunakan daftar perintah yang dipisahkan koma. Perintah ini dikonversi ke string setelah definisi tugas dibuat. Contoh masukan untuk pemeriksaan kesehatan adalah sebagai berikut.  

```
CMD-SHELL, curl -f http://localhost/ || exit 1
```
Saat mendaftarkan definisi tugas menggunakan panel Konsol Manajemen AWS JSON,, atau AWS CLI APIs, lampirkan daftar perintah dalam tanda kurung. Contoh masukan untuk pemeriksaan kesehatan adalah sebagai berikut.  

```
[ "CMD-SHELL", "curl -f http://localhost/ || exit 1" ]
```
Kode keluar 0, tanpa `stderr` output, menunjukkan keberhasilan, dan kode keluar bukan nol menunjukkan kegagalan.   
`interval`  
Periode waktu (dalam detik) antara setiap pemeriksaan kesehatan. Anda dapat menentukan antara 5 dan 300 detik. Nilai default-nya adalah 30 detik.  
`timeout`  
Periode waktu (dalam hitungan detik) untuk menunggu pemeriksaan kesehatan berhasil sebelum dianggap gagal. Anda dapat menentukan antara 2 dan 60 detik. Nilai defaultnya adalah 5 detik.  
`retries`  
Jumlah raktu untuk mencoba kembali pemeriksaan kondisi yang gagal sebelum kontainer dianggap tidak sehat. Anda dapat menentukan antara 1 dan 10 percobaan ulang. Nilai default-nya adalah tiga kali percobaan ulang.  
`startPeriod`  
Masa tenggang opsional untuk menyediakan waktu kontainer untuk bootstrap sebelum pemeriksaan kesehatan yang gagal dihitung terhadap jumlah maksimum percobaan ulang. Anda dapat menentukan antara 0 dan 300 detik. Secara default, `startPeriod` dinonaktifkan.  
Jika pemeriksaan kondisi berhasil dalam `startPeriod`, maka kontainer dianggap sehat dan kegagalan berikutnya dihitung terhadap jumlah maksimum percobaan kembali.

#### Lingkungan
<a name="container_definition_environment_ec2"></a>

`cpu`  
Tipe: Integer  
Wajib: Tidak  
Jumlah `cpu` unit cadangan agen kontainer Amazon ECS untuk kontainer. Di Linux, parameter ini dipetakan `CpuShares` di bagian [Create a container](https://docs.docker.com/reference/api/engine/version/v1.38/#operation/ContainerCreate).  
Anda dapat menentukan jumlah unit CPU yang tersedia untuk setiap jenis instans Amazon EC2. Untuk melakukan ini, kalikan jumlah v yang CPUs terdaftar untuk jenis instans tersebut di halaman detail [Instans Amazon EC2](https://aws.amazon.com/ec2/instance-types/) dengan 1.024.
Linuxkontainer berbagi unit CPU yang tidak terisi dengan kontainer lain pada instance kontainer dengan rasio yang sama dengan jumlah yang dialokasikan. Misalnya, asumsikan bahwa Anda menjalankan tugas kontainer tunggal pada tipe instans inti tunggal dengan 512 unit CPU yang ditentukan untuk kontainer tersebut. Selain itu, tugas itu adalah satu-satunya tugas yang berjalan pada instance container. Dalam contoh ini, wadah dapat menggunakan 1.024 pangsa unit CPU penuh pada waktu tertentu. Namun, asumsikan bahwa Anda meluncurkan salinan lain dari tugas yang sama pada instance kontainer itu. Setiap tugas dijamin minimal 512 unit CPU bila diperlukan. Demikian pula, jika wadah lain tidak menggunakan CPU yang tersisa, setiap kontainer dapat mengambang ke penggunaan CPU yang lebih tinggi. Namun, jika kedua tugas tersebut 100% aktif sepanjang waktu, mereka terbatas pada 512 unit CPU.  
Pada instance Linux container, Docker daemon pada instance container menggunakan nilai CPU untuk menghitung rasio pangsa CPU relatif untuk menjalankan container. Nilai pangsa CPU minimum yang valid yang diizinkan oleh kernel Linux adalah 2, dan nilai pangsa CPU valid maksimum yang diizinkan oleh kernel Linux adalah 262144. Namun, parameter CPU tidak diperlukan, dan Anda dapat menggunakan nilai CPU di bawah dua dan di atas 262144 dalam definisi container Anda. Untuk nilai CPU di bawah dua (termasuk null) dan di atas 262144, perilaku bervariasi berdasarkan versi agen penampung Amazon ECS Anda:  
+ **Versi agen <= 1.1.0:** Nilai CPU nol dan nol diteruskan ke Docker 0. Dockerkemudian mengubah nilai ini menjadi 1.024 saham CPU. Nilai CPU dari satu diteruskan ke Docker sebagai satu, yang Linux kernel mengkonversi menjadi dua saham CPU.
+ **Versi agen >= 1.2.0:** Nilai nol, nol, dan CPU dari satu diteruskan Docker sebagai dua pembagian CPU.
+ **Versi agen >= 1.84.0:** Nilai CPU yang lebih besar dari 256 vCPU diteruskan ke Docker 256, yang setara dengan 262144 pangsa CPU.
Pada instance Windows kontainer, kuota CPU diberlakukan sebagai kuota absolut. Windowscontainer hanya memiliki akses ke jumlah CPU tertentu yang ditentukan dalam definisi tugas. Nilai CPU nol atau nol diteruskan ke Docker as`0`. Windowskemudian menafsirkan nilai ini sebagai 1% dari satu CPU.  
Untuk contoh selengkapnya, lihat [Cara Amazon ECS mengelola sumber daya CPU dan memori](https://aws.amazon.com/blogs/containers/how-amazon-ecs-manages-cpu-and-memory-resources/).

`gpu`  
Tipe: Objek [ResourceRequirement](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ResourceRequirement.html)  
Wajib: Tidak  
Jumlah fisik `GPUs` yang dicadangkan agen kontainer Amazon ECS untuk kontainer. Jumlah GPUs cadangan untuk semua kontainer dalam tugas tidak boleh melebihi jumlah yang tersedia GPUs pada instance kontainer tempat tugas diluncurkan. Untuk informasi selengkapnya, lihat [Definisi tugas Amazon ECS untuk beban kerja GPU](ecs-gpu.md).  
Parameter ini tidak didukung untuk Windows kontainer.

`Elastic Inference accelerator`  
Tipe: Objek [ResourceRequirement](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ResourceRequirement.html)  
Wajib: Tidak  
Untuk `InferenceAccelerator` jenisnya, `value` cocok dengan yang `deviceName` `InferenceAccelerator` ditentukan dalam definisi tugas. Untuk informasi selengkapnya, lihat [Nama akselerator Elastic Inference (usang)](task_definition_parameters.md#elastic-Inference-accelerator).  
Parameter ini tidak didukung untuk Windows kontainer.

`essential`  
Tipe: Boolean  
Wajib: Tidak  
Misalkan `essential` parameter wadah ditandai sebagai`true`, dan wadah itu gagal atau berhenti karena alasan apa pun. Kemudian, semua wadah lain yang merupakan bagian dari tugas dihentikan. Jika `essential` parameter wadah ditandai sebagai`false`, maka kegagalannya tidak mempengaruhi sisa kontainer dalam suatu tugas. Jika parameter ini dihilangkan, kontainer diasumsikan menjadi penting.  
Semua tugas harus memiliki setidaknya satu kontainer penting. Misalkan Anda memiliki aplikasi yang terdiri dari beberapa kontainer. Kemudian, kelompokkan wadah yang digunakan untuk tujuan bersama menjadi komponen, dan pisahkan komponen yang berbeda menjadi beberapa definisi tugas. Untuk informasi selengkapnya, lihat [Merancang Aplikasi Anda untuk Amazon ECS](application_architecture.md).  

```
"essential": true|false
```

`entryPoint`  
Versi awal agen kontainer Amazon ECS tidak menangani `entryPoint` parameter dengan benar. Jika Anda memiliki masalah menggunakan `entryPoint`, perbarui agen kontainer Anda atau masukkan perintah dan argumen Anda sebagai item array `command` sebagai gantinya.
Tipe: Array string  
Wajib: Tidak  
Titik masuk yang diteruskan ke wadah.   

```
"entryPoint": ["string", ...]
```

`command`  
Tipe: Array string  
Wajib: Tidak  
Perintah yang diteruskan ke kontainer. Parameter ini memetakan ke `Cmd` dalam perintah create-container dan parameter `COMMAND` ke docker run. Jika ada beberapa argumen, pastikan bahwa setiap argumen adalah string terpisah dalam array.  

```
"command": ["string", ...]
```

`workingDirectory`  
Tipe: String  
Wajib: Tidak  
Direktori kerja untuk menjalankan perintah di dalam wadah di. Parameter ini sesuai dengan `WorkingDir` di bagian [Buat kontainer](https://docs.docker.com/reference/api/engine/version/v1.38/#operation/ContainerCreate) di [Docker Remote API](https://docs.docker.com/reference/api/engine/version/v1.38/) dan opsi `--workdir` untuk [https://docs.docker.com/reference/cli/docker/container/run/](https://docs.docker.com/reference/cli/docker/container/run/).  

```
"workingDirectory": "string"
```

`environmentFiles`  
Tipe: Array objek  
Wajib: Tidak  
Daftar file yang berisi variabel lingkungan untuk diteruskan ke kontainer. Parameter ini memetakan ke `--env-file` opsi ke perintah docker run.  
Saat FIPS diaktifkan, nama bucket yang memiliki periode (.) (misalnya, amzn-s3-demo-bucket1.name.example) tidak didukung. Memiliki period (.) dalam nama bucket mencegah tugas dimulai karena agen tidak dapat menarik file variabel lingkungan dari Amazon S3.  
Ini tidak tersedia untuk Windows kontainer.  
Anda dapat menentukan hingga 10 file lingkungan. File harus memiliki ekstensi file `.env`. Setiap baris dalam file lingkungan berisi variabel lingkungan dalam `VARIABLE=VALUE` format. Baris yang dimulai dengan `#` diperlakukan sebagai komentar dan diabaikan.   
Jika ada variabel lingkungan individu yang ditentukan dalam ketentuan kontainer, maka akan lebih diutamakan daripada variabel yang ada di dalam file lingkungan. Jika beberapa file lingkungan ditentukan yang berisi variabel yang sama, mereka diproses dari atas ke bawah. Kami merekomendasikan agar Anda menggunakan nama variabel yang unik. Untuk informasi selengkapnya, lihat [Meneruskan variabel lingkungan individual ke wadah Amazon ECS](taskdef-envfiles.md).    
`value`  
Tipe: String  
Wajib: Ya  
Amazon Resource Name (ARN) dari objek Amazon S3 yang berisi variabel lingkungan file.  
`type`  
Tipe: String  
Wajib: Ya  
Tipe file yang akan digunakan. Satu-satunya nilai yang didukung adalah `s3`.

`environment`  
Tipe: Array objek  
Wajib: Tidak  
Variabel lingkungan untuk disampaikan ke kontainer. Parameter ini memetakan ke `Env` dalam perintah docker create-container dan opsi `--env` ke perintah docker run.  
Kami tidak menyarankan menggunakan variabel lingkungan teks biasa untuk informasi sensitif, seperti data kredensial.  
`name`  
Tipe: String  
Diperlukan: Ya, saat `environment` digunakan  
Nama variabel lingkungan.  
`value`  
Tipe: String  
Diperlukan: Ya, saat `environment` digunakan  
Nilai dari variabel lingkungan.

```
"environment" : [
    { "name" : "string", "value" : "string" },
    { "name" : "string", "value" : "string" }
]
```

`secrets`  
Tipe: Object array  
Wajib: Tidak  
Objek yang mewakili rahasia untuk mengekspos ke wadah Anda. Untuk informasi selengkapnya, lihat [Meneruskan data sensitif ke wadah Amazon ECS](specifying-sensitive-data.md).    
`name`  
Tipe: String  
Wajib: Ya  
Nilai untuk ditetapkan sebagai variabel lingkungan pada kontainer.  
`valueFrom`  
Tipe: String  
Wajib: Ya  
Secret untuk mengekspos ke kontainer. Nilai yang didukung adalah Nama Sumber Daya Amazon (ARN) lengkap dari AWS Secrets Manager rahasia atau ARN lengkap parameter di Parameter Store. AWS Systems Manager   
Jika parameter Systems Manager Parameter Store atau parameter Secrets Manager Wilayah AWS sama dengan tugas yang Anda luncurkan, Anda dapat menggunakan ARN lengkap atau nama rahasia. Jika parameter ada di Wilayah yang berbeda, ARN lengkap harus disebutkan.

```
"secrets": [
    {
        "name": "environment_variable_name",
        "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
    }
]
```

#### Pengaturan jaringan
<a name="container_definition_network_ec2"></a>

`disableNetworking`  
Tipe: Boolean  
Wajib: Tidak  
Ketika parameter ini benar, jaringan mati di dalam wadah.  
Parameter ini tidak didukung untuk Windows kontainer atau tugas yang menggunakan mode `awsvpc` jaringan.
Nilai default-nya `false`.  

```
"disableNetworking": true|false
```

`links`  
Tipe: Array string  
Wajib: Tidak  
Parameter `link` mengizinkan kontainer untuk berkomunikasi satu sama lain tanpa perlu port pemetaan. Parameter ini hanya didukung jika mode jaringan dari definisi tugas diatur ke`bridge`. `name:internalName`Konstruk ini analog dengan dalam tautan. `name:alias` Docker Hingga 255 huruf (huruf besar dan kecil), angka, tanda hubung, dan garis bawah diperbolehkan..  
Parameter ini tidak didukung untuk Windows kontainer atau tugas yang menggunakan mode `awsvpc` jaringan.
Kontainer yang ditempatkan pada instance kontainer yang sama dapat berkomunikasi satu sama lain tanpa memerlukan tautan atau pemetaan port host. Isolasi jaringan pada instans kontainer dikendalikan oleh grup keamanan dan pengaturan VPC.

```
"links": ["name:internalName", ...]
```

`hostname`  
Tipe: String  
Wajib: Tidak  
Nama host yang digunakan untuk kontainer Anda. Parameter ini memetakan ke `Hostname` dalam docker create-container dan opsi `--hostname` untuk docker run.  
Jika Anda menggunakan mode `awsvpc` jaringan, `hostname` parameter tidak didukung.

```
"hostname": "string"
```

`dnsServers`  
Tipe: Array string  
Wajib: Tidak  
Daftar server DNS yang disajikan untuk kontainer.  
Parameter ini tidak didukung untuk Windows kontainer atau tugas yang menggunakan mode `awsvpc` jaringan.

```
"dnsServers": ["string", ...]
```

`dnsSearchDomains`  
Tipe: Array string  
Wajib: Tidak  
Pola: ^[a-zA-Z0-9-.]\$10,253\$1[a-zA-Z0-9]\$1  
Daftar domain pencarian DNS yang disajikan untuk kontainer. Parameter ini memetakan ke `DnsSearch` dalam perintah docker create-container opsi `--dns-search` untuk docker run.  
Parameter ini tidak didukung untuk wadah Windows atau tugas yang menggunakan mode `awsvpc` jaringan.

```
"dnsSearchDomains": ["string", ...]
```

`extraHosts`  
Tipe: Array objek  
Wajib: Tidak  
Daftar nama host dan pemetaan alamat IP untuk ditambahkan ke file `/etc/hosts` di kontainer.   
Parameter ini memetakan ke `ExtraHosts` dalam perintah docker create-container dan opsi `--add-host` untuk docker run.  
Parameter ini tidak didukung untuk wadah Windows atau tugas yang menggunakan mode `awsvpc` jaringan.

```
"extraHosts": [
      {
        "hostname": "string",
        "ipAddress": "string"
      }
      ...
    ]
```  
`hostname`  
Tipe: String  
Diperlukan: Ya, kapan `extraHosts` digunakan  
Nama host yang akan digunakan dalam entri `/etc/hosts`.  
`ipAddress`  
Tipe: String  
Diperlukan: Ya, kapan `extraHosts` digunakan  
Alamat IP yang akan digunakan dalam `/etc/hosts` entri.

#### Penyimpanan dan pencatatan log
<a name="container_definition_storage_ec2"></a>

`readonlyRootFilesystem`  
Tipe: Boolean  
Wajib: Tidak  
Jika parameter ini betul, kontainer diberikan akses hanya-baca ke sistem file asalnya. Parameter ini memetakan ke `ReadonlyRootfs` dalam perintah docker create-container opsi `--read-only` untuk docker run.  
Parameter ini tidak didukung untuk kontainer Windows.
Nilai default-nya `false`.  

```
"readonlyRootFilesystem": true|false
```

`mountPoints`  
Tipe: Array objek  
Wajib: Tidak  
Titik pemasangan untuk volume data dalam penampung Anda. Parameter ini memetakan ke `Volumes` dalam create-container Docker API dan opsi `--volume` untuk docker run.  
Kontainer Windows dapat memasang seluruh direktori pada drive yang sama dengan `$env:ProgramData`. Kontainer Windows tidak dapat memasang direktori pada drive yang berbeda, dan titik pemasangan tidak dapat digunakan di seluruh drive. Anda harus menentukan titik pemasangan untuk melampirkan volume Amazon EBS langsung ke tugas Amazon ECS.    
`sourceVolume`  
Tipe: String  
Diperlukan: Ya, kapan `mountPoints` digunakan  
Nama volume yang akan dipasang.  
`containerPath`  
Tipe: String  
Diperlukan: Ya, kapan `mountPoints` digunakan  
Jalur dalam wadah tempat volume akan dipasang.  
`readOnly`  
Tipe: Boolean  
Wajib: Tidak  
Jika nilai ini adalah `true`, kontainer memiliki akses hanya-baca ke volume. Jika nilai ini adalah `false`, maka kontainer dapat menulis ke volume. Nilai default-nya adalah `false`.  
Untuk tugas yang menjalankan sistem operasi Windows, biarkan nilainya sebagai default`false`.

`volumesFrom`  
Tipe: Array objek  
Wajib: Tidak  
Volume data untuk memasang dari kontainer lain. Parameter ini memetakan ke `VolumesFrom` dalam perintah docker create-container dan opsi `--volumes-from` untuk docker run.    
`sourceContainer`  
Tipe: String  
Diperlukan: Ya, saat `volumesFrom` digunakan  
Nama kontainer untuk memasang volume.  
`readOnly`  
Tipe: Boolean  
Wajib: Tidak  
Jika nilai ini adalah `true`, kontainer memiliki akses hanya-baca ke volume. Jika nilai ini adalah `false`, maka kontainer dapat menulis ke volume. Nilai default-nya adalah `false`.

```
"volumesFrom": [
                {
                  "sourceContainer": "string",
                  "readOnly": true|false
                }
              ]
```

`logConfiguration`  
Jenis: [LogConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LogConfiguration.html)Objek  
Wajib: Tidak  
Spesifikasi konfigurasi log untuk kontainer.  
Misalnya definisi tugas yang menggunakan konfigurasi log, lihat[Contoh definisi tugas Amazon ECS](example_task_definitions.md).  
Parameter ini memetakan ke `LogConfig` dalam perintah docker create-container dan opsi `--log-driver` untuk docker run. Secara default, kontainer menggunakan driver logging yang sama dengan yang digunakan Docker daemon. Namun, penampung mungkin menggunakan driver logging yang berbeda dari Docker daemon dengan menentukan driver log dengan parameter ini dalam definisi container. Untuk menggunakan driver penlog yang berbeda untuk kontainer, sistem log harus dikonfigurasi dengan benar pada instans kontainer (atau pada server log yang berbeda untuk opsi penlog jarak jauh).   
Pertimbangkan hal berikut saat menentukan konfigurasi log untuk kontainer Anda:  
+ Amazon ECS mendukung subset driver logging yang tersedia untuk daemon. Docker
+ Parameter ini memerlukan Docker Remote API versi 1.18 atau yang lebih baru pada instance container Anda.
+ Agen penampung Amazon ECS yang berjalan pada instance container harus mendaftarkan driver logging yang tersedia pada instance tersebut dengan variabel `ECS_AVAILABLE_LOGGING_DRIVERS` lingkungan sebelum container yang ditempatkan pada instance tersebut dapat menggunakan opsi konfigurasi log ini. Untuk informasi selengkapnya, lihat [Konfigurasi agen kontainer Amazon ECS](ecs-agent-config.md).

```
"logConfiguration": {
      "logDriver": "awslogs","fluentd","gelf","json-file","journald","splunk","syslog","awsfirelens",
      "options": {"string": "string"
        ...},
	"secretOptions": [{
		"name": "string",
		"valueFrom": "string"
	}]
}
```  
`logDriver`  
Tipe: String  
Nilai yang valid: `"awslogs","fluentd","gelf","json-file","journald","splunk","syslog","awsfirelens"`  
Diperlukan: Ya, saat `logConfiguration` digunakan  
Driver log yang digunakan untuk kontainer. Secara default, nilai valid yang tercantum sebelumnya adalah driver log yang dapat berkomunikasi dengan agen penampung Amazon ECS.  
Driver log yang didukung adalah `awslogs`, `fluentd`, `gelf`, `json-file`, `journald`, `syslog`, `splunk`, dan `awsfirelens`.  
Untuk informasi selengkapnya tentang cara menggunakan driver `awslogs` log dalam definisi tugas untuk mengirim log kontainer Anda ke CloudWatch Log, lihat[Kirim log Amazon ECS ke CloudWatch](using_awslogs.md).  
Untuk informasi selengkapnya tentang penggunaan driver log `awsfirelens`, lihat [Perutean Log Kustom](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html).  
Jika Anda memiliki driver khusus yang tidak terdaftar, Anda dapat melakukan fork proyek agen penampung Amazon ECS yang [tersedia GitHub](https://github.com/aws/amazon-ecs-agent) dan menyesuaikannya agar berfungsi dengan driver itu. Kami mendorong Anda untuk mengirim permintaan tarik untuk perubahan yang ingin Anda sertakan. Namun, saat ini kami tidak mendukung menjalankan salinan yang dimodifikasi dari perangkat lunak ini.
Parameter ini memerlukan Docker Remote API versi 1.18 atau lebih besar pada instans kontainer Anda.  
`options`  
Tipe: Peta antar string  
Wajib: Tidak  
 key/value Peta opsi konfigurasi untuk dikirim ke driver log.  
Opsi yang dapat Anda tentukan tergantung pada driver log. Beberapa opsi yang dapat Anda tentukan saat Anda menggunakan `awslogs` router untuk merutekan log ke Amazon CloudWatch meliputi yang berikut:    
`awslogs-create-group`  
Wajib: Tidak  
Tentukan apakah Anda ingin grup log dibuat secara otomatis. Jika opsi ini tidak ditentukan, default-nya adalah `false`.  
Kebijakan IAM Anda harus menyertakan `logs:CreateLogGroup` izin sebelum Anda mencoba menggunakannya`awslogs-create-group`.  
`awslogs-region`  
Wajib: Ya  
Tentukan Wilayah AWS driver `awslogs` log untuk mengirim log Docker Anda. Anda dapat memilih untuk mengirim semua log Anda dari kluster di Wilayah yang berbeda ke satu wilayah di CloudWatch Log. Ini agar mereka semua terlihat di satu lokasi. Jika tidak, Anda dapat memisahkannya berdasarkan Wilayah untuk perincian lebih lanjut. Pastikan bahwa grup log yang ditentukan ada di Wilayah yang Anda tentukan dengan opsi ini.  
`awslogs-group`  
Wajib: Ya  
Pastikan untuk menentukan grup log tempat driver `awslogs` log mengirimkan aliran lognya.  
`awslogs-stream-prefix`  
Diperlukan: Opsional  
Gunakan `awslogs-stream-prefix` opsi untuk mengaitkan aliran log dengan awalan yang ditentukan, nama penampung, dan ID tugas Amazon ECS tempat penampung tersebut berada. Jika Anda menentukan awalan dengan opsi ini, maka aliran log mengambil format berikut.  

```
prefix-name/container-name/ecs-task-id
```
Jika Anda tidak menentukan awalan dengan opsi ini, maka aliran log dinamai sesuai dengan ID penampung yang ditetapkan oleh daemon Docker pada instance container. Karena sulit untuk melacak log kembali ke wadah yang mengirimnya hanya dengan ID wadah Docker (yang hanya tersedia pada instance penampung), kami sarankan Anda menentukan awalan dengan opsi ini.  
Untuk layanan Amazon ECS, Anda dapat menggunakan nama layanan sebagai awalan. Dengan melakukannya, Anda dapat melacak aliran log ke layanan tempat penampung milik, nama penampung yang mengirimnya, dan ID tugas yang menjadi milik penampung tersebut.  
Anda harus menentukan awalan aliran agar log Anda muncul di panel Log saat menggunakan konsol Amazon ECS.  
`awslogs-datetime-format`  
Wajib: Tidak  
Opsi ini mendefinisikan pola mulai multiline di Python format `strftime`. Pesan log terdiri dari baris yang cocok dengan pola dan baris berikut yang tidak cocok dengan pola. Garis yang cocok adalah pembatas antara pesan log.  
Salah satu contoh kasus penggunaan format ini adalah untuk penguraian output seperti buangan tumpukan, yang mungkin bisa tercatat dalam beberapa entri. Pola yang benar akan memungkinkannya ditangkap dalam satu entri.  
Untuk informasi selengkapnya, lihat [awslogs-datetime-format](https://docs.docker.com/engine/logging/drivers/awslogs/#awslogs-datetime-format).  
Anda tidak dapat mengonfigurasi opsi `awslogs-datetime-format` dan `awslogs-multiline-pattern` opsi.  
Pencatatan multibaris melakukan penguraian dan pencocokan ekspresi reguler dari semua pesan log. Ini mungkin berdampak negatif pada performa pencatatan.  
`awslogs-multiline-pattern`  
Wajib: Tidak  
Opsi ini mendefinisikan pola mulai multiline yang menggunakan ekspresi reguler. Pesan log terdiri dari baris yang cocok dengan pola dan baris berikut yang tidak cocok dengan pola. Garis yang cocok adalah pembatas antara pesan log.  
Untuk informasi selengkapnya, lihat [awslogs-multiline-pattern](https://docs.docker.com/engine/logging/drivers/awslogs/#awslogs-multiline-pattern).  
Opsi ini diabaikan jika `awslogs-datetime-format` juga dikonfigurasi.  
Anda tidak dapat mengonfigurasi opsi `awslogs-datetime-format` dan `awslogs-multiline-pattern` opsi.  
Pencatatan multibaris melakukan penguraian dan pencocokan ekspresi reguler dari semua pesan log. Ini mungkin berdampak negatif pada performa pencatatan.
Opsi berikut berlaku untuk semua driver log yang didukung.    
`mode`  
Wajib: Tidak  
Nilai yang valid: `non-blocking` \$1 `blocking`  
Opsi ini mendefinisikan mode pengiriman pesan log dari wadah ke driver log yang ditentukan menggunakan`logDriver`. Mode pengiriman yang Anda pilih memengaruhi ketersediaan aplikasi saat aliran log dari kontainer terganggu.  
Jika Anda menggunakan `blocking` mode dan aliran log terputus, panggilan dari kode kontainer untuk menulis ke `stdout` dan `stderr` aliran akan diblokir. Thread logging aplikasi akan diblokir sebagai hasilnya. Hal ini dapat menyebabkan aplikasi menjadi tidak responsif dan menyebabkan kegagalan pemeriksaan kesehatan kontainer.   
Jika Anda menggunakan `non-blocking` mode, log kontainer malah disimpan dalam buffer perantara dalam memori yang dikonfigurasi dengan opsi. `max-buffer-size` Ini mencegah aplikasi menjadi tidak responsif ketika log tidak dapat dikirim. Kami merekomendasikan menggunakan mode ini jika Anda ingin memastikan ketersediaan layanan dan baik-baik saja dengan beberapa kehilangan log. Untuk informasi selengkapnya, lihat [Mencegah kehilangan log dengan mode non-pemblokiran di driver log `awslogs` kontainer](https://aws.amazon.com/blogs/containers/preventing-log-loss-with-non-blocking-mode-in-the-awslogs-container-log-driver/).  
Anda dapat mengatur default `mode` untuk semua kontainer tertentu Wilayah AWS dengan menggunakan setelan `defaultLogDriverMode` akun. Jika Anda tidak menentukan `mode` opsi di `logConfiguration` atau mengonfigurasi pengaturan akun, Amazon ECS akan default ke `non-blocking` mode. Untuk informasi selengkapnya tentang pengaturan akun, lihat[Mode driver log default](ecs-account-settings.md#default-log-driver-mode).  
Saat `non-blocking` mode digunakan, opsi `max-buffer-size` log mengontrol ukuran buffer yang digunakan untuk penyimpanan pesan perantara. Pastikan untuk menentukan ukuran buffer yang memadai berdasarkan aplikasi Anda. Jumlah total memori yang dialokasikan pada tingkat tugas harus lebih besar dari jumlah memori yang dialokasikan untuk semua wadah selain buffer memori driver log.  
Pada 25 Juni 2025, Amazon ECS mengubah mode driver log default dari menjadi `blocking` `non-blocking` memprioritaskan ketersediaan tugas daripada pencatatan. Untuk terus menggunakan `blocking` mode setelah perubahan ini, lakukan salah satu hal berikut:  
+ Tetapkan `mode` opsi dalam definisi kontainer Anda `logConfiguration` sebagai`blocking`.
+ Atur pengaturan `defaultLogDriverMode` akun ke`blocking`.  
`max-buffer-size`  
Wajib: Tidak  
Nilai default: `10 m`  
Saat `non-blocking` mode digunakan, opsi `max-buffer-size` log mengontrol ukuran buffer yang digunakan untuk penyimpanan pesan perantara. Pastikan untuk menentukan ukuran buffer yang memadai berdasarkan aplikasi Anda. Ketika buffer terisi, log lebih lanjut tidak dapat disimpan. Log yang tidak dapat disimpan hilang. 
Untuk merutekan `splunk` log menggunakan router log, Anda perlu menentukan a `splunk-token` dan a`splunk-url`.  
Saat Anda menggunakan router `awsfirelens` log untuk merutekan log ke AWS Partner Network tujuan Layanan AWS atau penyimpanan log dan analitik, Anda dapat mengatur `log-driver-buffer-limit` opsi untuk membatasi jumlah baris log yang di-buffer dalam memori, sebelum dikirim ke wadah router log. Ini dapat membantu menyelesaikan potensi masalah kehilangan log karena throughput yang tinggi dapat mengakibatkan memori habis untuk buffer di dalamnya. Docker Untuk informasi selengkapnya, lihat [Mengkonfigurasi log Amazon ECS untuk throughput tinggi](firelens-docker-buffer-limit.md).  
Opsi lain yang dapat Anda tentukan saat menggunakan `awsfirelens` untuk merutekan log tergantung pada tujuan. Saat mengekspor log ke Amazon Data Firehose, Anda dapat menentukan Wilayah AWS dengan `region` dan nama untuk aliran log. `delivery_stream`  
Saat Anda mengekspor log ke Amazon Kinesis Data Streams, Anda dapat Wilayah AWS menentukan dengan dan `region` nama aliran data dengan. `stream`  
 Saat mengekspor log ke Amazon OpenSearch Service, Anda dapat menentukan opsi seperti`Name`, `Host` (Titik akhir OpenSearch layanan tanpa protokol),,,`Port`,`Index`,`Type`,`Aws_auth`, `Aws_region``Suppress_Type_Name`, dan`tls`.  
Saat mengekspor log ke Amazon S3, Anda dapat menentukan bucket menggunakan opsi. `bucket` Anda juga dapat menentukan`region`,`total_file_size`,`upload_timeout`, dan `use_put_object` sebagai opsi.  
Parameter ini memerlukan API Docker Remote versi 1.19 atau lebih besar pada instans kontainer Anda.  
`secretOptions`  
Tipe: Array objek  
Wajib: Tidak  
Objek yang mewakili rahasia untuk diteruskan ke konfigurasi log. Rahasia yang digunakan dalam konfigurasi log dapat mencakup token otentikasi, sertifikat, atau kunci enkripsi. Untuk informasi selengkapnya, lihat [Meneruskan data sensitif ke wadah Amazon ECS](specifying-sensitive-data.md).    
`name`  
Tipe: String  
Wajib: Ya  
Nilai untuk ditetapkan sebagai variabel lingkungan pada kontainer.  
`valueFrom`  
Tipe: String  
Wajib: Ya  
Secret untuk diekspos ke konfigurasi log kontainer.

```
"logConfiguration": {
	"logDriver": "splunk",
	"options": {
		"splunk-url": "https://cloud.splunk.com:8080",
		"splunk-token": "...",
		"tag": "...",
		...
	},
	"secretOptions": [{
		"name": "splunk-token",
		"valueFrom": "/ecs/logconfig/splunkcred"
	}]
}
```

`firelensConfiguration`  
Jenis: [FirelensConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_FirelensConfiguration.html)Objek  
Wajib: Tidak  
 FireLens Konfigurasi untuk wadah. Digunakan untuk menentukan dan mengonfigurasi router log untuk log kontainer. Untuk informasi selengkapnya, lihat [Kirim log Amazon ECS ke AWS layanan atau AWS Partner](using_firelens.md).  

```
{
    "firelensConfiguration": {
        "type": "fluentd",
        "options": {
            "KeyName": ""
        }
    }
}
```  
`options`  
Tipe: Peta antar string  
Wajib: Tidak  
 key/value Peta opsi untuk digunakan saat mengkonfigurasi router log. Bidang ini opsional dan dapat digunakan untuk menentukan file konfigurasi kustom atau untuk menambahkan metadata tambahan, seperti tugas, ketentuan tugas, klaster, dan detail instans kontainer ke log acara. Jika ditentukan, sintaksis yang digunakan adalah `"options":{"enable-ecs-log-metadata":"true|false","config-file-type:"s3|file","config-file-value":"arn:aws:s3:::amzn-s3-demo-bucket/fluent.conf|filepath"}`. Untuk informasi selengkapnya, lihat [Contoh definisi tugas Amazon ECS: Rute log ke FireLens](firelens-taskdef.md).  
`type`  
Tipe: String  
Wajib: Ya  
Router log yang akan digunakan. Nilai yang valid adalah `fluentd` atau `fluentbit`.

#### Keamanan
<a name="container_definition_security_ec2"></a>

Untuk informasi selengkapnya tentang keamanan kontainer, lihat [praktik terbaik tugas Amazon ECS dan keamanan kontainer](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security-tasks-containers.html).

`credentialSpecs`  
Tipe: Array string  
Wajib: Tidak  
Daftar ARNs di SSM atau Amazon S3 ke file credential spec `CredSpec` () yang mengonfigurasi wadah untuk otentikasi Active Directory. Kami menyarankan Anda menggunakan parameter ini alih-alih`dockerSecurityOptions`. Jumlah maksimum ARNs adalah 1.  
Ada dua format untuk setiap ARN.    
CredentialSpecDomainless:mYarn  
Anda gunakan `credentialspecdomainless:MyARN` untuk `CredSpec` menyediakan bagian tambahan untuk rahasia di Secrets Manager. Anda memberikan kredensyal login ke domain secara rahasia.  
Setiap tugas yang berjalan pada instance kontainer apa pun dapat bergabung dengan domain yang berbeda.  
Anda dapat menggunakan format ini tanpa menggabungkan instance container ke domain.  
Spesifikasi kredensial:mYarn  
Anda gunakan `credentialspec:MyARN` untuk menyediakan `CredSpec` untuk satu domain.  
Anda harus menggabungkan instance penampung ke domain sebelum memulai tugas apa pun yang menggunakan definisi tugas ini.
Dalam kedua format, ganti `MyARN` dengan ARN di SSM atau Amazon S3.  
`credspec`Harus menyediakan ARN di Secrets Manager untuk rahasia yang berisi nama pengguna, kata sandi, dan domain untuk terhubung. Untuk keamanan yang lebih baik, instance tidak digabungkan ke domain untuk otentikasi tanpa domain. Aplikasi lain pada instance tidak dapat menggunakan kredensyal tanpa domain. Anda dapat menggunakan parameter ini untuk menjalankan tugas pada instance yang sama, bahkan tugas harus bergabung dengan domain yang berbeda. Untuk informasi selengkapnya, lihat [Menggunakan g MSAs untuk Kontainer Windows](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/windows-gmsa.html) dan [Menggunakan g MSAs untuk Kontainer Linux](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/linux-gmsa.html).

`privileged`  
Tipe: Boolean  
Wajib: Tidak  
Jika parameter ini betul, kontainer diberikan hak istimewa yang lebih tinggi pada instans kontainer host misalnya (mirip dengan pengguna `root`). Kami merekomendasikan agar tidak menjalankan kontainer dengan`privileged`. Dalam kebanyakan kasus, Anda dapat menentukan hak istimewa yang tepat yang Anda butuhkan dengan menggunakan parameter tertentu alih-alih menggunakan`privileged`.  
Parameter ini memetakan ke `Privileged` dalam perintah docker create-container dan opsi `--privileged` untuk docker run.  
Parameter ini tidak didukung untuk wadah atau tugas Windows menggunakan tipe peluncuran Fargate.
Default-nya adalah `false`.  

```
"privileged": true|false
```

`user`  
Tipe: String  
Wajib: Tidak  
Pengguna yang akan digunakan di dalam kontainer. Parameter ini memetakan ke `User` dalam perintah docker create-container dan opsi `--user` untuk docker run.  
Saat menjalankan tugas yang menggunakan mode `host` jaringan, jangan jalankan kontainer menggunakan pengguna root (UID 0). Sebagai praktik terbaik keamanan, selalu gunakan pengguna non-root.
Anda dapat menentukan `user` dengan menggunakan format berikut. Jika menentukan UID atau GID, Anda harus menentukannya sebagai bilangan bulat positif.  
+ `user`
+ `user:group`
+ `uid`
+ `uid:gid`
+ `user:gid`
+ `uid:group`
Parameter ini tidak didukung untuk kontainer Windows.

```
"user": "string"
```

`dockerSecurityOptions`  
Tipe: Array string  
Nilai yang valid: "no-new-privileges" \$1 “apparmor:profile” \$1 “label:*value*" \$1 “credentialspec:” *CredentialSpecFilePath*  
Wajib: Tidak  
Daftar string untuk menyediakan konfigurasi khusus untuk beberapa sistem keamanan.  
Untuk Linux tugas, parameter ini dapat digunakan untuk mereferensikan label khusus untuk SELinux dan sistem keamanan AppArmor  multi-level.  
Parameter ini dapat digunakan untuk mereferensikan file spesifikasi kredensyal yang mengonfigurasi wadah untuk otentikasi Active Directory. Untuk informasi selengkapnya, lihat [Pelajari cara menggunakan GMSAs untuk wadah Windows EC2 untuk Amazon ECS](windows-gmsa.md) dan [Menggunakan gMSA untuk Linux wadah EC2 di Amazon ECS](linux-gmsa.md).  
Parameter ini memetakan ke `SecurityOpt` dalam perintah docker create-container dan opsi `--security-opt` untuk docker run.  

```
"dockerSecurityOptions": ["string", ...]
```
Agen penampung Amazon ECS yang berjalan pada instance container harus mendaftar dengan variabel `ECS_APPARMOR_CAPABLE=true` lingkungan `ECS_SELINUX_CAPABLE=true` atau sebelum container yang ditempatkan pada instance tersebut dapat menggunakan opsi keamanan ini. Untuk informasi selengkapnya, lihat [Konfigurasi agen kontainer Amazon ECS](ecs-agent-config.md).

#### Batas sumber daya
<a name="container_definition_limits_ec2"></a>

`ulimits`  
Tipe: Array objek  
Wajib: Tidak  
Daftar nilai `ulimit` yang harus ditentukan untuk kontainer. Nilai ini menimpa pengaturan kuota sumber daya default untuk sistem operasi. Parameter ini memetakan ke `Ulimits` dalam perintah docker create-container dan opsi `--ulimit` untuk docker run.  
Parameter ini memerlukan Docker Remote API versi 1.18 atau lebih besar pada instans kontainer Anda.  
Parameter ini tidak didukung untuk kontainer Windows.

```
"ulimits": [
      {
        "name": "core"|"cpu"|"data"|"fsize"|"locks"|"memlock"|"msgqueue"|"nice"|"nofile"|"nproc"|"rss"|"rtprio"|"rttime"|"sigpending"|"stack",
        "softLimit": integer,
        "hardLimit": integer
      }
      ...
    ]
```  
`name`  
Tipe: String  
Nilai yang valid: `"core" | "cpu" | "data" | "fsize" | "locks" | "memlock" | "msgqueue" | "nice" | "nofile" | "nproc" | "rss" | "rtprio" | "rttime" | "sigpending" | "stack"`  
Diperlukan: Ya, kapan `ulimits` digunakan  
`type` dari `ulimit`.  
`hardLimit`  
Jenis: Integer  
Diperlukan: Ya, kapan `ulimits` digunakan  
Batas keras untuk tipe `ulimit`. Nilai dapat ditentukan dalam byte, detik, atau sebagai hitungan, tergantung `type` pada`ulimit`.  
`softLimit`  
Jenis: Integer  
Diperlukan: Ya, kapan `ulimits` digunakan  
Batas lunak untuk tipe `ulimit`. Nilai dapat ditentukan dalam byte, detik, atau sebagai hitungan, tergantung `type` pada`ulimit`.

#### Label docker
<a name="container_definition_labels_ec2"></a>

`dockerLabels`  
Tipe: Peta antar string  
Wajib: Tidak  
 key/value Peta label untuk ditambahkan ke wadah. Parameter ini memetakan ke `Labels` dalam perintah docker create-container dan opsi `--label` untuk docker run.   
Parameter ini memerlukan Docker Remote API versi 1.18 atau lebih besar pada instans kontainer Anda.  

```
"dockerLabels": {"string": "string"
      ...}
```

### Parameter definisi kontainer lainnya
<a name="other_container_definition_params_ec2"></a>

Parameter definisi kontainer berikut dapat digunakan saat mendaftarkan definisi tugas di konsol Amazon ECS dengan menggunakan opsi **Configure via JSON**. Untuk informasi selengkapnya, lihat [Membuat definisi tugas Amazon ECS menggunakan konsol](create-task-definition.md).

**Topics**
+ [

#### Parameter Linux
](#container_definition_linuxparameters_ec2)
+ [

#### Dependensi kontainer
](#container_definition_dependson_ec2)
+ [

#### Waktu habis kontainer
](#container_definition_timeout_ec2)
+ [

#### Kontrol sistem
](#container_definition_systemcontrols_ec2)
+ [

#### Interaktif
](#container_definition_interactive_ec2)
+ [

#### Terminal semu
](#container_definition_pseudoterminal_ec2)

#### Parameter Linux
<a name="container_definition_linuxparameters_ec2"></a>

`linuxParameters`  
Tipe: Objek [LinuxParameters](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LinuxParameters.html)  
Wajib: Tidak  
Linux-opsi spesifik yang diterapkan ke wadah, seperti [KernelCapabilities](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KernelCapabilities.html).  
Parameter ini tidak didukung untuk Windows kontainer.

```
"linuxParameters": {
      "capabilities": {
        "add": ["string", ...],
        "drop": ["string", ...]
        }
      }
```  
`capabilities`  
Tipe: Objek [KernelCapabilities](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KernelCapabilities_ec2.html)  
Wajib: Tidak  
LinuxKemampuan untuk wadah yang ditambahkan ke atau dijatuhkan dari konfigurasi default yang disediakan olehDocker. Untuk informasi lebih lanjut tentang Linux kemampuan ini, lihat halaman manual [kemampuan (7)](http://man7.org/linux/man-pages/man7/capabilities.7.html) Linux.    
`add`  
Tipe: Array string  
Nilai yang valid: `"ALL" | "AUDIT_CONTROL" | "AUDIT_READ" | "AUDIT_WRITE" | "BLOCK_SUSPEND" | "CHOWN" | "DAC_OVERRIDE" | "DAC_READ_SEARCH" | "FOWNER" | "FSETID" | "IPC_LOCK" | "IPC_OWNER" | "KILL" | "LEASE" | "LINUX_IMMUTABLE" | "MAC_ADMIN" | "MAC_OVERRIDE" | "MKNOD" | "NET_ADMIN" | "NET_BIND_SERVICE" | "NET_BROADCAST" | "NET_RAW" | "SETFCAP" | "SETGID" | "SETPCAP" | "SETUID" | "SYS_ADMIN" | "SYS_BOOT" | "SYS_CHROOT" | "SYS_MODULE" | "SYS_NICE" | "SYS_PACCT" | "SYS_PTRACE" | "SYS_RAWIO" | "SYS_RESOURCE" | "SYS_TIME" | "SYS_TTY_CONFIG" | "SYSLOG" | "WAKE_ALARM"`  
Wajib: Tidak  
LinuxKemampuan wadah untuk ditambahkan ke konfigurasi default yang disediakan olehDocker. Parameter ini memetakan ke `CapAdd` dalam perintah docker create-container dan opsi `--cap-add` untuk docker run.  
`add`  
Tipe: Array string  
Nilai yang valid: `"SYS_PTRACE"`  
Wajib: Tidak  
LinuxKemampuan kontainer untuk ditambahkan ke konfigurasi default yang disediakan olehDocker. Parameter ini memetakan ke `CapAdd` dalam perintah docker create-container dan opsi `--cap-add` untuk docker run.  
`drop`  
Tipe: Array string  
Nilai yang valid: `"ALL" | "AUDIT_CONTROL" | "AUDIT_WRITE" | "BLOCK_SUSPEND" | "CHOWN" | "DAC_OVERRIDE" | "DAC_READ_SEARCH" | "FOWNER" | "FSETID" | "IPC_LOCK" | "IPC_OWNER" | "KILL" | "LEASE" | "LINUX_IMMUTABLE" | "MAC_ADMIN" | "MAC_OVERRIDE" | "MKNOD" | "NET_ADMIN" | "NET_BIND_SERVICE" | "NET_BROADCAST" | "NET_RAW" | "SETFCAP" | "SETGID" | "SETPCAP" | "SETUID" | "SYS_ADMIN" | "SYS_BOOT" | "SYS_CHROOT" | "SYS_MODULE" | "SYS_NICE" | "SYS_PACCT" | "SYS_PTRACE" | "SYS_RAWIO" | "SYS_RESOURCE" | "SYS_TIME" | "SYS_TTY_CONFIG" | "SYSLOG" | "WAKE_ALARM"`  
Wajib: Tidak  
LinuxKemampuan untuk wadah untuk menghapus dari konfigurasi default yang disediakan olehDocker. Parameter ini memetakan ke `CapDrop` dalam perintah docker create-container dan opsi `--cap-drop` untuk docker run.  
`devices`  
Perangkat host apa pun yang akan diekspos ke kontainer. Parameter ini memetakan ke `Devices` dalam perintah docker create-container dan opsi `--device` untuk docker run.  
Tipe: Array objek [Perangkat](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Device.html)  
Wajib: Tidak    
`hostPath`  
Jalur untuk perangkat pada instans kontainer host.  
Tipe: String  
Diperlukan: Ya  
`containerPath`  
Jalur di dalam wadah untuk mengekspos perangkat host di.  
Tipe: String  
Wajib: Tidak  
`permissions`  
Izin eksplisit untuk diberikan ke kontainer untuk perangkat. Secara default, kontainer memiliki izin untuk`read`, `write`, dan `mknod` pada perangkat.  
Tipe: Array string  
Nilai yang Valid: `read` \$1 `write` \$1 `mknod`  
`initProcessEnabled`  
Jalankan proses `init` di dalam kontainer yang meneruskan sinyal dan melakukan proses kembali. Parameter ini memetakan ke `--init` opsi untuk docker run.  
Parameter ini memerlukan API Docker Remote versi 1.25 atau lebih besar pada instans kontainer Anda.  
`maxSwap`  
Jumlah total memori tukar (dalam MiB) yang dapat digunakan oleh kontainer. Parameter ini diterjemahkan ke `--memory-swap` opsi untuk docker run di mana nilainya adalah jumlah memori kontainer ditambah nilainya. `maxSwap`  
Jika nilai `maxSwap` sebesar `0` ditentukan, kontainer tidak menggunakan swap. Nilai yang diterima adalah `0` atau bilangan bulat positif. Jika `maxSwap` parameter diabaikan, kontainer menggunakan konfigurasi swap untuk instans kontainer tempatnya berjalan. Nilai `maxSwap` harus ditetapkan untuk parameter `swappiness` yang akan digunakan.  
`sharedMemorySize`  
Nilai untuk ukuran (dalam MiB) volume `/dev/shm`. Parameter ini memetakan ke `--shm-size` opsi untuk docker run.  
Jenis: Integer  
`swappiness`  
Anda dapat menggunakan parameter ini untuk menyetel perilaku pertukaran memori kontainer. `swappiness`Nilai `0` mencegah pertukaran terjadi kecuali diperlukan. `swappiness`Nilai `100` penyebab halaman sering ditukar. Nilai yang diterima adalah bilangan bulat antara `0` dan `100`. Jika Anda tidak menentukan nilai, nilai default `60` digunakan. Selain itu, jika Anda tidak menentukan nilai untuk`maxSwap`, maka parameter ini diabaikan. Parameter ini memetakan ke `--memory-swappiness` opsi untuk docker run.  
Jika Anda menggunakan tugas di Amazon Linux 2023, `swappiness` parameter tidak didukung.  
`tmpfs`  
Jalur kontainer, opsi pemasangan, dan ukuran maksimum (dalam MiB) dudukan. tmpfs Parameter ini memetakan ke `--tmpfs` opsi untuk docker run.  
Tipe: Array objek [Tmpfs](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Tmpfs.html)  
Wajib: Tidak    
`containerPath`  
Jalur file absolut di mana tmpfs volume akan dipasang.  
Tipe: String  
Diperlukan: Ya  
`mountOptions`  
Daftar opsi pemasangan volume tmpfs.  
Tipe: Array string  
Wajib: Tidak  
Nilai yang Valid: `"defaults" | "ro" | "rw" | "suid" | "nosuid" | "dev" | "nodev" | "exec" | "noexec" | "sync" | "async" | "dirsync" | "remount" | "mand" | "nomand" | "atime" | "noatime" | "diratime" | "nodiratime" | "bind" | "rbind" | "unbindable" | "runbindable" | "private" | "rprivate" | "shared" | "rshared" | "slave" | "rslave" | "relatime" | "norelatime" | "strictatime" | "nostrictatime" | "mode" | "uid" | "gid" | "nr_inodes" | "nr_blocks" | "mpol"`  
`size`  
Ukuran maksimum (dalam MiB) volume. tmpfs  
Jenis: Integer  
Wajib: Ya

#### Dependensi kontainer
<a name="container_definition_dependson_ec2"></a>

`dependsOn`  
Tipe: Array objek [ContainerDependency](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDependency.html)  
Wajib: Tidak  
Dependensi yang ditentukan untuk pemulaian dan penonaktifan kontainer. Kontainer dapat berisi beberapa dependensi. Ketika dependensi ditentukan untuk memulai kontainer, maka akan dibalik jika ingin menonaktifkan kontainer. Misalnya, lihat [Dependensi kontainer](example_task_definitions.md#example_task_definition-containerdependency).  
Jika kontainer tidak memenuhi batasan ketergantungan atau waktu habis sebelum memenuhi batasan, Amazon ECS tidak memajukan kontainer dependen ke status berikutnya.
Instance memerlukan setidaknya versi `1.26.0` agen kontainer untuk mengaktifkan dependensi kontainer. Namun, kami menyarankan untuk menggunakan versi agen kontainer terbaru. Untuk informasi tentang memeriksa versi agen Anda dan memperbarui ke versi terbaru, lihat [Memperbarui agen kontainer Amazon ECS](ecs-agent-update.md). Jika Anda menggunakan Amazon Linux AMI Amazon ECS yang dioptimalkan Amazon, instans Anda memerlukan setidaknya `1.26.0-1` versi paket. `ecs-init` Jika instance penampung Anda diluncurkan dari versi `20190301` atau yang lebih baru, instance tersebut berisi versi yang diperlukan dari agen penampung dan`ecs-init`. Untuk informasi selengkapnya, lihat [Linux Amazon ECS yang dioptimalkan AMIs](ecs-optimized_AMI.md).  

```
"dependsOn": [
    {
        "containerName": "string",
        "condition": "string"
    }
]
```  
`containerName`  
Tipe: String  
Wajib: Ya  
Nama kontainer yang harus memenuhi syarat yang ditentukan.  
`condition`  
Tipe: String  
Wajib: Ya  
Syarat dependensi kontainer. Berikut ini adalah syarat yang tersedia dan perilakunya:  
+ `START`Kondisi ini meniru perilaku link dan volume hari ini. Kondisi memvalidasi bahwa kontainer dependen dimulai sebelum mengizinkan kontainer lain untuk memulai.
+ `COMPLETE`— Kondisi ini memvalidasi bahwa kontainer dependen berjalan hingga selesai (keluar) sebelum mengizinkan kontainer lain untuk memulai. Ini dapat berguna untuk wadah non-esensial yang menjalankan skrip dan kemudian keluar. Kondisi ini tidak dapat diatur pada kontainer penting.
+ `SUCCESS`— Kondisi ini sama dengan`COMPLETE`, tetapi juga mengharuskan wadah keluar dengan `zero` status. Kondisi ini tidak dapat diatur pada kontainer penting.
+ `HEALTHY`- Kondisi ini memvalidasi bahwa wadah dependen melewati pemeriksaan kesehatan kontainer sebelum mengizinkan wadah lain untuk memulai. Ini mengharuskan wadah dependen memiliki pemeriksaan kesehatan yang dikonfigurasi dalam definisi tugas. Syarat ini dikonfirmasi hanya pada memulai tugas.

#### Waktu habis kontainer
<a name="container_definition_timeout_ec2"></a>

`startTimeout`  
Tipe: Integer  
Wajib: Tidak  
Nilai contoh: `120`  
Durasi waktu (dalam detik) untuk menunggu sebelum menyerah pada penyelesaian dependensi untuk kontainer.  
Misalnya, Anda menentukan dua kontainer dalam ketentuan tugas dengan `containerA` yang memiliki dependensi untuk `containerB` yang mencapai status `COMPLETE`, `SUCCESS`, atau `HEALTHY`. Jika `startTimeout` nilai ditentukan untuk `containerB` dan tidak mencapai status yang diinginkan dalam waktu itu, maka `containerA` tidak dimulai.  
Jika kontainer tidak memenuhi batasan ketergantungan atau waktu habis sebelum memenuhi batasan, Amazon ECS tidak memajukan kontainer dependen ke status berikutnya.
Nilai maksimumnya adalah 120 detik.

`stopTimeout`  
Tipe: Integer  
Wajib: Tidak  
Nilai contoh: `120`  
Durasi waktu (dalam detik) untuk menunggu sebelum kontainer dimatikan secara paksa jika tidak keluar dengan sendirinya secara normal.  
Jika `stopTimeout` parameter tidak ditentukan, nilai yang ditetapkan untuk variabel konfigurasi agen penampung Amazon ECS akan `ECS_CONTAINER_STOP_TIMEOUT` digunakan. Jika `stopTimeout` parameter atau variabel konfigurasi `ECS_CONTAINER_STOP_TIMEOUT` agen tidak disetel, nilai default 30 detik untuk Linux kontainer dan 30 detik pada Windows kontainer digunakan. instans kontainer memerlukan setidaknya agen kontainer versi 1.26.0 untuk mengaktifkan nilai batas waktu penghentian kontainer. Akan tetapi, kami merekomendasikan untuk menggunakan versi agen kontainer terbaru. Untuk informasi tentang cara memeriksa versi agen Anda dan memperbarui ke versi terbaru, lihat[Memperbarui agen kontainer Amazon ECS](ecs-agent-update.md). Jika Anda menggunakan Amazon Linux AMI Amazon yang dioptimalkan ECS Amazon, instans Anda memerlukan setidaknya versi 1.26.0-1 paket. `ecs-init` Jika instance penampung Anda diluncurkan dari versi `20190301` atau yang lebih baru, instance tersebut berisi versi yang diperlukan dari agen penampung dan`ecs-init`. Untuk informasi selengkapnya, lihat [Linux Amazon ECS yang dioptimalkan AMIs](ecs-optimized_AMI.md).

#### Kontrol sistem
<a name="container_definition_systemcontrols_ec2"></a>

`systemControls`  
Tipe: Objek [SystemControl](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_SystemControl.html)  
Wajib: Tidak  
Daftar parameter kernel namespace untuk diatur dalam wadah. Parameter ini memetakan ke `Sysctls` dalam perintah docker create-container dan opsi untuk docker run. `--sysctl` Misalnya, Anda dapat mengonfigurasi `net.ipv4.tcp_keepalive_time` pengaturan untuk mempertahankan koneksi yang lebih lama.  
Kami tidak menyarankan Anda menentukan `systemControls` parameter terkait jaringan untuk beberapa kontainer dalam satu tugas yang juga menggunakan mode `awsvpc` atau `host` jaringan. Melakukan hal ini memiliki kelemahan sebagai berikut:  
+ Untuk tugas yang menggunakan mode jaringan `awsvpc`, jika Anda mengatur `systemControls` untuk kontainer apa pun, maka akan berlaku untuk semua kontainer dalam tugas. Jika Anda menyetel berbeda `systemControls` untuk beberapa kontainer dalam satu tugas, penampung yang dimulai terakhir menentukan mana yang `systemControls` berlaku.
+ Untuk tugas yang menggunakan mode `host` jaringan, namespace jaringan `systemControls` tidak didukung.
Jika Anda menyetel namespace sumber daya IPC untuk digunakan untuk kontainer dalam tugas, kondisi berikut berlaku untuk kontrol sistem Anda. Untuk informasi selengkapnya, lihat [Mode IPC](task_definition_parameters.md#task_definition_ipcmode).  
+ Untuk tugas yang menggunakan mode `host` IPC, namespace `systemControls` IPC tidak didukung.
+ Untuk tugas yang menggunakan mode `task` IPC, `systemControls` nilai namespace IPC berlaku untuk semua kontainer dalam tugas.
Parameter ini tidak didukung untuk kontainer Windows.

```
"systemControls": [
    {
         "namespace":"string",
         "value":"string"
    }
]
```  
`namespace`  
Tipe: String  
Wajib: Tidak  
Parameter kernel namespace untuk menetapkan untuk. `value`  
Nilai namespace IPC yang valid:`"kernel.msgmax" | "kernel.msgmnb" | "kernel.msgmni" | "kernel.sem" | "kernel.shmall" | "kernel.shmmax" | "kernel.shmmni" | "kernel.shm_rmid_forced"`, dan `Sysctls` itu dimulai dengan `"fs.mqueue.*"`  
Nilai namespace jaringan yang valid: `Sysctls` yang dimulai dengan `"net.*"`  
`value`  
Tipe: String  
Wajib: Tidak  
Nilai untuk parameter kernel namespace yang ditentukan dalam. `namespace`

#### Interaktif
<a name="container_definition_interactive_ec2"></a>

`interactive`  
Tipe: Boolean  
Wajib: Tidak  
Ketika parameter ini`true`, Anda dapat menerapkan aplikasi kontainer yang memerlukan `stdin` atau `tty` dialokasikan. Parameter ini memetakan ke `OpenStdin` dalam perintah docker create-container dan opsi `--interactive` untuk docker run.  
Nilai default-nya `false`.

#### Terminal semu
<a name="container_definition_pseudoterminal_ec2"></a>

`pseudoTerminal`  
Tipe: Boolean  
Wajib: Tidak  
Jika parameter ini `true`, TTY dialokasikan. Parameter ini memetakan ke `Tty` dalam perintah docker create-container dan opsi `--tty` untuk docker run.  
Nilai default-nya `false`.

## Nama akselerator Elastic Inference (usang)
<a name="elastic-Inference-accelerator_ec2"></a>

Persyaratan sumber daya akselerator Elastic Inference untuk definisi tugas Anda. 

**catatan**  
Amazon Elastic Inference (EI) sudah tidak tersedia bagi pelanggan.

Parameter berikut diizinkan dalam definisi tugas:

`deviceName`  
Tipe: String  
Diperlukan: Ya  
Nama perangkat akselerator Elastic Inference. Itu juga `deviceName` harus direferensikan dalam definisi kontainer lihat[Elastic Inference accelerator](task_definition_parameters.md#ContainerDefinition-elastic-inference).

`deviceType`  
Tipe: String  
Diperlukan: Ya  
Akselerator Elastic Inference untuk digunakan.

## Batasan penempatan tugas
<a name="constraints_ec2"></a>

Saat mendaftarkan definisi tugas, Anda dapat memberikan batasan penempatan tugas yang menyesuaikan cara Amazon ECS menempatkan tugas.

Anda dapat menggunakan batasan untuk menempatkan tugas berdasarkan Availability Zone, tipe instans, atau atribut kustom. Untuk informasi selengkapnya, lihat [Menentukan Instans Kontainer Mana yang Digunakan Amazon ECS untuk Tugas](task-placement-constraints.md).

Parameter berikut diizinkan dalam ketentuan kontainer:

`expression`  
Tipe: String  
Wajib: Tidak  
Ekspresi bahasa kueri klaster yang akan diterapkan pada batasan. Untuk informasi selengkapnya, lihat [Buat ekspresi untuk menentukan instance kontainer untuk tugas Amazon ECS](cluster-query-language.md).

`type`  
Tipe: String  
Diperlukan: Ya  
Tipe batasan. Gunakan `memberOf` untuk membatasi pemilihan ke grup kandidat yang valid.

## Konfigurasi proxy
<a name="proxyConfiguration_ec2"></a>

`proxyConfiguration`  
Tipe: Objek [ProxyConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ProxyConfiguration.html)  
Wajib: Tidak  
Detail konfigurasi untuk proxy App Mesh.  
Untuk tugas yang menggunakan EC2, instance container memerlukan setidaknya versi 1.26.0 dari agen kontainer dan setidaknya versi 1.26.0-1 paket untuk mengaktifkan konfigurasi proxy. `ecs-init` Jika instans kontainer Anda diluncurkan dari AMI yang dioptimalkan Amazon ECS versi `20190301` atau yang lebih baru, maka instans kontainer mengandung versi agen kontainer dan `ecs-init` yang diperlukan. Untuk informasi selengkapnya, lihat [Linux Amazon ECS yang dioptimalkan AMIs](ecs-optimized_AMI.md).  
Parameter ini tidak didukung untuk kontainer Windows.

```
"proxyConfiguration": {
    "type": "APPMESH",
    "containerName": "string",
    "properties": [
        {
           "name": "string",
           "value": "string"
        }
    ]
}
```  
`type`  
Tipe: String  
Nilai nilai: `APPMESH`  
Wajib: Tidak  
Tipe proxy. Satu-satunya nilai yang didukung adalah `APPMESH`.  
`containerName`  
Tipe: String  
Diperlukan: Ya  
Nama wadah yang berfungsi sebagai proxy App Mesh.  
`properties`  
Tipe: Array objek [KeyValuePair](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KeyValuePair.html)  
Wajib: Tidak  
Set parameter konfigurasi jaringan berfungsi untuk menyediakan plugin Container Network Interface (CNI), yang ditetapkan sebagai pasangan nilai kunci.  
+ `IgnoredUID`— (Wajib) ID pengguna (UID) dari wadah proxy sebagaimana didefinisikan oleh `user` parameter dalam definisi kontainer. Ini digunakan untuk memastikan bahwa proksi mengabaikan lalu lintasnya sendiri. Jika `IgnoredGID` ditentukan, bidang ini tidak boleh kosong.
+ `IgnoredGID`— (Wajib) ID grup (GID) dari wadah proxy sebagaimana didefinisikan oleh `user` parameter dalam definisi kontainer. Ini digunakan untuk memastikan bahwa proksi mengabaikan lalu lintasnya sendiri. Jika `IgnoredUID` ditentukan, bidang ini tidak boleh kosong.
+ `AppPorts`— (Wajib) Daftar port yang digunakan aplikasi. Lalu lintas jaringan ke port ini diteruskan ke `ProxyIngressPort` dan `ProxyEgressPort`.
+ `ProxyIngressPort`— (Wajib) Menentukan port yang lalu lintas masuk ke `AppPorts` diarahkan.
+ `ProxyEgressPort`— (Wajib) Menentukan port yang lalu lintas keluar dari `AppPorts` diarahkan ke.
+ `EgressIgnoredPorts`— (Wajib) Lalu lintas keluar yang menuju ke port yang ditentukan ini diabaikan dan tidak dialihkan ke port. `ProxyEgressPort` Ia bisa berupa daftar kosong.
+ `EgressIgnoredIPs`— (Wajib) Lalu lintas keluar yang menuju ke alamat IP yang ditentukan ini diabaikan dan tidak dialihkan ke. `ProxyEgressPort` Ia bisa berupa daftar kosong.  
`name`  
Tipe: String  
Wajib: Tidak  
Nama pasangan nilai kunci.  
`value`  
Tipe: String  
Wajib: Tidak  
Nilai pasangan nilai kunci.

## volume
<a name="volumes_ec2"></a>

Saat Anda mendaftarkan definisi tugas, Anda dapat secara opsional menentukan daftar volume yang akan diteruskan ke Docker daemon pada instance container, yang kemudian tersedia untuk diakses oleh container lain pada instance container yang sama.

Berikut ini adalah jenis volume data yang dapat digunakan:
+ Volume Amazon EBS - Menyediakan penyimpanan blok yang hemat biaya, tahan lama, dan berkinerja tinggi untuk beban kerja kontainer intensif data. Anda dapat melampirkan 1 volume Amazon EBS per tugas Amazon ECS saat menjalankan tugas mandiri, atau saat membuat atau memperbarui layanan. Volume Amazon EBS didukung untuk tugas-tugas Linux. Untuk informasi selengkapnya, lihat [Gunakan volume Amazon EBS dengan Amazon ECS](ebs-volumes.md).
+ Volume Amazon EFS - Menyediakan penyimpanan file yang sederhana, dapat diskalakan, dan persisten untuk digunakan dengan tugas Amazon ECS Anda. Kapasitas penyimpanan Amazon EFS bersifat elastis. Hal ini bertumbuh dan menyusut secara otomatis seiring Anda menambahkan dan menghapus file. Aplikasi Anda dapat memiliki penyimpanan yang mereka butuhkan dan ketika mereka membutuhkannya. Volume Amazon EFS didukung. Untuk informasi selengkapnya, lihat [Gunakan volume Amazon EFS dengan Amazon ECS](efs-volumes.md).
+ FSx untuk volume Windows File Server - Menyediakan server file Microsoft Windows yang dikelola sepenuhnya. Server file ini didukung oleh sistem file Windows. Saat menggunakan FSx untuk Windows File Server bersama dengan Amazon ECS, Anda dapat menyediakan tugas Windows Anda dengan penyimpanan file persisten, terdistribusi, bersama, dan statis. Untuk informasi selengkapnya, lihat [Gunakan FSx untuk volume Server File Windows dengan Amazon ECS](wfsx-volumes.md).

  Wadah Windows di Fargate tidak mendukung opsi ini.
+ Volume Docker — Volume yang dikelola Docker yang dibuat di bawah instans `/var/lib/docker/volumes` Amazon EC2 host. Driver volume Docker (juga disebut sebagai plugin) digunakan untuk mengintegrasikan volume dengan sistem penyimpanan eksternal, seperti Amazon EBS. Built-in driver volume `local` atau driver volume pihak ke tiga dapat digunakan. Volume Docker hanya didukung saat menjalankan tugas di instans Amazon EC2. Kontainer Windows hanya mendukung penggunaan driver `local`. Untuk menggunakan volume Docker, tentukan `dockerVolumeConfiguration` dalam ketentuan tugas Anda.
+ Bind mount — File atau direktori pada mesin host yang dipasang ke dalam wadah. Volume host bind mount didukung. Untuk menggunakan volume host bind mount, tentukan `sourcePath` nilai `host` dan opsional dalam definisi tugas Anda.

Untuk informasi selengkapnya, lihat [Opsi penyimpanan untuk tugas Amazon ECS](using_data_volumes.md).

Parameter berikut diizinkan dalam ketentuan kontainer.

`name`  
Tipe: String  
Wajib: Tidak  
Nama volume. Hingga 255 huruf (huruf besar dan kecil), angka, tanda hubung (), dan garis bawah (`-`) diperbolehkan. `_` Nama ini direferensikan dalam `sourceVolume` parameter `mountPoints` objek definisi kontainer.

`host`  
Wajib: Tidak  
`host`Parameter ini digunakan untuk mengikat siklus hidup bind mount ke instans Amazon EC2 host, bukan tugas, dan tempat penyimpanannya. Jika `host` parameternya kosong, maka daemon Docker menetapkan jalur host untuk volume data Anda, tetapi data tidak dijamin akan bertahan setelah wadah yang terkait dengannya berhenti berjalan.  
Kontainer Windows dapat memasang seluruh direktori pada drive yang sama dengan `$env:ProgramData`.  
`sourcePath`Parameter hanya didukung saat menggunakan tugas yang dihosting di instans Amazon EC2 atau Instans Terkelola Amazon ECS.  
`sourcePath`  
Tipe: String  
Wajib: Tidak  
Saat `host` parameter digunakan, tentukan a `sourcePath` untuk mendeklarasikan jalur pada instans Amazon EC2 host yang disajikan ke wadah. Jika parameter ini kosong, daemon Docker akan menetapkan jalur host untuk Anda. Jika `host` parameter berisi lokasi `sourcePath` file, maka volume data tetap ada di lokasi yang ditentukan pada instans Amazon EC2 host hingga Anda menghapusnya secara manual. Jika `sourcePath` nilai tidak ada pada instans Amazon EC2 host, daemon Docker membuatnya. Jika lokasinya memang ada, konten dari folder jalur sumber diekspor.

`configuredAtLaunch`  
Tipe: Boolean  
Wajib: Tidak  
Menentukan apakah volume dikonfigurasi saat peluncuran. Saat disetel ke`true`, Anda dapat mengonfigurasi volume saat menjalankan tugas mandiri, atau saat membuat atau memperbarui layanan. Saat disetel ke`true`, Anda tidak akan dapat memberikan konfigurasi volume lain dalam definisi tugas. Parameter ini harus diatur `true` untuk mengonfigurasi volume Amazon EBS untuk lampiran ke tugas. Menyetel `configuredAtLaunch` ke `true` dan menunda konfigurasi volume ke fase peluncuran memungkinkan Anda membuat definisi tugas yang tidak dibatasi untuk jenis volume atau pengaturan volume tertentu. Melakukan hal ini membuat definisi tugas Anda dapat digunakan kembali di seluruh lingkungan eksekusi yang berbeda. Untuk informasi selengkapnya, lihat [volume Amazon EBS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ebs-volumes.html).

`dockerVolumeConfiguration`  
Jenis: [DockerVolumeConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DockerVolumeConfiguration.html)Objek  
Wajib: Tidak  
Parameter ini ditentukan saat menggunakan volume Docker. Volume Docker hanya didukung saat menjalankan tugas pada instans EC2. Kontainer Windows hanya mendukung penggunaan driver `local`. Untuk menggunakan pemasangan mengikat, tentukan `host` saja.    
`scope`  
Tipe: String  
Nilai Valid: `task` \$1 `shared`  
Wajib: Tidak  
Cakupan untuk volume Docker, yang menentukan siklus hidupnya. Volume Docker yang tercakup ke `task` secara otomatis disediakan saat tugas dimulai dan dihancurkan saat tugas berhenti. Volume Docker yang tercakup sebagai `shared` dipertahankan setelah tugas berhenti.  
`autoprovision`  
Jenis: Boolean  
Nilai default: `false`  
Wajib: Tidak  
Jika nilai ini`true`, volume Docker dibuat jika belum ada. Bidang ini hanya digunakan jika `scope` ada`shared`. Jika `scope` ya`task`, maka parameter ini harus dihilangkan.  
`driver`  
Tipe: String  
Wajib: Tidak  
Driver volume Docker yang digunakan. Nilai driver harus sesuai dengan nama driver yang disediakan oleh Docker karena nama ini digunakan untuk penempatan tugas. Jika driver diinstal dengan menggunakan CLI plugin Docker, `docker plugin ls` gunakan untuk mengambil nama driver dari instance container Anda. Jika driver diinstal dengan menggunakan metode lain, gunakan penemuan plugin Docker untuk mengambil nama driver.  
`driverOpts`  
Tipe: String  
Wajib: Tidak  
Peta opsi khusus driver Docker untuk dilewati. Parameter ini dipetakan ke `DriverOpts` bagian Create a volume dari Docker.  
`labels`  
Tipe: String  
Wajib: Tidak  
Metadata kustom untuk ditambahkan ke volume Docker.

`efsVolumeConfiguration`  
Jenis: [EFSVolumeKonfigurasi](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_EFSVolumeConfiguration.html) Objek  
Wajib: Tidak  
Parameter ini ditentukan saat menggunakan volume Amazon EFS.    
`fileSystemId`  
Tipe: String  
Diperlukan: Ya  
ID sistem file Amazon EFS yang akan digunakan.  
`rootDirectory`  
Tipe: String  
Wajib: Tidak  
Direktori dalam sistem file Amazon EFS untuk dipasang sebagai direktori root di dalam host. Jika parameter ini dihilangkan, root volume Amazon EFS akan digunakan. Menentukan `/` memiliki efek yang sama seperti mengabaikan parameter ini.  
Jika titik akses EFS ditentukan dalam`authorizationConfig`, parameter direktori root harus dihilangkan atau disetel ke`/`, yang akan menerapkan jalur yang disetel pada titik akses EFS.  
`transitEncryption`  
Tipe: String  
Nilai yang valid: `ENABLED` \$1 `DISABLED`  
Wajib: Tidak  
Menentukan apakah akan mengaktifkan enkripsi untuk data Amazon EFS dalam perjalanan antara host Amazon ECS dan server Amazon EFS. Jika otorisasi Amazon EFS IAM digunakan, enkripsi transit harus diaktifkan. Jika parameter ini diabaikan, nilai default `DISABLED` akan digunakan. Untuk informasi lebih lanjut, lihat [Pengenkripsian Data Saat Transit](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html) di *Panduan Pengguna Amazon Elastic File System*.  
`transitEncryptionPort`  
Tipe: Integer  
Wajib: Tidak  
Port yang akan digunakan saat mengirim data terenkripsi antara host Amazon ECS dan server Amazon EFS. Jika Anda tidak menentukan port enkripsi transit, tugas akan menggunakan strategi pemilihan port yang digunakan oleh helper mount Amazon EFS. Untuk informasi lebih lanjut, lihat [Pembantu Pemasangan EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-mount-helper.html) di *Panduan Pengguna Amazon Elastic File System*.  
`authorizationConfig`  
Jenis: [EFSAuthorizationConfig Object](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_EFSAuthorizationConfig.html)  
Wajib: Tidak  
Detail konfigurasi otorisasi untuk sistem file Amazon EFS.    
`accessPointId`  
Tipe: String  
Wajib: Tidak  
ID titik akses yang akan digunakan. Jika titik akses ditentukan, nilai direktori root di dalam `efsVolumeConfiguration` harus dihilangkan atau disetel ke`/`, yang akan memberlakukan jalur yang ditetapkan pada titik akses EFS. Jika titik akses digunakan, enkripsi transit harus diaktifkan di `EFSVolumeConfiguration`. Untuk informasi lebih lanjut, lihat [Bekerja dengan Titik Akses Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html) dalam *Panduan Pengguna Amazon Elastic File System*.  
`iam`  
Tipe: String  
Nilai yang valid: `ENABLED` \$1 `DISABLED`  
Wajib: Tidak  
Menentukan apakah akan menggunakan peran IAM tugas Amazon ECS yang ditentukan dalam definisi tugas saat memasang sistem file Amazon EFS. Jika diaktifkan, enkripsi transit harus diaktifkan di `EFSVolumeConfiguration`. Jika Anda menghilangkan parameter ini, nilai default `DISABLED` akan digunakan. Untuk informasi selengkapnya, lihat [IAM Role pada Tugas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html).

`FSxWindowsFileServerVolumeConfiguration`  
Jenis: [FSxWindowsFileServerVolumeConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_FSxWindowsFileServerVolumeConfiguration.html)Objek  
Wajib: Ya  
Parameter ini ditentukan saat Anda menggunakan sistem file [Amazon FSx untuk Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) untuk penyimpanan tugas.    
`fileSystemId`  
Tipe: String  
Diperlukan: Ya  
ID sistem file Windows File Server untuk digunakan. FSx   
`rootDirectory`  
Tipe: String  
Diperlukan: Ya  
Direktori dalam sistem file FSx untuk Windows File Server untuk dipasang sebagai direktori root di dalam host.  
`authorizationConfig`    
`credentialsParameter`  
Tipe: String  
Diperlukan: Ya  
Opsi kredensi otorisasi.  

**pilihan:**
+ Nama Sumber Daya Amazon (ARN) dari sebuah [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)rahasia.
+ ARN dari suatu [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/integration-ps-secretsmanager.html)parameter.  
`domain`  
Tipe: String  
Diperlukan: Ya  
Nama domain yang sepenuhnya memenuhi syarat yang dihosting oleh direktori [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html)(AWS Managed Microsoft AD) atau Direktori Aktif EC2 yang dihosting sendiri.

## Tag
<a name="tags_ec2"></a>

Ketika mendaftarkan ketentuan tugas, Anda secara opsional dapat menentukan tanda metadata yang diterapkan ke ketentuan tugas. Tanda membantu mengategorikan dan mengatur ketentuan tugas Anda. Setiap tanda terdiri dari kunci dan nilai opsional. Anda mendefinisikan keduanya. Untuk informasi selengkapnya, lihat [Menandai sumber daya Amazon ECS](ecs-using-tags.md).

**penting**  
Jangan menambahkan informasi identitas pribadi atau informasi rahasia atau sensitif lainnya dalam tag. Tag dapat diakses oleh banyak AWS layanan, termasuk penagihan. Tag tidak dimaksudkan untuk digunakan untuk data pribadi atau sensitif.

Parameter berikut diperbolehkan dalam objek tanda.

`key`  
Tipe: String  
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  
Wajib: Tidak  
Bagian opsional pasangan nilai kunci yang membentuk tanda. Nilai bertindak sebagai deskriptor dalam kategori tanda (kunci).

## Parameter ketentuan tugas lainnya
<a name="other_task_definition_params_ec2"></a>

Parameter definisi tugas berikut dapat digunakan saat mendaftarkan definisi tugas di konsol Amazon ECS dengan menggunakan opsi **Configure via JSON**. Untuk informasi selengkapnya, lihat [Membuat definisi tugas Amazon ECS menggunakan konsol](create-task-definition.md).

**Topics**
+ [

### Mode IPC
](#task_definition_ipcmode_ec2)
+ [

### Mode PID
](#task_definition_pidmode_ec2)
+ [

### Injeksi kesalahan
](#task_definition_faultInjection_ec2)

### Mode IPC
<a name="task_definition_ipcmode_ec2"></a>

`ipcMode`  
Tipe: String  
Wajib: Tidak  
Namespace sumber daya IPC yang digunakan untuk kontainer dalam tugas. Nilai yang valid adalah `host`, `task`, atau `none`. Jika `host` ditentukan, maka semua kontainer yang berada dalam tugas yang menentukan mode `host` IPC pada instance kontainer yang sama berbagi sumber daya IPC yang sama dengan instans Amazon EC2 host. Jika `task` ditentukan, semua kontainer yang berada dalam tugas yang ditentukan berbagi sumber daya IPC yang sama. Jika `none` ditentukan, maka sumber daya IPC dalam kontainer tugas bersifat privat dan tidak dibagi dengan kontainer lain dalam tugas atau pada instans kontainer. Jika tidak ada nilai yang ditentukan, maka berbagi namespace sumber daya IPC tergantung pada pengaturan daemon Docker pada instans kontainer.  
Jika mode `host` IPC digunakan, ada risiko tinggi eksposur namespace IPC yang tidak diinginkan.  
Jika Anda menyetel parameter kernel namespace yang digunakan `systemControls` untuk kontainer dalam tugas, hal berikut ini berlaku untuk namespace sumber daya IPC Anda.   
+ Untuk tugas yang menggunakan mode `host` IPC, namespace IPC yang terkait `systemControls` tidak didukung.
+ Untuk tugas yang menggunakan mode `task` IPC, `systemControls` yang berhubungan dengan namespace IPC berlaku untuk semua kontainer dalam tugas.

### Mode PID
<a name="task_definition_pidmode_ec2"></a>

`pidMode`  
Tipe: String  
Nilai Valid: `host` \$1 `task`  
Wajib: Tidak  
Namspace proses yang akan digunakan untuk kontainer dalam tugas. Nilai yang valid adalah `host` atau `task`. Misalnya, pemantauan sidecar mungkin `pidMode` perlu mengakses informasi tentang kontainer lain yang berjalan dalam tugas yang sama.  
Jika `host` ditentukan, semua kontainer dalam tugas yang menentukan mode `host` PID pada instance container yang sama berbagi namespace proses yang sama dengan instans Amazon EC2 host.  
Jika `task` ditentukan, semua kontainer dalam tugas tertentu berbagi namespace proses yang sama.  
Jika tidak ada nilai yang ditentukan, defaultnya adalah namespace pribadi untuk setiap kontainer.   
Jika mode `host` PID digunakan, ada risiko tinggi eksposur namespace proses yang tidak diinginkan.

**catatan**  
Parameter ini tidak didukung untuk kontainer Windows.

### Injeksi kesalahan
<a name="task_definition_faultInjection_ec2"></a>

`enableFaultInjection`  
Jenis: Boolean  
Nilai Valid: `true` \$1 `false`  
Wajib: Tidak  
Jika parameter ini disetel ke`true`, dalam muatan tugas, Amazon ECS menerima permintaan injeksi kesalahan dari wadah tugas. Secara default, parameter ini diatur ke`false`.

# Templat definisi tugas Amazon ECS
<a name="task-definition-template"></a>

Templat ketentuan tugas kosong ditampilkan sebagai berikut. Anda dapat menggunakan template ini untuk membuat definisi tugas Anda, yang kemudian dapat ditempelkan ke area input JSON konsol atau disimpan ke file dan digunakan dengan opsi. AWS CLI `--cli-input-json` Untuk informasi selengkapnya, lihat [Parameter definisi tugas Amazon ECS untuk Fargate](task_definition_parameters.md).

**Templat EC2**

```
{
  "family": "",
  "taskRoleArn": "",
  "executionRoleArn": "",
  "networkMode": "none",
  "containerDefinitions": [
    {
      "name": "",
      "image": "",
      "repositoryCredentials": {
        "credentialsParameter": ""
      },
      "cpu": 0,
      "memory": 0,
      "memoryReservation": 0,
      "links": [""],
      "portMappings": [
        {
          "containerPort": 0,
          "hostPort": 0,
          "protocol": "tcp"
        }
      ],
      "restartPolicy": {
        "enabled": true,
        "ignoredExitCodes": [0],
        "restartAttemptPeriod": 180
      },
      "essential": true,
      "entryPoint": [""],
      "command": [""],
      "environment": [
        {
          "name": "",
          "value": ""
        }
      ],
      "environmentFiles": [
        {
          "value": "",
          "type": "s3"
        }
      ],
      "mountPoints": [
        {
          "sourceVolume": "",
          "containerPath": "",
          "readOnly": true
        }
      ],
      "volumesFrom": [
        {
          "sourceContainer": "",
          "readOnly": true
        }
      ],
      "linuxParameters": {
        "capabilities": {
          "add": [""],
          "drop": [""]
        },
        "devices": [
          {
            "hostPath": "",
            "containerPath": "",
            "permissions": ["read"]
          }
        ],
        "initProcessEnabled": true,
        "sharedMemorySize": 0,
        "tmpfs": [
          {
            "containerPath": "",
            "size": 0,
            "mountOptions": [""]
          }
        ],
        "maxSwap": 0,
        "swappiness": 0
      },
      "secrets": [
        {
          "name": "",
          "valueFrom": ""
        }
      ],
      "dependsOn": [
        {
          "containerName": "",
          "condition": "COMPLETE"
        }
      ],
      "startTimeout": 0,
      "stopTimeout": 0,
      "hostname": "",
      "user": "",
      "workingDirectory": "",
      "disableNetworking": true,
      "privileged": true,
      "readonlyRootFilesystem": true,
      "dnsServers": [""],
      "dnsSearchDomains": [""],
      "extraHosts": [
        {
          "hostname": "",
          "ipAddress": ""
        }
      ],
      "dockerSecurityOptions": [""],
      "interactive": true,
      "pseudoTerminal": true,
      "dockerLabels": {
        "KeyName": ""
      },
      "ulimits": [
        {
          "name": "nofile",
          "softLimit": 0,
          "hardLimit": 0
        }
      ],
      "logConfiguration": {
        "logDriver": "splunk",
        "options": {
          "KeyName": ""
        },
        "secretOptions": [
          {
            "name": "",
            "valueFrom": ""
          }
        ]
      },
      "healthCheck": {
        "command": [""],
        "interval": 0,
        "timeout": 0,
        "retries": 0,
        "startPeriod": 0
      },
      "systemControls": [
        {
          "namespace": "",
          "value": ""
        }
      ],
      "resourceRequirements": [
        {
          "value": "",
          "type": "InferenceAccelerator"
        }
      ],
      "firelensConfiguration": {
        "type": "fluentbit",
        "options": {
          "KeyName": ""
        }
      }
    }
  ],
  "volumes": [
    {
      "name": "",
      "host": {
        "sourcePath": ""
      },
      "configuredAtLaunch": true,
      "dockerVolumeConfiguration": {
        "scope": "shared",
        "autoprovision": true,
        "driver": "",
        "driverOpts": {
          "KeyName": ""
        },
        "labels": {
          "KeyName": ""
        }
      },
      "efsVolumeConfiguration": {
        "fileSystemId": "",
        "rootDirectory": "",
        "transitEncryption": "DISABLED",
        "transitEncryptionPort": 0,
        "authorizationConfig": {
          "accessPointId": "",
          "iam": "ENABLED"
        }
      },
      "fsxWindowsFileServerVolumeConfiguration": {
        "fileSystemId": "",
        "rootDirectory": "",
        "authorizationConfig": {
          "credentialsParameter": "",
          "domain": ""
        }
      }
    }
  ],
  "placementConstraints": [
    {
      "type": "memberOf",
      "expression": ""
    }
  ],
  "requiresCompatibilities": ["EC2"],
  "cpu": "",
  "memory": "",
  "tags": [
    {
      "key": "",
      "value": ""
    }
  ],
  "pidMode": "task",
  "ipcMode": "task",
  "proxyConfiguration": {
    "type": "APPMESH",
    "containerName": "",
    "properties": [
      {
        "name": "",
        "value": ""
      }
    ]
  },
  "inferenceAccelerators": [
    {
      "deviceName": "",
      "deviceType": ""
    }
  ],
  "ephemeralStorage": {
    "sizeInGiB": 0
  },
  "runtimePlatform": {
    "cpuArchitecture": "X86_64",
    "operatingSystemFamily": "WINDOWS_SERVER_20H2_CORE"
  }
}
```

**Templat Fargate**

**penting**  
 Untuk Fargate, Anda harus menyertakan `operatingSystemFamily` parameter dengan salah satu nilai berikut:  
`LINUX`
`WINDOWS_SERVER_2019_FULL`
`WINDOWS_SERVER_2019_CORE`
`WINDOWS_SERVER_2022_FULL`
`WINDOWS_SERVER_2022_CORE`

```
{
    "family": "",
    "runtimePlatform": {"operatingSystemFamily": ""},
    "taskRoleArn": "",
    "executionRoleArn": "",
    "networkMode": "awsvpc",
    "platformFamily": "",
    "containerDefinitions": [
        {
            "name": "",
            "image": "",
            "repositoryCredentials": {"credentialsParameter": ""},
            "cpu": 0,
            "memory": 0,
            "memoryReservation": 0,
            "links": [""],
            "portMappings": [
                {
                    "containerPort": 0,
                    "hostPort": 0,
                    "protocol": "tcp"
                }
            ],
            "essential": true,
            "entryPoint": [""],
            "command": [""],
            "environment": [
                {
                    "name": "",
                    "value": ""
                }
            ],
            "environmentFiles": [
                {
                    "value": "",
                    "type": "s3"
                }
            ],
            "mountPoints": [
                {
                    "sourceVolume": "",
                    "containerPath": "",
                    "readOnly": true
                }
            ],
            "volumesFrom": [
                {
                    "sourceContainer": "",
                    "readOnly": true
                }
            ],
            "linuxParameters": {
                "capabilities": {
                    "add": [""],
                    "drop": [""]
                },
                "devices": [
                    {
                        "hostPath": "",
                        "containerPath": "",
                        "permissions": ["read"]
                    }
                ],
                "initProcessEnabled": true,
                "sharedMemorySize": 0,
                "tmpfs": [
                    {
                        "containerPath": "",
                        "size": 0,
                        "mountOptions": [""]
                    }
                ],
                "maxSwap": 0,
                "swappiness": 0
            },
            "secrets": [
                {
                    "name": "",
                    "valueFrom": ""
                }
            ],
            "dependsOn": [
                {
                    "containerName": "",
                    "condition": "HEALTHY"
                }
            ],
            "startTimeout": 0,
            "stopTimeout": 0,
            "hostname": "",
            "user": "",
            "workingDirectory": "",
            "disableNetworking": true,
            "privileged": true,
            "readonlyRootFilesystem": true,
            "dnsServers": [""],
            "dnsSearchDomains": [""],
            "extraHosts": [
                {
                    "hostname": "",
                    "ipAddress": ""
                }
            ],
            "dockerSecurityOptions": [""],
            "interactive": true,
            "pseudoTerminal": true,
            "dockerLabels": {"KeyName": ""},
            "ulimits": [
                {
                    "name": "msgqueue",
                    "softLimit": 0,
                    "hardLimit": 0
                }
            ],
            "logConfiguration": {
                "logDriver": "awslogs",
                "options": {"KeyName": ""},
                "secretOptions": [
                    {
                        "name": "",
                        "valueFrom": ""
                    }
                ]
            },
            "healthCheck": {
                "command": [""],
                "interval": 0,
                "timeout": 0,
                "retries": 0,
                "startPeriod": 0
            },
            "systemControls": [
                {
                    "namespace": "",
                    "value": ""
                }
            ],
            "resourceRequirements": [
                {
                    "value": "",
                    "type": "GPU"
                }
            ],
            "firelensConfiguration": {
                "type": "fluentd",
                "options": {"KeyName": ""}
            }
        }
    ],
    "volumes": [
        {
            "name": "",
            "host": {"sourcePath": ""},
            "configuredAtLaunch":true,
            "dockerVolumeConfiguration": {
                "scope": "task",
                "autoprovision": true,
                "driver": "",
                "driverOpts": {"KeyName": ""},
                "labels": {"KeyName": ""}
            },
            "efsVolumeConfiguration": {
                "fileSystemId": "",
                "rootDirectory": "",
                "transitEncryption": "ENABLED",
                "transitEncryptionPort": 0,
                "authorizationConfig": {
                    "accessPointId": "",
                    "iam": "ENABLED"
                }
            }
        }
    ],
    "requiresCompatibilities": ["FARGATE"],
    "cpu": "",
    "memory": "",
    "tags": [
        {
            "key": "",
            "value": ""
        }
    ],
    "ephemeralStorage": {"sizeInGiB": 0},
    "pidMode": "task",
    "ipcMode": "none",
    "proxyConfiguration": {
        "type": "APPMESH",
        "containerName": "",
        "properties": [
            {
                "name": "",
                "value": ""
            }
        ]
    },
    "inferenceAccelerators": [
        {
            "deviceName": "",
            "deviceType": ""
        }
    ]
}
```

Anda dapat membuat template definisi tugas ini menggunakan AWS CLI perintah berikut.

```
aws ecs register-task-definition --generate-cli-skeleton
```

# Contoh definisi tugas Amazon ECS
<a name="example_task_definitions"></a>

Anda dapat menyalin contoh dan cuplikan untuk mulai membuat definisi tugas Anda sendiri. 

Anda dapat menyalin contoh, lalu menempelkannya saat Anda menggunakan opsi **Konfigurasi melalui JSON** di konsol. Pastikan untuk menyesuaikan contoh, seperti menggunakan ID akun Anda. Anda dapat menyertakan cuplikan dalam definisi tugas JSON Anda. Untuk informasi selengkapnya, lihat [Membuat definisi tugas Amazon ECS menggunakan konsol](create-task-definition.md) dan [Parameter definisi tugas Amazon ECS untuk Fargate](task_definition_parameters.md).

Untuk contoh definisi tugas lainnya, lihat [AWS Contoh Definisi Tugas](https://github.com/aws-samples/aws-containers-task-definitions) pada GitHub.

**Topics**
+ [

## Peladen Web
](#example_task_definition-webserver)
+ [

## `splunk`driver log
](#example_task_definition-splunk)
+ [

## `fluentd`driver log
](#example_task_definition-fluentd)
+ [

## `gelf`driver log
](#example_task_definition-gelf)
+ [

## Beban kerja pada instance eksternal
](#ecs-anywhere-runtask)
+ [

## Peran IAM definisi gambar dan tugas Amazon ECR
](#example_task_definition-iam)
+ [

## Entrypoint dengan perintah
](#example_task_definition-ping)
+ [

## Dependensi kontainer
](#example_task_definition-containerdependency)
+ [

## Volume dalam definisi tugas
](#volume_sample_task_defs)
+ [

## Ketentuan tugas sampel Windows
](#windows_sample_task_defs)

## Peladen Web
<a name="example_task_definition-webserver"></a>

Berikut ini adalah contoh definisi tugas menggunakan wadah Linux di Fargate yang menyiapkan server web:

```
{
   "containerDefinitions": [ 
      { 
         "command": [
            "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' >  /usr/local/apache2/htdocs/index.html && httpd-foreground\""
         ],
         "entryPoint": [
            "sh",
            "-c"
         ],
         "essential": true,
         "image": "public.ecr.aws/docker/library/httpd:2.4",
         "logConfiguration": { 
            "logDriver": "awslogs",
            "options": { 
               "awslogs-group" : "/ecs/fargate-task-definition",
               "awslogs-region": "us-east-1",
               "awslogs-stream-prefix": "ecs"
            }
         },
         "name": "sample-fargate-app",
         "portMappings": [ 
            { 
               "containerPort": 80,
               "hostPort": 80,
               "protocol": "tcp"
            }
         ]
      }
   ],
   "cpu": "256",
   "executionRoleArn": "arn:aws:iam::012345678910:role/ecsTaskExecutionRole",
   "family": "fargate-task-definition",
   "memory": "512",
   "networkMode": "awsvpc",
   "runtimePlatform": {
        "operatingSystemFamily": "LINUX"
    },
   "requiresCompatibilities": [ 
       "FARGATE" 
    ]
}
```

Berikut ini adalah contoh definisi tugas menggunakan wadah Windows di Fargate yang menyiapkan server web:

```
{
    "containerDefinitions": [
        {
            "command": ["New-Item -Path C:\\inetpub\\wwwroot\\index.html -Type file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p>'; C:\\ServiceMonitor.exe w3svc"],
            "entryPoint": [
                "powershell",
                "-Command"
            ],
            "essential": true,
            "cpu": 2048,
            "memory": 4096,
            "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
            "name": "sample_windows_app",
            "portMappings": [
                {
                    "hostPort": 80,
                    "containerPort": 80,
                    "protocol": "tcp"
                }
            ]
        }
    ],
    "memory": "4096",
    "cpu": "2048",
    "networkMode": "awsvpc",
    "family": "windows-simple-iis-2019-core",
    "executionRoleArn": "arn:aws:iam::012345678910:role/ecsTaskExecutionRole",
    "runtimePlatform": {"operatingSystemFamily": "WINDOWS_SERVER_2019_CORE"},
    "requiresCompatibilities": ["FARGATE"]
}
```

## `splunk`driver log
<a name="example_task_definition-splunk"></a>

Cuplikan berikut menunjukkan cara menggunakan driver `splunk` log dalam definisi tugas yang mengirimkan log ke layanan jarak jauh. Parameter token Splunk ditetapkan sebagai opsi rahasia karena dapat diperlakukan sebagai data sensitif. Untuk informasi selengkapnya, lihat [Meneruskan data sensitif ke wadah Amazon ECS](specifying-sensitive-data.md).

```
"containerDefinitions": [{
		"logConfiguration": {
			"logDriver": "splunk",
			"options": {
				"splunk-url": "https://cloud.splunk.com:8080",
				"tag": "tag_name",
			},
			"secretOptions": [{
				"name": "splunk-token",
				"valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:splunk-token-KnrBkD"
}],
```

## `fluentd`driver log
<a name="example_task_definition-fluentd"></a>

Cuplikan berikut menunjukkan cara menggunakan driver `fluentd` log dalam definisi tugas yang mengirimkan log ke layanan jarak jauh. Nilai `fluentd-address` ditetapkan sebagai opsi rahasia karena dapat diperlakukan sebagai data sensitif. Untuk informasi selengkapnya, lihat [Meneruskan data sensitif ke wadah Amazon ECS](specifying-sensitive-data.md).

```
"containerDefinitions": [{
	"logConfiguration": {
		"logDriver": "fluentd",
		"options": {
			"tag": "fluentd demo"
		},
		"secretOptions": [{
			"name": "fluentd-address",
			"valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:fluentd-address-KnrBkD"
		}]
	},
	"entryPoint": [],
	"portMappings": [{
             "hostPort": 80,
             "protocol": "tcp",
             "containerPort": 80
             },
             {
		"hostPort": 24224,
		"protocol": "tcp",
		"containerPort": 24224
	}]
}],
```

## `gelf`driver log
<a name="example_task_definition-gelf"></a>

Cuplikan berikut menunjukkan cara menggunakan driver `gelf` log dalam definisi tugas yang mengirimkan log ke host jarak jauh yang menjalankan Logstash yang mengambil log Gelf sebagai input. Untuk informasi selengkapnya, lihat [logConfiguration](task_definition_parameters.md#ContainerDefinition-logConfiguration).

```
"containerDefinitions": [{
	"logConfiguration": {
		"logDriver": "gelf",
		"options": {
			"gelf-address": "udp://logstash-service-address:5000",
			"tag": "gelf task demo"
		}
	},
	"entryPoint": [],
	"portMappings": [{
			"hostPort": 5000,
			"protocol": "udp",
			"containerPort": 5000
		},
		{
			"hostPort": 5000,
			"protocol": "tcp",
			"containerPort": 5000
		}
	]
}],
```

## Beban kerja pada instance eksternal
<a name="ecs-anywhere-runtask"></a>

Saat mendaftarkan definisi tugas Amazon ECS, gunakan `requiresCompatibilities` parameter dan tentukan `EXTERNAL` yang memvalidasi bahwa definisi tugas kompatibel untuk digunakan saat menjalankan beban kerja Amazon ECS pada instans eksternal Anda. Jika Anda menggunakan konsol untuk mendaftarkan definisi tugas, Anda harus menggunakan editor JSON. Untuk informasi selengkapnya, lihat [Membuat definisi tugas Amazon ECS menggunakan konsol](create-task-definition.md).

**penting**  
Jika tugas Anda memerlukan peran IAM eksekusi tugas, pastikan itu ditentukan dalam definisi tugas. 

Ketika Anda men-deploy beban kerja, gunakan tipe peluncuran `EXTERNAL` ketika membuat layanan atau menjalankan tugas mandiri Anda.

Berikut ini merupakan ketentuan tugas contoh.

------
#### [ Linux ]

```
{
	"requiresCompatibilities": [
		"EXTERNAL"
	],
	"containerDefinitions": [{
		"name": "nginx",
		"image": "public.ecr.aws/nginx/nginx:latest",
		"memory": 256,
		"cpu": 256,
		"essential": true,
		"portMappings": [{
			"containerPort": 80,
			"hostPort": 8080,
			"protocol": "tcp"
		}]
	}],
	"networkMode": "bridge",
	"family": "nginx"
}
```

------
#### [ Windows ]

```
{
	"requiresCompatibilities": [
		"EXTERNAL"
	],
	"containerDefinitions": [{
		"name": "windows-container",
		"image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
		"memory": 256,
		"cpu": 512,
		"essential": true,
		"portMappings": [{
			"containerPort": 80,
			"hostPort": 8080,
			"protocol": "tcp"
		}]
	}],
	"networkMode": "bridge",
	"family": "windows-container"
}
```

------

## Peran IAM definisi gambar dan tugas Amazon ECR
<a name="example_task_definition-iam"></a>

Cuplikan berikut menggunakan gambar Amazon ECR yang disebut `aws-nodejs-sample` dengan `v1` tag dari registri. `123456789012.dkr.ecr.us-west-2.amazonaws.com` Wadah dalam tugas ini mewarisi izin IAM dari peran. `arn:aws:iam::123456789012:role/AmazonECSTaskS3BucketRole` Untuk informasi selengkapnya, lihat [Peran IAM tugas Amazon ECS](task-iam-roles.md).

```
{
    "containerDefinitions": [
        {
            "name": "sample-app",
            "image": "123456789012.dkr.ecr.us-west-2.amazonaws.com/aws-nodejs-sample:v1",
            "memory": 200,
            "cpu": 10,
            "essential": true
        }
    ],
    "family": "example_task_3",
    "taskRoleArn": "arn:aws:iam::123456789012:role/AmazonECSTaskS3BucketRole"
}
```

## Entrypoint dengan perintah
<a name="example_task_definition-ping"></a>

Cuplikan berikut menunjukkan sintaks untuk wadah Docker yang menggunakan titik masuk dan argumen perintah. Kontainer ini menge-ping `example.com` empat kali dan kemudian keluar.

```
{
    "containerDefinitions": [
        {
            "memory": 32,
            "essential": true,
            "entryPoint": ["ping"],
            "name": "alpine_ping",
            "readonlyRootFilesystem": true,
            "image": "alpine:3.4",
            "command": [
                "-c",
                "4",
                "example.com"
            ],
            "cpu": 16
        }
    ],
    "family": "example_task_2"
}
```

## Dependensi kontainer
<a name="example_task_definition-containerdependency"></a>

Cuplikan ini menunjukkan sintaks untuk definisi tugas dengan beberapa kontainer di mana dependensi kontainer ditentukan. Dalam definisi tugas berikut, `envoy` wadah harus mencapai status sehat, ditentukan oleh parameter pemeriksaan kesehatan wadah yang diperlukan, sebelum `app` wadah dimulai. Untuk informasi selengkapnya, lihat [Dependensi kontainer](task_definition_parameters.md#container_definition_dependson).

```
{
  "family": "appmesh-gateway",
  "runtimePlatform": {
        "operatingSystemFamily": "LINUX"
  },
  "proxyConfiguration":{
      "type": "APPMESH",
      "containerName": "envoy",
      "properties": [
          {
              "name": "IgnoredUID",
              "value": "1337"
          },
          {
              "name": "ProxyIngressPort",
              "value": "15000"
          },
          {
              "name": "ProxyEgressPort",
              "value": "15001"
          },
          {
              "name": "AppPorts",
              "value": "9080"
          },
          {
              "name": "EgressIgnoredIPs",
              "value": "169.254.170.2,169.254.169.254"
          }
      ]
  },
  "containerDefinitions": [
    {
      "name": "app",
      "image": "application_image",
      "portMappings": [
        {
          "containerPort": 9080,
          "hostPort": 9080,
          "protocol": "tcp"
        }
      ],
      "essential": true,
      "dependsOn": [
        {
          "containerName": "envoy",
          "condition": "HEALTHY"
        }
      ]
    },
    {
      "name": "envoy",
      "image": "840364872350.dkr.ecr.region-code.amazonaws.com/aws-appmesh-envoy:v1.15.1.0-prod",
      "essential": true,
      "environment": [
        {
          "name": "APPMESH_VIRTUAL_NODE_NAME",
          "value": "mesh/meshName/virtualNode/virtualNodeName"
        },
        {
          "name": "ENVOY_LOG_LEVEL",
          "value": "info"
        }
      ],
      "healthCheck": {
        "command": [
          "CMD-SHELL",
          "echo hello"
        ],
        "interval": 5,
        "timeout": 2,
        "retries": 3
      }    
    }
  ],
  "executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole",
  "networkMode": "awsvpc"
}
```

## Volume dalam definisi tugas
<a name="volume_sample_task_defs"></a>

Gunakan yang berikut ini untuk memahami cara menentukan volume dalam tugas.
+ Untuk informasi tentang cara mengonfigurasi volume Amazon EBS, lihat[Tentukan konfigurasi volume Amazon EBS pada penerapan Amazon ECS](configure-ebs-volume.md).
+ Untuk informasi tentang cara mengonfigurasi volume Amazon EFS, lihat[Mengonfigurasi sistem file Amazon EFS untuk Amazon ECS menggunakan konsol](tutorial-efs-volumes.md).
+ Untuk informasi tentang cara mengkonfigurasi volume FSx untuk Windows File Server, lihat[Pelajari cara mengonfigurasi FSx sistem file Windows File Server untuk Amazon ECS](tutorial-wfsx-volumes.md).
+ Untuk informasi tentang cara mengonfigurasi volume Docker, lihat[Contoh volume Docker untuk Amazon ECS](docker-volume-examples.md).
+ Untuk informasi tentang cara mengonfigurasi bind mount, lihat[Contoh Bind mount untuk Amazon ECS](bind-mount-examples.md).

## Ketentuan tugas sampel Windows
<a name="windows_sample_task_defs"></a>

Berikut ini adalah contoh definisi tugas untuk membantu Anda memulai dengan wadah Windows di Amazon ECS.

**Example Aplikasi Contoh Konsol Amazon ECS untuk Windows**  
Definisi tugas berikut adalah aplikasi sampel konsol Amazon ECS yang diproduksi di wizard yang dijalankan pertama untuk Amazon ECS; itu telah di-porting untuk menggunakan gambar wadah Windows. `microsoft/iis`  

```
{
  "family": "windows-simple-iis",
  "containerDefinitions": [
    {
      "name": "windows_sample_app",
      "image": "mcr.microsoft.com/windows/servercore/iis",
      "cpu": 1024,
      "entryPoint":["powershell", "-Command"],
      "command":["New-Item -Path C:\\inetpub\\wwwroot\\index.html -Type file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p>'; C:\\ServiceMonitor.exe w3svc"],
      "portMappings": [
        {
          "protocol": "tcp",
          "containerPort": 80
        }
      ],
      "memory": 1024,
      "essential": true
    }
  ],
  "networkMode": "awsvpc",
  "memory": "1024",
  "cpu": "1024"
}
```