Klaster ECS, Definisi Tugas, dan Layanan
Tentukan definisi tugas ECS dengan citra kontainer dan batas sumber daya, daftarkan dalam klaster, lalu buat layanan untuk mempertahankan jumlah yang diinginkan.
Klaster ECS, Definisi Tugas, dan Layanan adalah pelajaran AWS Solutions Architect gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AWS Solutions Architect, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AWS Solutions Architect mencakup 4 pelajaran total.
Mengapa Menggunakan Kontainer di AWS?
Kontainer mengemas aplikasi dan semua dependensinya menjadi unit portabel dan terisolasi yang berjalan secara konsisten di berbagai lingkungan. Amazon ECS (Elastic Container Service) adalah layanan orkestrasi kontainer terkelola penuh dari AWS yang menjalankan kontainer Docker tanpa mengharuskan Anda mengelola bidang kontrol. ECS terintegrasi secara mendalam dengan layanan AWS (IAM, ALB, CloudWatch, Secrets Manager) dan merupakan cara yang disarankan untuk menjalankan kontainer di AWS tanpa kompleksitas Kubernetes.
Klaster ECS: Unit Pengelompokan
Klaster ECS adalah pengelompokan logis sumber daya komputasi tempat kontainer Anda berjalan. Klaster dapat berisi instans EC2 (jenis peluncuran EC2), kapasitas Fargate (jenis peluncuran Fargate), atau keduanya. Anda dapat memiliki beberapa layanan dan tugas mandiri dalam satu klaster. Klaster bersifat regional, tetapi mencakup beberapa Availability Zone. Pola yang umum adalah satu klaster per lingkungan (pengembangan/staging/produksi), dengan beberapa layanan dalam setiap klaster untuk layanan mikro yang berbeda.
aws ecs create-cluster \
--cluster-name 'MyAppCluster' \
--capacity-providers FARGATE FARGATE_SPOT \
--default-capacity-provider-strategy \
capacityProvider=FARGATE,weight=1,base=1Definisi Tugas: Cetak Biru
Definisi Tugas adalah cetak biru untuk menjalankan kontainer di ECS—analog dengan file Docker Compose. Definisi ini menentukan: citra kontainer (URI ECR atau Docker Hub), alokasi CPU dan memori, pemetaan port, variabel lingkungan, konfigurasi pencatatan, volume, dan peran tugas IAM. Definisi tugas memiliki versi—setiap revisi tidak dapat diubah. Anda dapat menentukan beberapa kontainer per tugas untuk pola sidecar (aplikasi utama + pengirim log + agen pemantauan).
{
'family': 'myapp-task',
'networkMode': 'awsvpc',
'requiresCompatibilities': ['FARGATE'],
'cpu': '512',
'memory': '1024',
'executionRoleArn': 'arn:aws:iam::123456789012:role/ecsTaskExecutionRole',
'taskRoleArn': 'arn:aws:iam::123456789012:role/myAppTaskRole',
'containerDefinitions': [{
'name': 'myapp',
'image': '123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp:latest',
'portMappings': [{'containerPort': 8080}]
}]
}Peran Tugas dibandingkan Peran Eksekusi
Tugas ECS menggunakan dua peran IAM terpisah dengan tujuan yang berbeda. Peran Eksekusi Tugas digunakan oleh agen ECS untuk mengambil citra kontainer dari ECR, mengirim log ke CloudWatch, dan mengambil rahasia dari Secrets Manager atau Parameter Store saat tugas dimulai. Peran Tugas digunakan oleh kode aplikasi yang berjalan di dalam kontainer untuk memanggil layanan AWS (S3, DynamoDB, SQS). Selalu berikan izin dengan hak istimewa minimum kepada setiap peran secara terpisah—jangan pernah memberikan peran eksekusi izin yang tidak diperlukan aplikasi.
Layanan ECS untuk Beban Kerja yang Berjalan Lama
Layanan ECS mempertahankan jumlah instans tugas yang berjalan secara bersamaan sesuai yang ditentukan (jumlah yang diinginkan). Jika tugas gagal atau berhenti, penjadwal layanan secara otomatis meluncurkan penggantinya. Layanan juga terintegrasi dengan Elastic Load Balancing untuk distribusi lalu lintas serta mendukung penerapan bergulir dan penerapan biru/hijau. Gunakan layanan untuk proses apa pun yang berjalan lama (server web, server API, pekerja latar belakang). Untuk pekerjaan satu kali, jalankan tugas mandiri sebagai gantinya.
aws ecs create-service \
--cluster 'MyAppCluster' \
--service-name 'MyAppService' \
--task-definition 'myapp-task:5' \
--desired-count 3 \
--launch-type FARGATE \
--network-configuration '{
"awsvpcConfiguration": {
"subnets": ["subnet-aaa111", "subnet-bbb222"],
"securityGroups": ["sg-xyz"],
"assignPublicIp": "DISABLED"
}
}'Mode Jaringan: awsvpc dibandingkan bridge
Mode jaringan awsvpc memberikan setiap tugas ECS Elastic Network Interface (ENI) dan alamat IP privatnya sendiri dalam VPC Anda—seperti instans EC2. Hal ini memungkinkan kontrol grup keamanan yang terperinci untuk setiap tugas dan diwajibkan untuk tugas Fargate. Mode jaringan bridge menggunakan jaringan virtual bawaan Docker pada host, dengan pemetaan port dari host ke kontainer—mode ini berbagi ENI instans EC2 host. Untuk ujian SAA-C03, Fargate selalu menggunakan awsvpc; jenis peluncuran EC2 dapat menggunakan salah satunya.
Menghubungkan Penyeimbang Beban ke Layanan ECS
Daftarkan layanan ECS Anda ke grup target ALB untuk mendistribusikan lalu lintas ke seluruh instans tugas. Saat tugas baru dimulai, ECS secara otomatis mendaftarkannya ke grup target; saat tugas berhenti, ECS membatalkan pendaftarannya. Konfigurasikan masa tenggang pemeriksaan kesehatan (misalnya, 60–120 detik) agar kontainer memiliki waktu untuk memulai sebelum pemeriksaan kesehatan dijalankan. Tanpa masa tenggang, ALB mungkin menandai kontainer yang memulai dengan lambat sebagai tidak sehat sebelum siap, sehingga menyebabkan pengulangan penggantian.
aws ecs create-service \
--cluster 'MyAppCluster' \
--service-name 'MyAppService' \
--load-balancers \
'targetGroupArn=arn:aws:elasticloadbalancing:...,containerName=myapp,containerPort=8080' \
--health-check-grace-period-seconds 120 \
--task-definition 'myapp-task:5' \
--desired-count 3Penerapan Bergulir dibandingkan Penerapan Biru/Hijau
Layanan ECS mendukung dua strategi penerapan: Pembaruan Bergulir secara bertahap mengganti tugas lama dengan tugas baru—dapat dikonfigurasi menggunakan minimumHealthyPercent (batas bawah) dan maximumPercent (batas atas). Pengaturan 100/200 berarti tugas lama tetap berjalan saat tugas baru diluncurkan (100% kesehatan diwajibkan, dengan kapasitas hingga 200%). Penerapan biru/hijau (melalui AWS CodeDeploy) membuat set tugas baru berdampingan dengan set lama, mengalihkan lalu lintas secara bertahap menggunakan perutean berbobot ALB, lalu menghentikan tugas lama setelah validasi. Penerapan biru/hijau memiliki kemampuan pengembalian tanpa waktu henti.
Pencatatan CloudWatch dari ECS
Konfigurasikan pengandar log awslogs dalam definisi tugas Anda untuk mengirim stdout/stderr kontainer secara langsung ke CloudWatch Logs. Tentukan grup log, wilayah, dan awalan aliran. Peran eksekusi tugas memerlukan izin logs:CreateLogStream dan logs:PutLogEvents. Untuk agregasi log terpusat di berbagai layanan, pertimbangkan penggunaan FireLens (kontainer sidecar dengan Fluent Bit atau Fluentd) untuk merutekan log ke S3, OpenSearch, atau sistem pencatatan pihak ketiga.
'logConfiguration': {
'logDriver': 'awslogs',
'options': {
'awslogs-group': '/ecs/myapp',
'awslogs-region': 'us-east-1',
'awslogs-stream-prefix': 'myapp'
}
}Penemuan Layanan ECS dengan Cloud Map
Saat layanan mikro di ECS perlu saling berkomunikasi, alamat IP yang ditulis secara permanen tidak akan berfungsi karena tugas bersifat sementara dan mendapatkan IP baru setiap kali diluncurkan. Gunakan AWS Cloud Map (Penemuan Layanan ECS) untuk mendaftarkan IP dan port setiap tugas dalam namespace DNS. Layanan lain menyelesaikan myservice.namespace.local menjadi IP tugas yang sehat saat ini. ECS secara otomatis mendaftarkan tugas baru dan membatalkan pendaftaran tugas yang gagal, sehingga catatan DNS tetap akurat tanpa pengelolaan manual.
Rahasia dalam Definisi Tugas ECS
Jangan pernah menulis kredensial secara langsung dalam definisi tugas. Sebagai gantinya, rujuk rahasia Secrets Manager atau Parameter Store dalam definisi tugas—ECS menyuntikkannya sebagai variabel lingkungan saat tugas dimulai. Peran eksekusi tugas harus memiliki izin untuk mengambil rahasia tersebut. Untuk Secrets Manager, gunakan secretsmanager:GetSecretValue; untuk Parameter Store, gunakan ssm:GetParameters. Rahasia diambil satu kali saat kontainer dimulai; rotasi rahasia memerlukan penggantian tugas agar nilai baru digunakan.
'secrets': [
{
'name': 'DB_PASSWORD',
'valueFrom': 'arn:aws:secretsmanager:us-east-1:123456789012:secret:myapp/db-password-AbCdEf'
},
{
'name': 'API_KEY',
'valueFrom': 'arn:aws:ssm:us-east-1:123456789012:parameter/myapp/api-key'
}
]Pemeriksaan Singkat
Uji pemahaman Anda tentang konsep AWS Solutions Architect (SAA-C03) dari pelajaran ini.
Ringkasan Pelajaran
Dalam pelajaran ini, Anda mempelajari bahwa Klaster ECS mengelompokkan sumber daya komputasi tempat tugas berjalan, Definisi Tugas menentukan citra kontainer, CPU/memori, peran, dan pencatatan sebagai cetak biru berversi, sedangkan Layanan ECS mempertahankan jumlah tugas yang diinginkan, terintegrasi dengan ALB untuk distribusi lalu lintas, serta mendukung penerapan bergulir atau biru/hijau. Selanjutnya, kita akan membandingkan jenis peluncuran EC2 dengan jenis peluncuran Fargate tanpa server.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Klaster ECS, Definisi Tugas, dan Layanan” gratis?
Ya — teks lengkap “Klaster ECS, Definisi Tugas, dan Layanan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AWS Solutions Architect, upgrade ke CoddyKit PRO. Kursus AWS Solutions Architect mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Klaster ECS, Definisi Tugas, dan Layanan”?
Tentukan definisi tugas ECS dengan citra kontainer dan batas sumber daya, daftarkan dalam klaster, lalu buat layanan untuk mempertahankan jumlah yang diinginkan. Kamu berlatih AWS Solutions Architect dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai AWS Solutions Architect?
Tidak diperlukan pengalaman sebelumnya. AWS Solutions Architect di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Klaster ECS, Definisi Tugas, dan Layanan” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran AWS Solutions Architect ini?
Ya. Setiap pelajaran AWS Solutions Architect menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Klaster ECS, Definisi Tugas, dan Layanan
- Jenis Peluncuran EC2 vs Fargate
- ECR: Menyimpan dan Mengambil Citra Kontainer
- Penskalaan Otomatis Layanan ECS dan Penyeimbangan Beban