Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan registri pihak ketiga yang didukung oleh pull through cache
Anda dapat menggunakan aturan tarik cache Amazon ECR untuk menyinkronkan repositori dalam registri hulu yang didukung dengan repositori pribadi Amazon ECR Anda. Untuk informasi lebih lanjut, lihat Menyinkronkan registri hulu di Panduan Pengguna Registri Kontainer Elastis Amazon.
Pertama kali gambar ditarik, pull through cache membuat repositori gambar di registri pribadi Anda dan membuatnya tetap disinkronkan dengan gambar hulu, selama tag gambar repositori tetap dapat diubah.
HealthOmics mendukung pull through cache untuk registri hulu berikut:
Amazon ECR Public
Registri gambar kontainer Kubernetes
dermaga
Hub Docker
Registri Kontainer Microsoft Azure
GitHub Pendaftaran Kontainer
GitLab Pendaftaran Kontainer
Untuk registri yang menarik melalui cache tidak mendukung, HealthOmics menyalin gambar ke repositori pribadi Amazon ECR Anda. Untuk informasi selengkapnya, lihat Menggunakan registri pihak ketiga yang tidak didukung oleh pull through cache.
Manfaat menggunakan cache pull through Amazon ECR meliputi:
-
Anda menghindari keharusan memigrasikan gambar kontainer secara manual ke Amazon ECR atau untuk menyinkronkan pembaruan dari repositori pihak ketiga.
-
Alur kerja mengakses gambar kontainer yang disinkronkan di repositori pribadi Anda, yang lebih dapat diandalkan daripada mengunduh konten pada waktu berjalan dari registri publik.
-
Karena cache yang ditarik melalui Amazon ECR menggunakan struktur URI yang dapat diprediksi, Anda dapat menyimpan URI gambar hulu dalam definisi alur kerja Anda dan menambahkan peta registri kontainer yang menyelesaikannya ke repositori cache Anda. Untuk informasi selengkapnya, lihat Langkah 4: Menambahkan peta registri kontainer (jika alur kerja Anda menggunakan URI hulu).
Topik
Prasyarat
Jika registri hulu memerlukan otentikasi, AWS Secrets Manager Rahasia harus dalam hal yang sama Akun AWS
dan Wilayah sebagai aturan tarik melalui cache. Saat Anda membuat aturan, lewati --credential-arn ARN rahasia persis seperti yang dikembalikan oleh Manajer Rahasia, termasuk akhiran yang ditambahkan Manajer Rahasia ke nama. Manajer Rahasia create-secret dan describe-secret Jawaban keduanya mengembalikannya. Contoh ARN dalam topik ini menyingkat nama rahasia.
| Registri hulu | URL Pendaftaran | Rahasia Manajer Rahasia diperlukan |
|---|---|---|
Amazon ECR Public |
|
Tidak |
Registri gambar kontainer Kubernetes |
|
Tidak |
dermaga |
|
Tidak |
Hub Docker |
|
Ya |
Registri Kontainer Microsoft Azure |
|
Ya |
GitHub Pendaftaran Kontainer |
|
Ya |
GitLab Pendaftaran Kontainer |
|
Ya |
Nama rahasia harus dimulai dengan ecr-pullthroughcache/. Untuk persyaratan lainnya, lihat Menyimpan kredentif repositori hulu Anda dalam AWS Secrets Manager rahasia di Panduan Pengguna Registri Kontainer Elastis Amazon.
Mengkonfigurasi pull through cache
Amazon ECR menyediakan registri untuk Anda Akun AWS di setiap wilayah. Pastikan Anda membuat konfigurasi Amazon ECR di wilayah yang sama di mana Anda berencana untuk menjalankan alur kerja.
Selesaikan tugas konfigurasi berikut secara berurutan. Langkah 4 hanya berlaku jika definisi alur kerja Anda menggunakan URI gambar hulu.
Tugas konfigurasi
Langkah 1: Membuat aturan pull through cache
Buat aturan cache pull through Amazon ECR untuk setiap registri hulu yang memiliki gambar yang ingin Anda cache. Aturan menentukan pemetaan antara registri hulu dan repositori pribadi Amazon ECR.
Untuk registri hulu yang memerlukan otentikasi, Anda memberikan kredenSIAL menggunakan AWS Secrets Manager.
catatan
Jangan mengubah aturan pull through cache saat proses aktif menggunakan repositori pribadi. Pengoperasian bisa gagal atau, yang lebih kritis, mengakibatkan pipeline Anda menggunakan gambar yang tidak terduga.
Untuk informasi lebih lanjut, lihat Membuat aturan pull through cache di Panduan Pengguna Registri Kontainer Elastis Amazon.
Membuat aturan pull through cache menggunakan konsol
Untuk mengonfigurasi pull through cache, ikuti langkah-langkah berikut menggunakan konsol Amazon ECR:
Bagian 1: Memilih registri hulu
-
Buka Konsol Amazon ECR
. -
Di panel navigasi, di bawah Pendaftaran pribadi, memperluas Fitur & Pengaturan, lalu pilih Tarik melalui cache.
-
Pada Tarik melalui cache halaman, pilih Tambahkan aturan.
-
Di Registri hulu panel, pilih registri hulu untuk disinkronkan dengan registri pribadi Anda, lalu pilih Berikutnya.
-
Jika registri hulu memerlukan otentikasi, pada halaman berikutnya, tentukan rahasia Manajer Rahasia yang berisi kredenSIAL Anda. Pilih Berikutnya.
Bagian 2: Menentukan ruang nama dan membuat aturan
-
Di bawah Tentukan ruang nama, di Ruang nama cache panel, pilih apakah akan membuat repositori pribadi menggunakan awalan repositori tertentu atau tanpa awalan. Jika Anda memilih untuk menggunakan awalan, tentukan nama awalan di Awalan repositori cache.
-
Di Ruang nama hulu panel, pilih apakah akan menarik dari repositori hulu menggunakan awalan repositori tertentu atau tanpa awalan. Jika Anda memilih untuk menggunakan awalan, tentukan nama awalan di Awalan repositori hulu.
Contoh namespace panel menunjukkan contoh pull request, upstream URL, dan URL repositori cache yang dibuat.
-
Pilih Berikutnya.
-
Tinjau konfigurasi dan pilih Buat untuk membuat aturan.
Membuat aturan pull through cache menggunakan AWS CLI
Gunakan Amazon ECR create-pull-through-cache-rule perintah untuk membuat aturan pull through cache. Untuk registri hulu yang memerlukan otentikasi, simpan kredensialnya dalam rahasia Manajer Rahasia.
Contoh berikut menunjukkan cara membuat aturan untuk setiap registri hulu yang didukung.
Anda dapat menggunakan get-run-task AWS CLI perintah untuk mengambil informasi tentang gambar kontainer yang digunakan untuk tugas tertentu:
aws omics get-run-task --idrun-id--task-idtask-id
Outputnya mencakup informasi berikut tentang gambar wadah:
"imageDetails": { "image": "string", "imageDigest": "string", "sourceImage": "string", ... }
Langkah 2: Menyiapkan izin untuk registri hulu
Gunakan izin registri untuk mengizinkan HealthOmics untuk menggunakan cache pull through dan untuk menarik gambar kontainer ke registri pribadi Amazon ECR. Tambahkan kebijakan Amazon ECR Registry ke registri yang menyediakan wadah yang digunakan dalam proses.
Kebijakan berikut memberikan izin untuk HealthOmics layanan untuk membuat repositori dengan prefiks cache tarik yang ditentukan dan untuk memulai penarikan hulu ke repositori ini.
Pastikan Resource mencakup setiap awalan repositori cache yang Anda buat, dan mengatur Region dan Akun AWS di setiap repositori ARN ke registri yang Anda konfigurasi, karena kebijakan registri hanya berlaku untuk Wilayah dan akunnya sendiri.
-
Buka Konsol Amazon ECR
. -
Di panel navigasi, di bawah Pendaftaran pribadi, memperluas Izin registri, lalu pilih Hasilkan pernyataan.
-
Di sisi kanan atas, pilih JSON. Masukkan kebijakan yang mirip dengan berikut ini:
-
Simpan kebijakan.
Untuk melampirkan kebijakan dengan AWS CLI sebagai gantinya, simpan ke file, lalu gunakan Amazon ECR put-registry-policy perintah:
aws ecr put-registry-policy \ --policy-text file://registry-policy-file.json \ --regionregion
penting
put-registry-policy menggantikan seluruh kebijakan registri. Jika registri Anda sudah memiliki kebijakan, ambil dengan get-registry-policy, tambahkan HealthOmics pernyataan, dan mengembalikan kebijakan gabungan.
Untuk informasi selengkapnya tentang kebijakan untuk cache pull through Amazon ECR, lihat Kebijakan untuk Amazon ECR menarik melalui cache.
Langkah 3: Membuat template repositori
Untuk menggunakan pull through caching di HealthOmics, repositori Amazon ECR harus memiliki template pembuatan repositori. Template menentukan pengaturan konfigurasi saat Anda atau Amazon ECR membuat repositori pribadi untuk registri hulu.
Setiap template berisi awalan namespace repositori, yang digunakan Amazon ECR untuk mencocokkan repositori baru dengan template tertentu. Template menentukan konfigurasi untuk semua pengaturan repositori termasuk kebijakan akses berbasis sumber daya, kekekalan tag, enkripsi, dan kebijakan siklus hidup.
Untuk informasi lebih lanjut, lihat Templat pembuatan repositori di Panduan Pengguna Registri Kontainer Elastis Amazon.
catatan
Buat template sebelum dijalankan pertama yang menggunakan awalan. Awalan tanpa templat sendiri, dan tidak ROOT template, tidak mendapat kebijakan repositori, jadi HealthOmics tidak dapat menarik gambar yang di-cache. Tinggalkan mutabilitas tag di MUTABLE, sehingga Amazon ECR dapat menyegarkan gambar yang di-cache saat tag upstream berubah. Untuk repositori yang sudah ada, lihat Memperbarui repositori yang dibuat sebelum template.
Untuk membuat template pembuatan repositori, ikuti langkah-langkah berikut menggunakan konsol Amazon ECR:
Bagian 1: Mendefinisikan template
-
Buka Konsol Amazon ECR
. -
Di panel navigasi, di bawah Pendaftaran pribadi, memperluas Fitur dan pengaturan, lalu pilih Templat pembuatan repositori.
-
Pilih Buat templat.
-
Dalam Detail template, pilih Tarik melalui cache.
-
Pilih apakah akan menerapkan template ini ke awalan tertentu atau ke semua repositori yang tidak cocok dengan template lain.
Jika Anda memilih Awalan tertentu, masukkan nilai awalan namespace di Awalan. Anda menentukan awalan ini saat Anda membuat aturan pull through cache.
-
Pilih Berikutnya.
Bagian 2: Menambahkan konfigurasi pembuatan repositori
-
Pada Tambahkan konfigurasi pembuatan repositori halaman, untuk Izin repositori, gunakan salah satu contoh pernyataan kebijakan, atau masukkan yang mirip dengan contoh berikut:
-
(Opsional) Tambahkan pengaturan repositori seperti kebijakan siklus hidup dan tag. Amazon ECR menerapkan aturan ini untuk semua gambar kontainer yang dibuat untuk pull through cache yang menggunakan awalan yang ditentukan.
-
Pilih Berikutnya.
-
Tinjau konfigurasi dan pilih Buat untuk membuat template.
Untuk membuat template dengan AWS CLI sebagai gantinya, simpan kebijakan repositori dari prosedur sebelumnya ke file, lalu gunakan Amazon ECR create-repository-creation-template perintah dengan --prefix diatur ke awalan repositori cache dari aturan cache tarik melalui Anda. Deskripsi adalah opsional:
aws ecr create-repository-creation-template \ --prefixecr-repository-prefix\ --applied-for PULL_THROUGH_CACHE \ --repository-policy file://repository-policy-file.json \ --image-tag-mutability MUTABLE \ --description "description" \ --regionregion
Jika template sudah ada untuk awalan, create-repository-creation-template gagal dengan TemplateAlreadyExistsException. Perbarui template yang ada di tempat sebagai gantinya:
aws ecr update-repository-creation-template \ --prefixecr-repository-prefix\ --applied-for PULL_THROUGH_CACHE \ --repository-policy file://repository-policy-file.json \ --image-tag-mutability MUTABLE \ --regionregion
penting
update-repository-creation-template menggantikan setiap nilai yang Anda lewati, jadi --applied-for dan --repository-policy ganti daftar dan kebijakan yang ada alih-alih menggabungkannya. Ambil template saat ini dengan describe-repository-creation-templates, gabungkan perubahan Anda, dan berikan nilai lengkap.
Amazon ECR dikonfigurasi, tetapi HealthOmics Konfigurasi belum selesai. Jika definisi alur kerja Anda menggunakan URI gambar hulu, lanjutkan ke Langkah 4: Menambahkan peta registri kontainer (jika alur kerja Anda menggunakan URI hulu): tanpa peta registri kontainer, proses gagal setelah dimulai. Jika tidak, lanjutkan ke Langkah 5: Memverifikasi konfigurasi cache tarik melalui.
Langkah 4: Menambahkan peta registri kontainer (jika alur kerja Anda menggunakan URI hulu)
URI gambar dalam definisi alur kerja menentukan apakah Anda memerlukan peta registri kontainer:
| Gambar URI dalam definisi alur kerja Anda | Peta registri |
|---|---|
|
URI hulu, dalam bentuk |
Tambahkan peta. Peta memberitahu HealthOmics awalan repositori cache mana yang termasuk dalam registri hulu mana, karena HealthOmics tidak membaca aturan cache tarik Anda. |
|
URI pribadi Amazon ECR dari repositori cache Anda, dalam bentuk |
Anda tidak perlu peta. HealthOmics menggunakan setiap URI seperti yang diberikan. |
Nama gambar yang ditulis tanpa host registri adalah nama pendek Docker Hub, yang dihitung sebagai URI hulu dan membutuhkan peta.
Jika definisi Anda menggunakan kedua jenis URI, tambahkan peta untuk gambar yang menggunakan URI hulu.
penting
Dengan URI hulu, StartRun berhasil bahkan jika peta hilang atau tidak memiliki pemetaan untuk registri hulu gambar. HealthOmics memvalidasi setiap gambar saat membuat tugas yang menggunakannya, sehingga proses gagal setelah dimulai. Kedua kasus memberikan alasan kegagalan INVALID_ECR_IMAGE_URI, dan pesan status run membedakan mereka. Pemetaan yang menyelesaikan gambar ke repositori cache yang tidak ada malah memberikan ECR_REPOSITORY_TIDAK_DITEMUKAN.
Cerminkan aturan cache tarik melalui Anda di pemetaan: set upstreamRegistryUrl ke URL registri hulu aturan, ecrRepositoryPrefix ke awalan repositori cache-nya, dan upstreamRepositoryPrefix ke awalan repositori hulu jika aturan menggunakannya.
Jika repositori cache Anda berada di tempat yang berbeda Akun AWS dari alur kerja, atur ecrAccountId ke akun yang memiliki repositori cache, dan menambahkan kebijakan lintas akun yang dijelaskan di Kebijakan untuk akses Amazon ECR lintas akun. ecrAccountId default ke akun alur kerja sendiri.
catatan
Untuk Docker Hub, atur upstreamRegistryUrl kepada registry-1.docker.io, nilai dalam Prasyarat. HealthOmics memperlakukan registry-1.docker.io dan docker.io sebagai host yang sama, sehingga satu pemetaan juga mencakup URI gambar yang ditulis dengan docker.io.
HealthOmics juga memperluas nama Docker Hub pendek sebelum cocok dengan pemetaan: ubuntu:22.04 menjadi docker.io/library/ubuntu:22.04, dan myorg/image:tag menjadi docker.io/myorg/image:tag. HealthOmics menyisipkan library/ hanya jika nama gambar dalam definisi Anda tidak memiliki garis miring. Nama yang diperluas juga menentukan jalur repositori cache, jadi ubuntu:22.04 memutuskan untuk di registri pribadi Anda.ecr-repository-prefix/library/ubuntu:22.04
Anda menyediakan peta saat Anda membuat alur kerja atau versi alur kerja. Untuk format peta dan aturan yang menentukan pemetaan mana yang dibutuhkan alur kerja Anda, lihat Pemetaan registri. Untuk pemetaan gambar, lihat Pemetaan gambar. Setelah Anda menambahkan peta, lanjutkan ke Langkah 5: Memverifikasi konfigurasi cache tarik melalui.
Langkah 5: Memverifikasi konfigurasi cache tarik melalui
Jalankan aws ecr perintah di akun yang memiliki repositori cache, karena get-registry-policy dan describe-repository-creation-templates selalu baca registri akun panggilan, dan jalankan aws omics perintah di akun yang memiliki alur kerja. Gunakan Wilayah tempat Anda menjalankan alur kerja untuk keduanya. Tiga pemeriksaan dalam prosedur berikut ini independen, jadi jalankan semuanya dan kumpulkan setiap masalah sebelum Anda kembali untuk memperbaikinya. Pemeriksaan peta registri setelah prosedur berlaku setelah Anda membuat versi alur kerja atau alur kerja, seperti yang dijelaskan dalam Menambahkan wadah pribadi atau pihak ketiga selama pembuatan alur kerja. Pemeriksaan ujung ke ujung setelah itu juga membutuhkan proses yang dimulai.
-
Konfirmasikan bahwa aturan pull through cache ada dan menunjuk ke registri hulu yang diharapkan:
aws ecr describe-pull-through-cache-rules \ --regionregionSetiap aturan yang Anda buat muncul dengan
ecrRepositoryPrefixdanupstreamRegistryUrl. Aturan yang menetapkan awalan repositori hulu juga menunjukkanupstreamRepositoryPrefix, dan aturan yang menggunakan kredensi juga menunjukkancredentialArn; Amazon ECR menghilangkan masing-masing bidang tersebut ketika aturan tidak mengaturnya. KosongpullThroughCacheRulesdaftar berarti tidak ada aturan di Wilayah ini. Kembali ke Langkah 1: Membuat aturan pull through cache.Jika aturan menggunakan kredensi, konfirmasikan juga bahwa Amazon ECR dapat membaca rahasia dan masuk ke registri hulu:
aws ecr validate-pull-through-cache-rule \ --ecr-repository-prefixecr-repository-prefix\ --regionregionOutputnya meliputi
"isValid": trueketika otentikasi berhasil, dan sebaliknya menyebutkan alasannyafailure. Jika perintah gagal denganPullThroughCacheRuleNotFoundException, tidak ada aturan yang menggunakan awalan itu. SebuahAccessDeniedExceptionberarti penelepon Anda tidak memilikiecr:ValidatePullThroughCacheRuleizin, yang tidak selalu disertakan oleh kebijakan baca-saja, bukan berarti aturannya salah. Untuk informasi lebih lanjut, lihat Memvalidasi aturan tarik melalui cache di Panduan Pengguna Registri Kontainer Elastis Amazon. -
Konfirmasikan bahwa kebijakan registri memberikan HealthOmics akses:
aws ecr get-registry-policy \ --regionregionpolicyTextnilai dalam output, yang dikembalikan Amazon ECR JSON-escaped, harus berisi pernyataan dari Langkah 2: Menyiapkan izin untuk registri hulu, memberikanomics.amazonaws.comkedua-duanyaecr:CreateRepositorydanecr:BatchImportUpstreamImage, secara individual atau melalui wildcard, dan mencakup setiap awalan repositori cache yang Anda buat. Awalan dicakup olehResourceentri yang cocok dengan repositori cache di bawahnya, seperti repositori ARN yang diakhiri dengan awalan diikuti oleh/*, repositori ARN yang diakhiri dengan/*sendirian, atauResourcedari*. ARN yang berakhir pada awalan itu sendiri, tanpa/*, tidak mencakup apa pun: nama repositori cache selalu memiliki jalur di bawah awalan. ARN yang menamai Wilayah atau Akun AWS selain registri ini sendiri tidak mencakup apa pun, seperti yang dijelaskan dalam Langkah 2: Menyiapkan izin untuk registri hulu. Jika tidak ada pernyataan yang mencakup awalan, atau jika perintah gagal denganRegistryPolicyNotFoundException, kembali ke Langkah 2: Menyiapkan izin untuk registri hulu dan pastikan bahwa Anda menyimpan kebijakan. -
Konfirmasikan bahwa template pembuatan repositori ada untuk setiap awalan repositori cache. Berikan semua awalan yang Anda buat:
aws ecr describe-repository-creation-templates \ --prefixesecr-repository-prefix-1ecr-repository-prefix-2\ --regionregionUntuk setiap awalan, template yang diterapkan Amazon ECR ke repositori cache-nya - diidentifikasi dalam paragraf berikutnya - harus memiliki
PULL_THROUGH_CACHEdiappliedFordanrepositoryPolicyyang memberikanomics.amazonaws.comTindakan tarik dari Langkah 3: Membuat template repositori,ecr:BatchGetImagedanecr:GetDownloadUrlForLayer. Kebijakan yang tidak kosong tidak cukup: konfirmasikan prinsipal serta tindakannya.Amazon ECR menerapkan template yang awalannya cocok terpanjang untuk repositori, atau
ROOTtemplate jika tidak ada awalan yang cocok. Jalankan perintah tanpa--prefixesuntuk melihat setiap template, karena--prefixescocok dengan setiap awalan persis daripada dengan jalur, jadi tidak adaROOTtemplate atau template pada awalan yang lebih panjang muncul di output yang difilter. Kembali ke langkah itu untuk awalan apa pun yang templat yang berlakunya hilang atau gagal dalam salah satu persyaratan.imageTagMutabilityTidak mempengaruhi apakah HealthOmics dapat menarik gambar, tetapi template yang mengaturnya ke apa pun selainMUTABLEmenghentikan Amazon ECR menyegarkan gambar yang di-cache saat tag upstream bergerak, seperti yang dijelaskan dalam Langkah 3: Membuat template repositori.Jika ada repositori cache sebelum Anda membuat template, konfirmasikan juga kebijakan repositori pada masing-masing repositori tersebut, seperti yang dijelaskan dalam Memperbarui repositori yang dibuat sebelum template.
Jika definisi Anda menggunakan URI hulu, konfirmasikan peta registri yang Anda tambahkan Langkah 4: Menambahkan peta registri kontainer (jika alur kerja Anda menggunakan URI hulu). Peta milik alur kerja atau versi alur kerja yang Anda berikan, jadi periksa yang digunakan saat menjalankan: versi yang Anda berikan sebagai --workflow-version-name kepada start-run, atau alur kerja jika proses Anda tidak menyebutkan namanya. Untuk lari yang sudah ada, workflowVersionName di get-run output menamai versinya.
Untuk alur kerja:
aws omics get-workflow \ --idworkflow-id\ --regionregion
Untuk versi alur kerja:
aws omics get-workflow-version \ --workflow-idworkflow-id\ --version-nameversion-name\ --regionregion
Periksa containerRegistryMap nilai dalam output. Jika tidak memiliki peta, respons menghilangkan bidang. Konfirmasikan itu status adalah ACTIVE: jika masih CREATING, tunggu dan coba lagi, dan jika ya FAILED, alasannya ada di statusMessage. Anda tidak dapat mengubah peta di tempatnya, jadi jika tidak ada atau salah, buat versi alur kerja baru seperti yang dijelaskan di Re-running konfigurasi.
Untuk mengonfirmasi ujung ke ujung bahwa proses menggunakan gambar yang di-cache, baca hasil dari proses yang menggunakan cache. Proses yang telah selesai berfungsi, termasuk yang gagal, tetapi proses yang dibatalkan mungkin tidak pernah menyelesaikan gambarnya; mulai menjalankan hanya jika Anda belum memilikinya:
aws omics get-run \ --idrun-id\ --regionregion
resourceDigests bidang dalam output, ketika run melaporkannya, merekam sumber daya yang diselesaikan dijalankan, termasuk gambar wadahnya. Entri yang kuncinya adalah URI pribadi Amazon ECR di bawah awalan repositori cache Anda, dengan sha256 mencerna sebagai nilainya, mengonfirmasi bahwa proses menyelesaikan gambar itu ke cache Anda. Ini adalah pemeriksaan tercepat, dan berfungsi bahkan untuk proses yang gagal karena alasan yang tidak terkait.
Jika lari berhenti tanpa berhasil, failureReason dan statusMessage bersama-sama memberi tahu Anda apakah konfigurasi ini terlibat. Periksa ini sebelum Anda melihat tugas run, karena proses yang gagal pada gambar mungkin tidak membuat tugas sama sekali:
-
ECR_REPOSITORY_TIDAK_DITEMUKAN,ECR_IMAGE_TIDAK_DITEMUKANatauECR_PERMISSION_ERRORuntuk URI gambar di bawah salah satu awalan repositori cache Anda - lanjutkan ke Pemecahan masalah tarik melalui cache. Salah satu alasan untuk URI yang tidak berada di bawah salah satu awalan Anda adalah masalah Amazon ECR dengan repositori itu daripada masalah cache tarik melalui, karena tidak ada aturan cache yang berlaku untuknya. Untuk repositori yang Anda kelola sendiri di Amazon ECR, berikan HealthOmics akses dengan kebijakan repositori, seperti yang dijelaskan dalam Buat kebijakan sumber daya untuk repositori Amazon ECR. -
INVALID_ECR_IMAGE_URI- peta registri hilang, tidak memiliki pemetaan untuk registri hulu gambar,upstreamRepositoryPrefixtidak mencakup jalur gambar, atau URI gambar tidak valid. Baca pesan status untuk membedakannya, dan periksa URI sebelum Anda mengubah peta. Lihat Langkah 4: Menambahkan peta registri kontainer (jika alur kerja Anda menggunakan URI hulu). -
TIDAK DAPAT_MEMULAI_KONTAINER_ERRORatauGAGAL_VERIFIKASI_GAMBARuntuk URI gambar di bawah salah satu awalan Anda — gambar mencapai repositori cache Anda tetapi tugas tidak dapat menggunakannya. Jika Anda mengubah atau membuat ulang aturan cache, gambar cache basi dapat menyebabkan ini; lihat Mengubah aturan cache saat proses aktif. Jika tidak, gambar yang di-cache itu sendiri adalah masalah daripada konfigurasi ini, dan gambar hulu atau tugas yang menggunakannya adalah tempat untuk mencari. -
Alasan kegagalan lainnya, atau tidak sama sekali sebagai laporan run yang dibatalkan - proses berhenti karena alasan yang tidak terkait dengan konfigurasi ini. Untuk status run dan alasan kegagalan lainnya, lihat Dapatkan informasi lari dan Jalankan alasan kegagalan.
Tidak setiap laporan lari resourceDigests, dan proses yang belum menyelesaikan gambarnya belum memiliki entri untuk mereka. Jika bidang atau entri hilang, atau jika Anda ingin mengonfirmasi gambar mana yang ditarik tugas individual, daftarkan tugas yang dijalankan:
aws omics list-run-tasks \ --idrun-id\ --regionregion
Kosong items daftar lari yang masih berjalan berarti HealthOmics belum membuat tugas, jadi tunggu dan daftarkan lagi. Saat menjalankan yang telah berhenti, itu berarti bahwa tidak ada tugas yang pernah dibuat: untuk menjalankan yang gagal, alasan kegagalan sebelumnya menjelaskan alasannya, dan proses yang dibatalkan sebelum dimulai tidak memiliki apa pun untuk dikonfirmasi, jadi gunakan run yang berbeda. Jika tidak, ambil detail gambar untuk salah satu tugas, menggunakan taskId dari output sebelumnya:
aws omics get-run-task \ --idrun-id\ --task-idtask-id\ --regionregion\ --query imageDetails
Dalam imageDetails, sourceImage adalah URI gambar dari definisi alur kerja Anda, dan image adalah URI pribadi Amazon ECR yang ditarik oleh tugas tersebut. Sebuah image nilai di bawah awalan repositori cache Anda, dalam bentuk Private-URI yang ditampilkan di Langkah 4: Menambahkan peta registri kontainer (jika alur kerja Anda menggunakan URI hulu) dan mungkin dengan ringkasan gambar ditambahkan, mengonfirmasi bahwa tugas tersebut menggunakan cache tarik melalui Anda. imageDetails bisa kosong, untuk tugas yang belum menarik gambarnya dan untuk beberapa tugas yang sudah selesai. Tugas tanpa detail gambar yang direkam juga tidak ada di log manifes run, jadi periksa tugas lain dari proses yang sama. Jika tidak ada tugas dalam proses selesai yang merekamnya, Anda masih dapat mengonfirmasi bahwa gambar di-cache, seperti yang dijelaskan dalam Menyelesaikan kebijakan registri yang hilang atau tidak lengkap. Itu mengkonfirmasi konfigurasi daripada gambar mana yang ditarik tugas tertentu, karena proses sebelumnya mungkin telah mengisi cache.
Setelah proses selesai, log manifes run-nya mengulangi informasi gambar ini, sehingga Anda dapat memeriksa tugas run sekaligus alih-alih memanggil get-run-task untuk masing-masing. Dalam setiap catatan tugas, bidang bernama originalImage sesuai dengan sourceImage di sini, dan image adalah nilai yang sama seperti di atas. Untuk tempat menemukan log, lihat Pemantauan HealthOmics bersama CloudWatch Log, dan untuk catatan tugas lainnya, lihat Dapatkan informasi lari.
Setelah mengonfigurasi pull through cache, Anda dapat membuat alur kerja atau versi alur kerja baru untuk menggunakan wadah dari registri yang dikonfigurasi. Untuk informasi selengkapnya, lihat Menambahkan wadah pribadi atau pihak ketiga selama pembuatan alur kerja.
Re-running konfigurasi
Anda dapat mengulangi langkah-langkah ini, misalnya untuk menambahkan awalan atau untuk memperbaiki kebijakan. Perintah create gagal dengan kode keluar bukan nol ketika sumber daya sudah ada, tanpa mengubahnya. put-registry-policy tidak gagal, tetapi menggantikan seluruh kebijakan registri, seperti yang dijelaskan dalam Langkah 2: Menyiapkan izin untuk registri hulu.
-
Tarik melalui aturan cache - create-pull-through-cache-rule gagal dengan
PullThroughCacheRuleAlreadyExistsException. Jika registri yang Anda tambahkan memerlukan otentikasi, buat rahasia Manajer Rahasianya terlebih dahulu, seperti yang dijelaskan di Prasyarat. -
Kebijakan izin registri - tambahkan
Resourceentri untuk setiap awalan repositori cache baru, seperti yang dijelaskan dalam Langkah 2: Menyiapkan izin untuk registri hulu; kebijakan yang menyebutkan awalan secara individual tidak akan mencakup yang baru. Konfirmasikan cakupan dengan get-registry-policy, seperti yang dijelaskan dalam Langkah 5: Memverifikasi konfigurasi cache tarik melalui. -
Template pembuatan repositori - buat template untuk awalan repositori cache yang tidak memilikinya, dan memperbarui template yang ada untuk mengubah awalan yang sudah memilikinya, keduanya seperti yang dijelaskan dalam Langkah 3: Membuat template repositori. Menjalankan pembaruan terhadap template awalan lain akan mengganti template itu. Untuk memperbarui repositori yang sudah dibuat Amazon ECR, lihat Memperbarui repositori yang dibuat sebelum template.
-
Peta registri kontainer — Anda menyediakan peta saat Anda membuat alur kerja atau versi alur kerja, dan update-workflow dan update-workflow-version tidak bisa mengubahnya. Sebelum Anda membuat versi, siapkan peta lengkap: versi baru tidak mewarisi peta versi sebelumnya, jadi daftarkan setiap pemetaan yang masih dibutuhkan alur kerja, bukan hanya yang baru. create-workflow-version mengambil seluruh versi daripada hanya peta, jadi Anda juga memerlukan definisi alur kerja dan parameter versi lainnya, seperti yang dijelaskan di Buat versi alur kerja. Kemudian buat versi dengan peta yang diperbarui, seperti yang dijelaskan di Langkah 4: Menambahkan peta registri kontainer (jika alur kerja Anda menggunakan URI hulu), dan mulai menjalankan Anda terhadap versi itu. Proses yang tidak memberi nama versi menggunakan versi default alur kerja, yang menyimpan peta yang dibuat dengannya, sehingga gagal dengan cara yang sama seperti sebelumnya. Untuk informasi selengkapnya, lihat Versi alur kerja default.
Pemecahan masalah tarik melalui cache
Masalah konfigurasi berikut menyebabkan proses gagal saat Anda menggunakan kontainer dari pull through cache. Jika definisi alur kerja Anda menggunakan URI gambar hulu dan proses gagal dengan INVALID_ECR_IMAGE_URI, mulai dengan peta registri, seperti yang dijelaskan di Langkah 4: Menambahkan peta registri kontainer (jika alur kerja Anda menggunakan URI hulu). Untuk alasan kegagalan menjalankan lainnya, lihat Jalankan alasan kegagalan.
Jalankan aws ecr perintah di bagian ini di akun yang sama seperti di Langkah 5: Memverifikasi konfigurasi cache tarik melalui, atau lulus --registry-id
. Gunakan nama repositori persis seperti describe-repositories mengembalikannya: nama repositori cache adalah awalan repositori cache diikuti oleh jalur repositori hulu, yang untuk nama pendek Docker Hub menyertakan ecr-account-idlibrary/ Segmen yang dijelaskan dalam Langkah 4: Menambahkan peta registri kontainer (jika alur kerja Anda menggunakan URI hulu).
Menyelesaikan kebijakan registri yang hilang atau tidak lengkap
Gejala—Jalankan gagal untuk URI gambar dengan salah satu alasan kegagalan berikut:
-
ECR_REPOSITORY_TIDAK_DITEMUKAN— repositori cache tidak ada di registri pribadi Anda. -
ECR_IMAGE_TIDAK_DITEMUKAN— repositori cache ada, tetapi gambar tidak pernah diimpor ke dalamnya. -
ECR_PERMISSION_ERROR— Amazon ECR menolak akses.
Jika repositori cache hilang, perintah berikut tidak mengembalikan repositori untuk awalan:
aws ecr describe-repositories \ --regionregion\ --query "repositories[?starts_with(repositoryName, 'ecr-repository-prefix/')]"
Hasil kosong untuk awalan yang belum ditarik dari mana pun diharapkan dan bukan masalah konfigurasi dengan sendirinya. Ketika proses gagal untuk URI gambar, repositori yang hilang biasanya berarti Amazon ECR tidak dapat membuatnya. Jika repositori ada, konfirmasikan apakah gambar mencapainya:
aws ecr describe-images \ --repository-namecache-repository-name\ --image-ids imageTag=tag\ --regionregion
Gambar yang dikembalikan berarti tag di-cache. ImageNotFoundException berarti repositori ada tetapi tag itu tidak ada di dalamnya, dan RepositoryNotFoundException berarti bahwa nama repositori salah atau belum ada yang melewati awalan. Lulus --image-ids: tanpa itu, perintah melaporkan setiap tag di repositori, sehingga kehadiran tag lain dapat terlihat seperti sukses untuk tag yang Anda butuhkan.
Menyebabkan—Kebijakan registri tidak memberikan HealthOmics apa yang dibutuhkan: tidak ada kebijakan, kebijakan kehilangan tindakan, atau Resource daftar tidak mencakup awalan cache ini.
SolusiMenambahkan atau memperbaiki kebijakan registri seperti yang dijelaskan dalam Langkah 2: Menyiapkan izin untuk registri hulu, dan konfirmasikan seperti yang dijelaskan dalam Langkah 5: Memverifikasi konfigurasi cache tarik melalui. Jika kebijakan registri sudah mencakup awalan repositori cache, kebijakan registri tidak menjadi masalah. Untuk ECR_IMAGE_TIDAK_DITEMUKAN, di mana repositori ada tetapi gambar tidak pernah tiba, impor hulu gagal: konfirmasikan kredentif aturan dengan validate-pull-through-cache-rule, seperti yang dijelaskan dalam Langkah 5: Memverifikasi konfigurasi cache tarik melalui. Untuk ECR_PERMISSION_ERROR pada repositori yang ada, lanjutkan ke Menyelesaikan template pembuatan repositori atau kebijakan repositori yang hilang. Kemudian mulai lari lagi.
Menyelesaikan template pembuatan repositori atau kebijakan repositori yang hilang
Gejala—Repositori cache ada dengan gambar yang diimpor, dan proses masih gagal dengan ECR_PERMISSION_ERROR untuk URI gambar.
Menyebabkan—Tidak ada template pembuatan repositori yang cocok dengan awalan repositori cache, template tidak termasuk PULL_THROUGH_CACHE di appliedFor, atau template tidak memiliki kebijakan repositori. Oleh karena itu repositori tidak memiliki kebijakan yang memungkinkan HealthOmics tarik dari itu.
Solusi—Buat atau perbarui template seperti yang dijelaskan dalam Langkah 3: Membuat template repositori. Karena repositori sudah ada, terapkan juga kebijakan untuk mereka, seperti yang dijelaskan dalam Memperbarui repositori yang dibuat sebelum template.
Memperbarui repositori yang dibuat sebelum template
Gejala—Anda membuat atau mengoreksi template pembuatan repositori, describe-repository-creation-templates menunjukkannya sebagai benar, dan proses masih gagal dengan kesalahan akses Amazon ECR untuk gambar yang sama. Konfirmasikan kebijakan yang hilang pada repositori yang terpengaruh:
aws ecr get-repository-policy \ --repository-namecache-repository-name\ --regionregion
policyText Nilai harus diberikan omics.amazonaws.com setidaknya tindakan yang diberikan kebijakan repositori template. Jika repositori tidak memiliki kebijakan sama sekali, perintah gagal dengan RepositoryPolicyNotFoundException. Jika gagal dengan RepositoryNotFoundException, nama repositori salah atau repositori belum ada.
Menyebabkan—Template hanya berlaku ketika Amazon ECR membuat repositori, jadi repositori yang dibuat sebelum Anda menambahkan template tidak memiliki kebijakan repositori untuk HealthOmics.
Solusi—Perbarui repositori yang ada dengan salah satu cara berikut.
Awas
Menghapus repositori juga menghapus setiap gambar yang di-cache di dalamnya, dan Anda tidak dapat membatalkannya. Jangan menghapus repositori saat proses sedang menggunakannya.
-
Tetapkan kebijakan pada setiap repositori yang ada secara langsung. Simpan kebijakan repositori template ke file, lalu jalankan perintah berikut untuk setiap repositori yang terpengaruh:
aws ecr set-repository-policy \ --repository-namecache-repository-name\ --policy-text file://repository-policy-file.json \ --regionregion -
Hapus setiap repositori yang terpengaruh. Tarik melalui cache membuatnya kembali dari template saat tugas menarik gambar berikutnya, sehingga gambar yang di-cache tidak tersedia sampai penarikan itu selesai.
aws ecr delete-repository \ --repository-namecache-repository-name\ --force \ --regionregion
Mengubah aturan cache saat proses aktif
Gejala—Setelah Anda mengubah atau membuat ulang aturan pull through cache, proses yang sudah menggunakan repositori yang terpengaruh dapat gagal dengan TIDAK DAPAT_MEMULAI_KONTAINER_ERROR atau GAGAL_VERIFIKASI_GAMBAR, atau dapat menyelesaikan menggunakan gambar yang tidak Anda harapkan.
Menyebabkan—Awalan repositori cache sekarang diselesaikan ke repositori hulu yang berbeda, sementara proses sudah ditarik dari repositori yang dibuat oleh aturan lama.
Solusi—Tunggu proses aktif selesai sebelum Anda mengubah aturan, seperti catatan di Langkah 1: Membuat aturan pull through cache menjelaskan. Untuk mengonfirmasi gambar mana yang sebenarnya digunakan tugas, periksa imageDetails di get-run-task output, seperti yang dijelaskan dalam Langkah 5: Memverifikasi konfigurasi cache tarik melalui. Jika proses menggunakan gambar cache basi, hapus gambar itu dari repositori cache sehingga tarikan berikutnya menyegarkannya dari registri hulu.