Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Replikasi gambar kontainer Amazon ECR yang difilter di seluruh akun atau Wilayah
Abdal Garuba, Amazon Web Services
Ringkasan
Amazon Elastic Container Registry (Amazon ECR) dapat mereplikasi semua gambar kontainer dalam repositori gambar di seluruh Wilayah Amazon Web Services (AWS) dan akun AWS secara native, dengan menggunakan fitur replikasi lintas wilayah dan lintas akun. (Untuk informasi selengkapnya, lihat posting blog AWS Replikasi lintas wilayah di Amazon ECR telah mendarat
Pola ini menjelaskan cara mereplikasi gambar kontainer yang disimpan di Amazon ECR di seluruh akun AWS dan Wilayah, berdasarkan pola tag gambar. Pola ini menggunakan Amazon CloudWatch Events untuk mendengarkan peristiwa push untuk gambar yang memiliki tag kustom yang telah ditentukan sebelumnya. Acara push memulai CodeBuild proyek AWS dan meneruskan detail gambar ke sana. CodeBuild Proyek menyalin gambar dari registri Amazon ECR sumber ke registri tujuan berdasarkan detail yang diberikan.
Pola ini menyalin gambar yang memiliki tag tertentu di seluruh akun. Misalnya, Anda dapat menggunakan pola ini untuk menyalin hanya gambar yang siap produksi dan aman ke akun AWS produksi. Di akun pengembangan, setelah gambar diuji secara menyeluruh, Anda dapat menambahkan tag yang telah ditentukan ke gambar aman dan menggunakan langkah-langkah dalam pola ini untuk menyalin gambar yang ditandai ke akun produksi.
Prasyarat dan batasan
Prasyarat
Akun AWS aktif untuk pendaftar ECR Amazon sumber dan tujuan
Izin administratif untuk alat yang digunakan dalam pola ini
Docker
diinstal pada mesin lokal Anda untuk pengujian AWS Command Line Interface (AWS CLI), untuk autentikasi ke Amazon ECR
Batasan
Pola ini mengamati peristiwa push dari registri sumber hanya di satu Wilayah AWS. Anda dapat menerapkan pola ini ke Wilayah lain untuk menonton pendaftar di Wilayah tersebut.
Dalam pola ini, satu aturan Amazon CloudWatch Events mendengarkan pola tag gambar tunggal. Jika Anda ingin memeriksa beberapa pola, Anda dapat menambahkan acara untuk mendengarkan pola tag gambar tambahan.
Arsitektur
Arsitektur target

Otomatisasi dan skala
Pola ini dapat diotomatisasi dengan skrip infrastruktur sebagai kode (IAc) dan digunakan dalam skala besar. Untuk menggunakan CloudFormation templat AWS untuk menerapkan pola ini, unduh lampiran dan ikuti petunjuk di bagian Informasi tambahan.
Anda dapat mengarahkan beberapa CloudWatch peristiwa Amazon Events (dengan pola peristiwa khusus yang berbeda) ke CodeBuild project AWS yang sama untuk mereplikasi beberapa pola tag gambar, tetapi Anda perlu memperbarui validasi sekunder dalam buildspec.yaml file (yang disertakan dalam lampiran dan di bagian Alat) sebagai berikut untuk mendukung beberapa pola.
... if [[ ${IMAGE_TAG} != release-* ]]; then ...
Alat
Layanan Amazon
IAM
— AWS Identity and Access Management (IAM) memungkinkan Anda mengelola akses ke layanan dan sumber daya AWS dengan aman. Dalam pola ini, Anda perlu membuat peran IAM lintas akun yang CodeBuild akan diasumsikan AWS saat mendorong gambar kontainer ke registri tujuan. Amazon ECR
- Amazon Elastic Container Registry (Amazon ECR) adalah registri kontainer yang dikelola sepenuhnya yang memudahkan untuk menyimpan, mengelola, berbagi, dan menyebarkan gambar dan artefak kontainer Anda di mana saja. Tindakan push gambar ke registri sumber mengirim detail peristiwa sistem ke bus acara yang diambil oleh Amazon CloudWatch Events. AWS CodeBuild
— AWS CodeBuild adalah layanan integrasi berkelanjutan yang dikelola sepenuhnya yang menyediakan daya komputasi untuk melakukan pekerjaan seperti menyusun kode sumber, menjalankan pengujian, dan memproduksi artefak yang siap digunakan. Pola ini menggunakan AWS CodeBuild untuk melakukan tindakan penyalinan dari registri Amazon ECR sumber ke registri tujuan. CloudWatch Acara — Amazon CloudWatch Events menghadirkan aliran peristiwa sistem yang menjelaskan perubahan dalam sumber daya AWS. Pola ini menggunakan aturan untuk mencocokkan tindakan push Amazon ECR dengan pola tag gambar tertentu.
Alat
Docker CLI
— Docker adalah alat yang membuatnya lebih mudah untuk membuat dan mengelola kontainer. Container mengemas aplikasi dan semua dependensinya ke dalam satu unit atau paket yang dapat dengan mudah digunakan pada platform apa pun yang mendukung runtime kontainer.
Kode
Anda dapat menerapkan pola ini dengan dua cara:
Penyiapan otomatis: Terapkan dua CloudFormation templat AWS yang disediakan di lampiran. Untuk petunjuk, lihat bagian Informasi tambahan.
Pengaturan manual: Ikuti langkah-langkah di bagian Epik.
Contoh buildspec.yaml
Jika Anda menggunakan CloudFormation template yang disediakan dengan pola ini, buildspec.yaml file tersebut disertakan dalam CodeBuild sumber daya.
version: 0.2 env: shell: bash phases: install: commands: - export CURRENT_ACCOUNT=$(echo ${CODEBUILD_BUILD_ARN} | cut -d':' -f5) - export CURRENT_ECR_REGISTRY=${CURRENT_ACCOUNT}.dkr.ecr.${AWS_REGION}.amazonaws.com - export DESTINATION_ECR_REGISTRY=${DESTINATION_ACCOUNT}.dkr.ecr.${DESTINATION_REGION}.amazonaws.com pre_build: on-failure: ABORT commands: - echo "Validating Image Tag ${IMAGE_TAG}" - | if [[ ${IMAGE_TAG} != release-* ]]; then aws codebuild stop-build --id ${CODEBUILD_BUILD_ID} sleep 60 exit 1 fi - aws ecr get-login-password --region ${AWS_REGION} | docker login -u AWS --password-stdin ${CURRENT_ECR_REGISTRY} - docker pull ${CURRENT_ECR_REGISTRY}/${REPO_NAME}:${IMAGE_TAG} build: commands: - echo "Assume cross-account role" - CREDENTIALS=$(aws sts assume-role --role-arn ${CROSS_ACCOUNT_ROLE_ARN} --role-session-name Rolesession) - export AWS_DEFAULT_REGION=${DESTINATON_REGION} - export AWS_ACCESS_KEY_ID=$(echo ${CREDENTIALS} | jq -r '.Credentials.AccessKeyId') - export AWS_SECRET_ACCESS_KEY=$(echo ${CREDENTIALS} | jq -r '.Credentials.SecretAccessKey') - export AWS_SESSION_TOKEN=$(echo ${CREDENTIALS} | jq -r '.Credentials.SessionToken') - echo "Logging into cross-account registry" - aws ecr get-login-password --region ${DESTINATION_REGION} | docker login -u AWS --password-stdin ${DESTINATION_ECR_REGISTRY} - echo "Check if Destination Repository exists, else create" - | aws ecr describe-repositories --repository-names ${REPO_NAME} --region ${DESTINATION_REGION} \ || aws ecr create-repository --repository-name ${REPO_NAME} --region ${DESTINATION_REGION} - echo "retag image and push to destination" - docker tag ${CURRENT_ECR_REGISTRY}/${REPO_NAME}:${IMAGE_TAG} ${DESTINATION_ECR_REGISTRY}/${REPO_NAME}:${IMAGE_TAG} - docker push ${DESTINATION_ECR_REGISTRY}/${REPO_NAME}:${IMAGE_TAG}
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat peran CloudWatch Acara. | Di akun AWS sumber, buat peran IAM untuk diasumsikan oleh Amazon CloudWatch Events. Peran tersebut harus memiliki izin untuk memulai CodeBuild proyek AWS. Untuk membuat peran dengan menggunakan AWS CLI, ikuti petunjuk dalam dokumentasi IAM. Contoh kebijakan kepercayaan (
Contoh kebijakan izin (
| Administrator AWS, AWS DevOps, administrator sistem AWS, Administrator cloud, arsitek Cloud, DevOps insinyur |
Buat CodeBuild peran. | Buat peran IAM untuk diasumsikan AWS CodeBuild , dengan mengikuti petunjuk dalam dokumentasi IAM. Peran harus memiliki izin berikut:
Contoh kebijakan kepercayaan (
Contoh kebijakan izin (
Lampirkan kebijakan terkelola
| Administrator AWS, AWS DevOps, administrator sistem AWS, Administrator cloud, arsitek Cloud, DevOps insinyur |
Buat peran lintas akun. | Di akun AWS tujuan, buat peran IAM untuk CodeBuild peran AWS untuk diasumsikan oleh akun sumber. Peran lintas akun harus memungkinkan gambar kontainer untuk membuat repositori baru dan mengunggah gambar kontainer ke Amazon ECR. Untuk membuat peran IAM dengan menggunakan AWS CLI, ikuti petunjuk dalam dokumentasi IAM. Untuk mengizinkan CodeBuild proyek AWS dari langkah sebelumnya, gunakan kebijakan kepercayaan berikut:
Untuk mengizinkan CodeBuild proyek AWS dari langkah sebelumnya untuk menyimpan gambar di registri tujuan, gunakan kebijakan izin berikut:
| Administrator AWS, AWS DevOps, Administrator cloud, arsitek Cloud, DevOps insinyur, administrator sistem AWS |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat CodeBuild proyek. | Buat CodeBuild proyek AWS di akun sumber dengan mengikuti petunjuk dalam CodeBuild dokumentasi AWS. Proyek harus berada di Wilayah yang sama dengan registri sumber. Konfigurasikan proyek sebagai berikut:
| Administrator AWS, AWS DevOps, administrator sistem AWS, Administrator cloud, arsitek Cloud, DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat aturan acara. | Karena pola menggunakan fitur pemfilteran konten, Anda perlu membuat acara dengan menggunakan Amazon EventBridge. Buat acara dan target dengan mengikuti petunjuk dalam EventBridge dokumentasi, dengan beberapa modifikasi:
| Administrator AWS, AWS DevOps, administrator sistem AWS, Administrator cloud, arsitek Cloud, DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Otentikasi dengan Amazon ECR. | Otentikasi ke pendaftar sumber dan tujuan dengan mengikuti langkah-langkah dalam dokumentasi Amazon ECR. | Administrator AWS, AWS DevOps, administrator sistem AWS, Administrator cloud, DevOps insinyur, arsitek Cloud |
Uji replikasi gambar. | Di akun sumber Anda, dorong gambar kontainer ke repositori sumber Amazon ECR baru atau yang sudah ada dengan tag gambar yang diawali dengan. Anda dapat memantau kemajuan CodeBuild proyek di CodeBuild konsol Setelah CodeBuild proyek berhasil diselesaikan, masuk ke akun AWS tujuan, buka konsol Amazon ECR, dan konfirmasikan bahwa gambar ada di registri ECR Amazon tujuan. | Administrator AWS, AWS DevOps, administrator sistem AWS, Administrator cloud, arsitek Cloud, DevOps insinyur |
Uji pengecualian gambar. | Di akun sumber Anda, dorong gambar kontainer ke repositori sumber Amazon ECR baru atau yang sudah ada dengan tag gambar yang tidak memiliki awalan khusus. Konfirmasikan bahwa CodeBuild proyek belum dimulai, dan tidak ada gambar kontainer yang muncul di registri tujuan. | Administrator AWS, AWS DevOps, administrator sistem AWS, Administrator cloud, arsitek Cloud, DevOps insinyur |
Sumber daya terkait
Informasi tambahan
Untuk secara otomatis menyebarkan sumber daya untuk pola ini, ikuti langkah-langkah berikut:
Unduh lampiran dan ekstrak dua CloudFormation templat:
part-1-copy-tagged-images.yamldanpart-2-destination-account-role.yaml.Masuk ke CloudFormation konsol AWS
, dan terapkan part-1-copy-tagged-images.yamldi akun AWS dan Wilayah yang sama dengan sumber pendaftar ECR Amazon. Perbarui parameter sesuai kebutuhan. Template menyebarkan sumber daya berikut:Peran IAM CloudWatch Acara Amazon
Peran IAM CodeBuild proyek AWS
CodeBuild Proyek AWS
Aturan AWS CloudWatch Events
Perhatikan nilai
SourceRoleNamedi tab Output. Anda akan membutuhkan nilai ini di langkah berikutnya.Terapkan CloudFormation templat kedua,
part-2-destination-account-role.yaml, di akun AWS tempat Anda ingin menyalin gambar penampung Amazon ECR. Perbarui parameter sesuai kebutuhan. UntukSourceRoleNameparameter, tentukan nilai dari langkah 3. Template ini menerapkan peran IAM lintas akun.
Lampiran
Untuk mengakses konten tambahan yang terkait dengan dokumen ini, unzip file berikut: attachment.zip