View a markdown version of this page

Perbedaan definisi tugas Amazon ECS untuk Fargate - Amazon Elastic Container Service

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

Perbedaan definisi tugas Amazon ECS untuk Fargate

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

Parameter definisi tugas

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 Linux-specific opsi yang diterapkan ke wadah, untuk capabilities satu-satunya kemampuan yang dapat Anda tambahkan adalahCAP_SYS_PTRACE. Parameter devices, sharedMemorySize, dan tmpfs tidak didukung. Untuk informasi selengkapnya, lihat Parameter Linux.

  • volumes— Tugas Fargate hanya mendukung bind mount host volume, jadi dockerVolumeConfiguration parameter tidak didukung. Untuk informasi selengkapnya, lihat volume.

  • 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 divalidasi untuk digunakan dengan Fargate, Anda dapat menentukan hal berikut saat mendaftarkan definisi tugas:

  • Di bidang Konsol Manajemen AWS, untuk Memer lukan Kompatibilitas, tent FARGATE ukan.

  • Di AWS CLI, tentukan --requires-compatibilities opsi.

  • Di Amazon ECS API, tentukan requiresCompatibilities bendera.

Sistem Operasi dan arsitektur

Saat Anda mengonfigurasi definisi tugas dan wadahAWS Fargate, Anda harus menentukan Sistem Operasi yang dijalankan wadah tersebut. Sistem Operasi berikut didukung untukAWS Fargate:

  • Amazon Linux 2

    catatan

    Kontainer Linux hanya menggunakan konfigurasi kernel dan kernel dari Host Operating System. Misalnya, konfigurasi kernel mencakup kontrol sysctl sistem. Gambar wadah 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 pada Sistem Operasi apa pun.

  • Windows Server 2019 Full

  • Windows Server 2019 Core

  • Windows Server 2022 Penuh

  • Inti Windows Server 2022

Saat Anda menjalankan wadah WindowsAWS Fargate, Anda harus memiliki arsitektur CPU X86_64.

Saat Anda menjalankan wadah LinuxAWS Fargate, Anda dapat menggunakan arsitektur CPU X86_64, atau arsitektur ARM64 untuk aplikasi Anda. ARM-based Untuk informasi selengkapnya, lihat Definisi tugas Amazon ECS untuk beban kerja ARM 64-bit.

CPU dan memori tugas

Definisi tugas Amazon ECS untuk AWS Fargate mengharuskan Anda menentukan CPU dan memori pada tingkat tugas. Sebagian besar kasus penggunaan puas dengan hanya menentukan sumber daya ini pada tingkat tugas. Tabel berikut menunjukkan kombinasi yang valid dari tingkat tugas CPU dan memori. 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 dalam GB. Anda dapat menentukan nilai CPU dalam file JSON sebagai string dalam unit CPU atau CPU virtual (vCPU). Misalnya, Anda dapat menentukan nilai CPU baik seperti 1024 pada unit CPU atau 1 vCPU di vCPU.

Nilai CPU Nilai memori Sistem operasi yang didukung untuk AWS Fargate
256 (.25 vCPU) 512 MB, 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 dengan penambahan 1 GB Linux, Windows
4096 (4 vCPU) Antara 8 GB dan 30 GB dalam penambahan 1 GB Linux, Windows
8192 (8 vCPU)
catatan

Opsi ini membutuhkan platform Linux 1.4.0 atau yang lebih baru.

Antara 16 GB dan 60 GB dengan penambahan 4 GB Linux
16384 (16 vCPU)
catatan

Opsi ini membutuhkan platform Linux 1.4.0 atau yang lebih baru.

Antara 32 GB dan 120 GB dengan penambahan 8 GB Linux
32768 (32 vCPU)
catatan

Opsi ini membutuhkan platform Linux 1.4.0 atau yang lebih baru.

60GB, 120GB, 244GB Linux

Jaringan tugas

Tugas Amazon ECS untuk AWS Fargate memerlukan mode awsvpc jaringan, yang menyediakan setiap tugas dengan antarmuka jaringan 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 jaringan 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 kontainer Anda di Amazon ECR, Anda dapat mengonfigurasi Amazon ECR untuk menggunakan antarmuka titik akhir VPC. Dalam hal ini, alamat IPv4 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 Amazon Elastic Container Registry.

Berikut ini adalah contoh networkConfiguration bagian untuk layanan Fargate:

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

Batas sumber daya tugas

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

Definisi tugas Amazon ECS untuk Windows 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 nofile sumber daya. 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 adalah65535. Anda dapat mengatur nilai dari kedua batas hingga1048576.

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.

Pencatatan

Pencatatan peristiwa

Amazon ECS mencatat tindakan yang diperlukan. EventBridge Anda dapat menggunakan acara Amazon ECS EventBridge untuk menerima pemberitahuan hampir real-time mengenai keadaan cluster, layanan, dan tugas Amazon ECS Anda saat ini. Selain itu, Anda dapat mengotomatiskan tindakan untuk menanggapi peristiwa ini. Untuk informasi selengkapnya, lihat Mengotomatiskan respons terhadap kesalahan Amazon ECS menggunakan EventBridge.

Pencatatan siklus hidup tugas

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 AWS CLI dan SDK. Misalnya, Anda dapat menggunakan cap 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, lihatPraktik Terbaik untuk Image Kontainer Amazon ECS.

Pencatatan aplikasi

Definisi tugas Amazon ECS untuk AWS Fargate mendukungawslogs,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 menggunakan driver awslogs log dalam definisi tugas untuk mengirim log kontainer Anda ke CloudWatch Log, lihatKirim log Amazon ECS ke CloudWatch.

Untuk informasi selengkapnya tentang driver log awsfirelens dalam ketentuan tugas, lihat Kirim log Amazon ECS ke AWS layanan atau AWS Partner.

Untuk informasi selengkapnya tentang penggunaan driver log splunk dalam ketentuan tugas, lihat driver log splunk.

Penyimpanan tugas

Untuk tugas Amazon ECS yang dihosting di Fargate, jenis penyimpanan berikut didukung:

Pemuatan gambar kontainer dengan lambat menggunakan Seekable OCI (SOCI)

Tugas Amazon ECS di Fargate yang menggunakan versi platform Linux 1.4.0 dapat menggunakan Seekable OCI (SOCI) untuk membantu memulai tugas lebih cepat. Dengan SOCI, wadah hanya menghabiskan beberapa detik pada tarikan gambar sebelum dapat dimulai, memberikan waktu untuk pengaturan lingkungan dan instansiasi 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 wadah tanpa menunggu seluruh gambar diunduh.

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

Seekable OCI (SOCI) adalah teknologi open source yang dikembangkan oleh AWS yang dapat meluncurkan wadah lebih cepat dengan memuat gambar kontainer secara malas. SOCI bekerja dengan membuat indeks (Indeks SOCI) dari file dalam gambar kontainer yang ada. Indeks ini membantu meluncurkan wadah lebih cepat, menyediakan kemampuan untuk mengekstrak file individual dari gambar wadah 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 Seekable untuk pemuatan gambar kontainer yang lambat.

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 bermigrasi ke SOCI Index Manifest v2. Manifest Indeks SOCI v2 menciptakan hubungan eksplisit antara gambar kontainer dan indeks SOCI mereka untuk memastikan penerapan yang konsisten.

Pertimbangan-pertimbangan

Jika Anda ingin Fargate menggunakan indeks SOCI untuk memuat gambar kontainer dengan malas dalam tugas, pertimbangkan hal berikut:

  • Hanya tugas yang berjalan pada versi platform Linux yang 1.4.0 dapat menggunakan indeks SOCI. Tugas yang menjalankan wadah Windows di Fargate tidak didukung.

  • Tugas yang berjalan pada X86_64 atau arsitektur ARM64 CPU didukung.

  • Gambar kontainer dalam definisi tugas harus disimpan dalam registri gambar yang kompatibel. Berikut ini mencantumkan daftar yang kompatibel:

    • Pendaftaran 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, menghasilkan manifes indeks SOCI memodifikasi manifes gambar kontainer saat kita menambahkan anotasi untuk indeks SOCI. Ini menghasilkan ringkasan 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 menekan ulang gambar kontainer. Re-pushing gambar kontainer tidak akan meningkatkan biaya penyimpanan dengan menduplikasi lapisan sistem file, itu hanya mengunggah file manifes baru.

  • Kami menyarankan Anda mencoba pemuatan lambat dengan gambar kontainer yang lebih besar dari ukuran yang di 250 MiB kompresi. Anda cenderung tidak melihat pengurangan waktu untuk memuat gambar yang lebih kecil.

  • Karena pemuatan lambat dapat mengubah berapa lama tugas Anda dimulai, Anda mungkin perlu mengubah berbagai batas waktu seperti masa tenggang pemeriksaan kesehatan untuk Elastic Load Balancing.

  • Jika Anda ingin mencegah gambar kontainer dimuat dengan lambat, gambar wadah perlu didorong ulang tanpa indeks SOCI terpasang.

Membuat indeks OCI yang dapat dicari

Agar gambar kontainer dimuat dengan lambat, diperlukan indeks SOCI (file metadata) yang dibuat dan disimpan dalam repositori gambar wadah di sepanjang sisi gambar wadah. Untuk membuat dan mendorong indeks SOCI, Anda dapat menggunakan alat CLI 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 ketika gambar kontainer didorong ke Amazon ECR. Untuk informasi selengkapnya tentang solusi dan langkah-langkah instalasi, lihat CloudFormation AWS SOCI Index Builder on GitHub. CloudFormation AWS SOCI Index Builder adalah cara untuk mengotomatiskan 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 berjalansoci-snapshotter. Jika gambar berada di Docker penyimpanan gambar, gambar tidak dapat ditemukan.

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 wadah di /task jalur. Nilai default untuk bidang ini adalahoverlayfs, dan bidang ini disetel ke soci jika SOCI digunakan. Untuk memverifikasi bahwa gambar kontainer memiliki SOCI Index Manifest v2 terpasang, Anda dapat mengambil Indeks Gambar 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 gambar kontainer memiliki SOCI Index Manifest v1 terlampir, Anda dapat menggunakan API Referrers OCI.

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 '.'