ECR: Menyimpan dan Mengambil Citra Kontainer
Dorong citra Docker ke Amazon ECR, terapkan kebijakan siklus hidup untuk menghapus citra lama, lalu ambil citra secara aman ke dalam tugas ECS.
ECR: Menyimpan dan Mengambil Citra Kontainer adalah pelajaran AWS Solutions Architect gratis di CoddyKit. Ini adalah pelajaran 3 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.
Apa Itu Amazon ECR?
Amazon Elastic Container Registry (ECR) adalah registry image kontainer yang kompatibel dengan Docker dan dikelola sepenuhnya. Layanan ini menyimpan, mengelola, dan menerapkan image kontainer dengan aman di dalam AWS. ECR menghilangkan kebutuhan untuk mengoperasikan infrastruktur registry sendiri dan terintegrasi secara native dengan ECS, EKS, Lambda (image kontainer), dan CodeBuild. Image yang disimpan di ECR direplikasi untuk ketersediaan tinggi dan dapat dipindai secara otomatis untuk menemukan kerentanan keamanan.
Repository ECR Privat vs Publik
ECR mendukung dua tipe repository: Repository privat di Amazon ECR memerlukan autentikasi AWS untuk mengambil image—ideal untuk image aplikasi milik sendiri. Akses dikendalikan oleh kebijakan IAM dan kebijakan sumber daya repository. Repository publik di ECR Public Gallery (public.ecr.aws) memungkinkan pengambilan image tanpa autentikasi dari mana saja di internet—ideal untuk image dasar sumber terbuka, alat publik, dan image yang disediakan AWS (image dasar Lambda, image AMI yang dioptimalkan untuk ECS). Repository publik memiliki kuota pengambilan gratis dengan batas laju untuk permintaan tanpa autentikasi.
# Create a private ECR repository
aws ecr create-repository \
--repository-name 'myapp/backend' \
--image-scanning-configuration scanOnPush=true \
--image-tag-mutability IMMUTABLEMengautentikasi Docker ke ECR
Untuk mengirim atau mengambil image privat ECR, Docker harus melakukan autentikasi menggunakan kredensial AWS. Gunakan aws ecr get-login-password untuk memperoleh token autentikasi sementara, lalu teruskan token tersebut ke docker login. Token ini berlaku selama 12 jam. Dalam pipeline CI/CD, perbarui token sebelum setiap pengiriman. Agen tugas ECS, Lambda, dan node pekerja EKS melakukan autentikasi ke ECR secara otomatis menggunakan peran IAM masing-masing—tidak diperlukan login manual untuk pengambilan saat runtime di lingkungan AWS.
# Authenticate Docker CLI to ECR
aws ecr get-login-password --region us-east-1 | \
docker login \
--username AWS \
--password-stdin \
123456789012.dkr.ecr.us-east-1.amazonaws.comMengirim Image ke ECR
Alur kerja standar untuk mengirim image ke ECR: (1) Build image Docker secara lokal; (2) Beri tag pada image menggunakan URI repository ECR (format: account.dkr.ecr.region.amazonaws.com/repo-name:tag); (3) Kirim image yang telah diberi tag. ECR menyimpan setiap lapisan image secara terpisah dan menghapus duplikasi lapisan yang sama di antara berbagai image, sehingga mengurangi biaya penyimpanan. Penggunaan tag yang tidak dapat diubah mencegah penimpaan tag, sehingga versi image yang diterapkan tetap stabil dan dapat diaudit.
# Build, tag, and push
docker build -t myapp/backend .
docker tag myapp/backend \
123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp/backend:v1.2.3
docker push \
123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp/backend:v1.2.3Kemampuan Perubahan Tag Image
Tag IMMUTABLE mencegah tag ditimpa dengan image yang berbeda. Ketika kemampuan perubahan tag ditetapkan sebagai IMMUTABLE, pengiriman image baru ke tag yang sudah ada akan gagal—Anda harus menggunakan tag baru. Ini merupakan praktik terbaik untuk produksi: cara ini memastikan bahwa :v1.2.3 selalu merujuk ke intisari image yang sama persis, sehingga memungkinkan pengembalian versi dan audit yang andal. Gunakan tag MUTABLE hanya untuk cabang pengembangan atau tag praktis :latest di lingkungan nonproduksi.
Pemindaian Image untuk Kerentanan
Aktifkan pemindaian saat pengiriman untuk memindai image secara otomatis terhadap CVE yang diketahui ketika image dikirim. ECR menggunakan integrasi Amazon Inspector (pemindaian yang ditingkatkan) atau Basic Scanning bawaan yang didukung oleh pemindai sumber terbuka Clair. Pemindaian yang ditingkatkan menyediakan pemindaian berkelanjutan (bukan hanya saat pengiriman) dan mencakup paket OS serta paket khusus bahasa (Node.js, Python, Java). Tinjau temuan pemindaian di konsol ECR atau melalui notifikasi EventBridge kepada tim keamanan Anda.
# Enable enhanced scanning for a registry
aws ecr put-registry-scanning-configuration \
--scan-type ENHANCED \
--rules '[{"repositoryFilters": [{"filter": "*", "filterType": "WILDCARD"}], "scanFrequency": "CONTINUOUS_SCAN"}]'Kebijakan Siklus Hidup untuk Mengelola Biaya Image
ECR mengenakan biaya penyimpanan per GB per bulan. Tanpa pengelolaan, image lama akan terus menumpuk dan meningkatkan biaya. Kebijakan siklus hidup secara otomatis membuat image kedaluwarsa dan menghapusnya berdasarkan aturan: misalnya, hanya menyimpan 10 rilis bertag terakhir atau menghapus image tanpa tag yang berusia lebih dari 7 hari. Kebijakan siklus hidup berjalan setiap hari. Hal ini sangat penting dalam pipeline CI/CD yang mengirim image baru pada setiap commit, karena dapat menumpuk ratusan image setiap minggu.
aws ecr put-lifecycle-policy \
--repository-name 'myapp/backend' \
--lifecycle-policy-text '{
"rules": [
{
"rulePriority": 1,
"description": "Keep last 10 tagged images",
"selection": {"tagStatus": "tagged", "tagPrefixList": ["v"], "countType": "imageCountMoreThan", "countNumber": 10},
"action": {"type": "expire"}
},
{
"rulePriority": 2,
"description": "Delete untagged images after 7 days",
"selection": {"tagStatus": "untagged", "countType": "sinceImagePushed", "countUnit": "days", "countNumber": 7},
"action": {"type": "expire"}
}
]
}'Akses Image Lintas Akun
Untuk mengambil image dari repository ECR di Akun A ke ECS/EKS/Lambda di Akun B, konfigurasikan kebijakan repository (kebijakan berbasis sumber daya) pada repository ECR di Akun A agar memberikan izin kepada principal IAM dari Akun B untuk memanggil ecr:GetDownloadUrlForLayer, ecr:BatchGetImage, dan ecr:BatchCheckLayerAvailability. Cara ini menghilangkan kebutuhan untuk menyalin image antar akun dan memungkinkan pengelolaan image terpusat dengan penggunaan terdistribusi.
Replikasi ECR untuk Penerapan Multi-Region
Replikasi ECR secara otomatis menyalin image dari registry utama Anda ke registry di AWS Region lain (dan secara opsional ke akun lain). Ketika tugas ECS di Region lain mengambil image, tugas tersebut mengambilnya dari registry regional setempat—sehingga mengurangi biaya transfer data dan latensi pengambilan image. Konfigurasikan aturan replikasi pada tingkat registry dengan menentukan repository yang akan direplikasi serta Region dan akun tujuan. Replikasi berlangsung secara asinkron dan hampir secara waktu nyata.
aws ecr put-replication-configuration \
--replication-configuration '{
"rules": [{
"destinations": [
{"region": "eu-west-1", "registryId": "123456789012"},
{"region": "ap-southeast-1", "registryId": "123456789012"}
],
"repositoryFilters": [{"filter": "prod/*", "filterType": "PREFIX_MATCH"}]
}]
}'Enkripsi ECR
ECR mengenkripsi image saat disimpan menggunakan enkripsi sisi server. Secara default, ECR menggunakan kunci yang dikelola AWS (AWS_MANAGED_KEY). Untuk mendapatkan kendali dan kemampuan audit tambahan, konfigurasikan kunci KMS yang dikelola pelanggan (CMK). Dengan CMK, Anda mengendalikan rotasi kunci, dapat mencabut akses dengan menonaktifkan kunci, dan dapat mengaudit semua operasi dekripsi di CloudTrail. Aktifkan enkripsi KMS ketika kepatuhan terhadap peraturan (PCI-DSS, HIPAA, FedRAMP) mengharuskan kunci enkripsi dikendalikan oleh pelanggan.
Menggunakan ECR dengan ECS dalam Pipeline CI/CD
Pipeline CI/CD lengkap untuk ECS dengan ECR: (1) Pengembang mengirim kode ke Git; (2) CodeBuild membangun image Docker dan mengirimkannya ke ECR dengan tag SHA commit; (3) CodePipeline memperbarui definisi tugas ECS dengan URI image baru; (4) ECS melakukan pembaruan bergulir pada layanan dengan mengambil image baru dari ECR. Tugas ECS menggunakan Peran Eksekusi Tugas untuk melakukan autentikasi ke ECR secara otomatis—tidak ada kredensial yang perlu dikelola dalam pipeline untuk pengambilan saat runtime.
Pemeriksaan Singkat
Uji pemahaman Anda tentang konsep AWS Solutions Architect (SAA-C03) dari pelajaran ini.
Ringkasan Pelajaran
Dalam pelajaran ini Anda mempelajari bahwa: repository privat ECR menyimpan image kontainer dengan akses yang dikendalikan IAM, tag yang tidak dapat diubah untuk kestabilan produksi, dan pemindaian kerentanan otomatis dengan Inspector; Kebijakan Siklus Hidup secara otomatis membuat image lama dan tanpa tag kedaluwarsa untuk mengendalikan biaya penyimpanan dalam lingkungan CI/CD yang aktif; serta Replikasi ECR menyalin image ke Region dan akun lain untuk penerapan multi-Region dengan latensi pengambilan yang lebih rendah. Selanjutnya, kita akan membahas Penskalaan Otomatis Layanan ECS dan integrasi penyeimbangan beban.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “ECR: Menyimpan dan Mengambil Citra Kontainer” gratis?
Ya — teks lengkap “ECR: Menyimpan dan Mengambil Citra Kontainer” 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 “ECR: Menyimpan dan Mengambil Citra Kontainer”?
Dorong citra Docker ke Amazon ECR, terapkan kebijakan siklus hidup untuk menghapus citra lama, lalu ambil citra secara aman ke dalam tugas ECS. 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 3 dari 4.
Berapa lama pelajaran “ECR: Menyimpan dan Mengambil Citra Kontainer” 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