Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Gambar kontainer untuk alur kerja pribadi
HealthOmics mendukung gambar kontainer yang dihosting di repositori pribadi Amazon ECR. Anda dapat membuat gambar kontainer dan mengunggahnya ke repositori pribadi. Anda juga dapat registri pribadi Amazon ECR Anda sebagai cache tarik melalui untuk menyinkronkan konten pendaftar hulu.
Repositori Amazon ECR Anda harus berada di AWS Wilayah yang sama dengan akun yang memanggil layanan. Yang berbeda Akun AWS dapat memiliki gambar kontainer, selama repositori gambar sumber memberikan izin yang sesuai. Untuk informasi selengkapnya, lihat Kebijakan untuk akses ECR Amazon lintas akun.
Sebaiknya tentukan image container Amazon ECR URIs sebagai parameter dalam alur kerja sehingga akses dapat diverifikasi sebelum proses dimulai. Ini juga membuatnya lebih mudah untuk menjalankan alur kerja di Wilayah baru dengan mengubah parameter Region.
catatan
HealthOmics tidak mendukung kontainer ARM dan tidak mendukung akses ke repositori publik.
Untuk informasi tentang mengonfigurasi izin IAM untuk HealthOmics mengakses Amazon ECR, lihat. HealthOmics Izin sumber daya
Topik
Sinkronisasi dengan pendaftar kontainer pihak ketiga
Anda dapat menggunakan aturan cache pull through Amazon ECR untuk menyinkronkan repositori di registri upstream yang didukung dengan repositori pribadi Amazon ECR Anda. Untuk informasi selengkapnya, lihat Menyinkronkan registri upstream di Panduan Pengguna Amazon ECR.
Pull through cache secara otomatis membuat repositori gambar di registri pribadi Anda saat Anda membuat cache, dan secara otomatis menyinkronkan dengan gambar yang di-cache ketika ada perubahan pada gambar upstream.
HealthOmics mendukung pull through cache untuk registri hulu berikut:
Amazon ECR Public
Registri gambar kontainer Kubernetes
dermaga
Hub Docker
Registri Kontainer Microsoft Azure
GitHub Registri Kontainer
GitLab Registri Kontainer
HealthOmics tidak mendukung penarikan cache untuk repositori pribadi Amazon ECR hulu.
Manfaat menggunakan Amazon ECR pull through cache 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 andal daripada mengunduh konten saat dijalankan dari registri publik.
-
Karena Amazon ECR menarik cache menggunakan struktur URI yang dapat diprediksi, HealthOmics layanan dapat secara otomatis memetakan URI pribadi Amazon ECR dengan URI registri hulu. Anda tidak perlu memperbarui dan mengganti nilai URI dalam definisi alur kerja.
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 tempat Anda berencana menjalankan alur kerja.
Bagian berikut menjelaskan tugas konfigurasi untuk pull through cache.
Tugas konfigurasi
Buat aturan cache tarik
Buat aturan cache pull through Amazon ECR untuk setiap registri upstream yang memiliki gambar yang ingin Anda cache. Aturan menentukan pemetaan antara registri upstream dan repositori pribadi Amazon ECR.
Untuk registri upstream yang memerlukan autentikasi, Anda memberikan kredensialnya menggunakan AWS Secrets Manager.
catatan
Jangan mengubah aturan pull through cache saat run aktif menggunakan repositori pribadi. Proses berjalan bisa gagal atau, yang lebih kritis, menghasilkan pipeline Anda menggunakan gambar yang tidak terduga.
Untuk informasi selengkapnya, lihat Membuat aturan cache tarik melalui di Panduan Pengguna Amazon Elastic Container Registry.
Buat aturan cache tarik menggunakan konsol
Untuk mengonfigurasi cache tarik melalui, ikuti langkah-langkah ini menggunakan konsol Amazon ECR:
-
Buka konsol Amazon ECR: https://console.aws.amazon.com /ecr
-
Dari menu kiri, di bawah Registri pribadi, perluas Fitur & Pengaturan. Lalu pilih Tarik melalui cache.
-
Dari halaman Tarik melalui cache, pilih Tambahkan aturan.
-
Di panel registri Upstream, pilih registri upstream untuk disinkronkan dengan registri pribadi Anda, lalu pilih Berikutnya.
-
Jika registri upstream memerlukan otentikasi, konsol akan membuka halaman baru tempat Anda menentukan rahasia SageMaker AI yang berisi kredensyal Anda. Pilih Berikutnya.
-
Di bawah Tentukan ruang nama, di panel namespace Cache, 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 panel namespace Upstream, pilih apakah akan menarik dari repositori upstream menggunakan awalan repositori tertentu atau tanpa awalan. Jika Anda memilih untuk menggunakan awalan, tentukan nama awalan di awalan repositori Upstream.
Panel contoh Namespace menunjukkan contoh permintaan tarik, URL hulu, dan URL repositori cache yang dibuat.
-
Pilih Berikutnya.
-
Tinjau konfigurasi dan pilih Buat untuk membuat aturan.
Untuk informasi selengkapnya, lihat Membuat aturan cache tarik (AWS Management Console).
Buat aturan cache tarik melalui menggunakan CLI
Gunakan create-pull-through-cache-rule perintah Amazon ECR untuk membuat aturan cache pull through. Untuk registrasi upstream yang memerlukan otentikasi, simpan kredensialnya dalam rahasia Secrets Manager.
Bagian berikut memberikan contoh untuk setiap registri upstream yang didukung.
Contoh berikut membuat aturan cache pull through untuk registri Publik Amazon ECR. Ini menentukan awalan repositoriecr-public
, yang menghasilkan setiap repositori yang dibuat menggunakan aturan pull through cache untuk memiliki skema penamaan. ecr-public/
upstream-repository-name
aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix
ecr-public
\ --upstream-registry-url public.ecr.aws \ --regionus-east-1
Contoh berikut membuat aturan pull through cache untuk registri publik Kubernetes. Ini menentukan awalan repositorikubernetes
, yang menghasilkan setiap repositori yang dibuat menggunakan aturan pull through cache untuk memiliki skema penamaan. kubernetes/
upstream-repository-name
aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix
kubernetes
\ --upstream-registry-url registry.k8s.io \ --regionus-east-1
Contoh berikut membuat aturan pull through cache untuk registri publik Quay. Ini menentukan awalan repositoriquay
, yang menghasilkan setiap repositori yang dibuat menggunakan aturan pull through cache untuk memiliki skema penamaan. quay/
upstream-repository-name
aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix
quay
\ --upstream-registry-url quay.io \ --regionus-east-1
Contoh berikut membuat aturan pull through cache untuk registri Docker Hub. Ini menentukan awalan repositoridocker-hub
, yang menghasilkan setiap repositori yang dibuat menggunakan aturan pull through cache untuk memiliki skema penamaan. docker-hub/
Anda harus menentukan Nama Sumber Daya Amazon (ARN) lengkap dari rahasia yang berisi kredenal Docker Hub Anda.upstream-repository-name
aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix
docker-hub
\ --upstream-registry-url registry-1.docker.io \ --credential-arn arn:aws:secretsmanager:us-east-1
:111122223333
:secret:ecr-pullthroughcache/example1234
\ --regionus-east-1
Contoh berikut membuat aturan pull through cache untuk GitHub Container Registry. Ini menentukan awalan repositorigithub
, yang menghasilkan setiap repositori yang dibuat menggunakan aturan pull through cache untuk memiliki skema penamaan. github/
Anda harus menentukan Nama Sumber Daya Amazon (ARN) lengkap dari rahasia yang berisi kredensyal Registri GitHub Penampung Anda.upstream-repository-name
aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix
github
\ --upstream-registry-url ghcr.io \ --credential-arn arn:aws:secretsmanager:us-east-1
:111122223333
:secret:ecr-pullthroughcache/example1234
\ --regionus-east-1
Contoh berikut membuat aturan pull through cache untuk Microsoft Azure Container Registry. Ini menentukan awalan repositoriazure
, yang menghasilkan setiap repositori yang dibuat menggunakan aturan pull through cache untuk memiliki skema penamaan. azure/
Anda harus menentukan Nama Sumber Daya Amazon (ARN) lengkap dari rahasia yang berisi kredensyal Microsoft Azure Container Registry Anda.upstream-repository-name
aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix
azure
\ --upstream-registry-urlmyregistry
.azurecr.io \ --credential-arn arn:aws:secretsmanager:us-east-1
:111122223333
:secret:ecr-pullthroughcache/example1234
\ --regionus-east-1
Contoh berikut membuat aturan pull through cache untuk GitLab Container Registry. Ini menentukan awalan repositorigitlab
, yang menghasilkan setiap repositori yang dibuat menggunakan aturan pull through cache untuk memiliki skema penamaan. gitlab/
Anda harus menentukan Nama Sumber Daya Amazon (ARN) lengkap dari rahasia yang berisi kredensyal Registri GitLab Penampung Anda.upstream-repository-name
aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix
gitlab
\ --upstream-registry-url registry.gitlab.com \ --credential-arn arn:aws:secretsmanager:us-east-1
:111122223333
:secret:ecr-pullthroughcache/example1234
\ --regionus-east-1
Untuk informasi selengkapnya, lihat Membuat aturan cache tarik (CLI) di Panduan Pengguna Amazon ECR.
Anda dapat menggunakan perintah get-run-task CLI untuk mengambil informasi tentang gambar kontainer yang digunakan untuk tugas tertentu:
aws omics get-run-task --id 1234567 --task-id <task_id>
Outputnya mencakup informasi berikut tentang gambar kontainer:
"imageDetails": { "image": "string", "imageDigest": "string", "sourceImage": "string", ... }
Izin registri untuk registri hulu
Gunakan izin registri HealthOmics untuk memungkinkan penggunaan cache tarik melalui dan untuk menarik gambar kontainer ke registri pribadi Amazon ECR. Tambahkan kebijakan Amazon ECR Registry ke registri yang menyediakan kontainer yang digunakan dalam proses.
Kebijakan berikut memberikan izin kepada HealthOmics layanan untuk membuat repositori dengan awalan pull through cache yang ditentukan dan untuk memulai penarikan upstream ke dalam repositori ini.
-
Dari konsol Amazon ECR, buka menu kiri, di bawah Registri pribadi, perluas izin Registry. Lalu pilih Hasilkan pernyataan.
-
Di sisi kanan atas, pilih JSON. Masukkan kebijakan yang mirip dengan berikut ini:
Templat pembuatan repositori
Untuk menggunakan pull through caching in HealthOmics, repositori Amazon ECR harus memiliki template pembuatan repositori. Template mendefinisikan pengaturan konfigurasi saat Anda atau Amazon ECR membuat repositori pribadi untuk registri upstream.
Setiap template berisi awalan namespace repositori, yang digunakan Amazon ECR untuk mencocokkan repositori baru dengan templat tertentu. Template menentukan konfigurasi untuk semua pengaturan repositori termasuk kebijakan akses berbasis sumber daya, kekekalan tag, enkripsi, dan kebijakan siklus hidup.
Untuk informasi selengkapnya, lihat Templat pembuatan repositori di Panduan Pengguna Amazon Elastic Container Registry.
Cara membuat template pembuatan repositori:
-
Dari konsol Amazon ECR, buka menu kiri, di bawah Registri pribadi, perluas Fitur dan pengaturan. Lalu pilih Template pembuatan repositori.
-
Pilih Buat templat.
-
Dalam rincian 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 ketika Anda membuat aturan PTC.
-
Pilih Berikutnya.
-
Di halaman konfigurasi pembuatan repositori, masukkan izin Repositori. Gunakan salah satu contoh pernyataan kebijakan, atau masukkan yang mirip dengan contoh berikut:
-
Secara opsional, Anda dapat menambahkan pengaturan repositori seperti kebijakan siklus hidup dan tag. Amazon ECR menerapkan aturan ini untuk semua gambar kontainer yang dibuat untuk menarik cache yang menggunakan awalan yang ditentukan.
-
Pilih Berikutnya.
-
Tinjau konfigurasi dan pilih Berikutnya.
Membuat alur kerja
Saat Anda membuat alur kerja atau alur kerja baru, tinjau pemetaan registri dan perbarui jika diperlukan. Lihat perinciannya di Buat alur kerja pribadi.
Pemetaan registri
Anda menentukan pemetaan registri untuk memetakan antara awalan di registri ECR Amazon pribadi Anda dan nama registri hulu.
Untuk informasi selengkapnya tentang pemetaan registri Amazon ECR, lihat Membuat aturan cache tarik melalui di Amazon ECR.
Contoh berikut menunjukkan pemetaan registri ke Docker Hub, Quay, dan Amazon ECR Public.
{ "registryMappings": [ { "upstreamRegistryUrl": "registry-1.docker.io", "ecrRepositoryPrefix": "docker-hub" }, { "upstreamRegistryUrl": "quay.io", "ecrRepositoryPrefix": "quay" }, { "upstreamRegistryUrl": "public.ecr.aws", "ecrRepositoryPrefix": "ecr-public" } ] }
Pemetaan gambar
Anda menentukan pemetaan gambar untuk memetakan antara nama gambar seperti yang didefinisikan dalam alur kerja Amazon ECR pribadi Anda dan nama gambar di registri hulu.
Anda dapat menggunakan pemetaan gambar dengan registri yang mendukung penarikan cache. Anda juga dapat menggunakan pemetaan gambar dengan registri hulu yang HealthOmics tidak mendukung penarikan cache. Anda perlu menyinkronkan registri hulu secara manual dengan repositori pribadi Anda.
Untuk informasi selengkapnya tentang pemetaan gambar Amazon ECR, lihat Membuat aturan cache tarik melalui di Amazon ECR.
Contoh berikut menunjukkan pemetaan dari gambar ECR Amazon pribadi ke gambar genomik publik dan gambar Ubuntu terbaru.
{ "imageMappings": [ { "sourceImage": "public.ecr.aws/aws-genomics/broadinstitute/gatk:4.6.0.2", "destinationImage": "123456789012.dkr.ecr.us-east-1.amazonaws.com/broadinstitute/gatk:4.6.0.2" }, { "sourceImage": "ubuntu:latest", "destinationImage": "123456789012.dkr.ecr.us-east-1.amazonaws.com/custom/ubuntu:latest", } ] }
Pertimbangan umum untuk gambar kontainer Amazon ECR
-
Arsitektur
HealthOmics mendukung wadah x86_64. Jika mesin lokal Anda berbasis ARM, seperti Apple Mac, gunakan perintah seperti berikut ini untuk membuat image container x86_64:
docker build --platform amd64 -t my_tool:latest .
-
Entrypoint dan shell
HealthOmics mesin alur kerja menyuntikkan skrip bash sebagai penggantian perintah ke gambar kontainer yang digunakan oleh tugas alur kerja. Dengan demikian, gambar kontainer harus dibangun tanpa ENTRYPOINT yang ditentukan sehingga shell bash adalah default.
-
Jalur yang dipasang
Sistem file bersama dipasang ke tugas kontainer di /tmp. Setiap data atau perkakas yang dibangun ke dalam gambar kontainer di lokasi ini akan diganti.
Definisi alur kerja tersedia untuk tugas melalui mount hanya-baca di /mnt/workflow.
-
Ukuran gambar
Lihat HealthOmics alur kerja kuota ukuran tetap untuk ukuran gambar kontainer maksimum.
Variabel lingkungan untuk HealthOmics alur kerja
HealthOmics menyediakan variabel lingkungan yang memiliki informasi tentang alur kerja yang berjalan di wadah. Anda dapat menggunakan nilai variabel-variabel ini dalam logika tugas alur kerja Anda.
Semua variabel HealthOmics alur kerja dimulai dengan AWS_WORKFLOW_
awalan. Awalan ini adalah awalan variabel lingkungan yang dilindungi. Jangan gunakan awalan ini untuk variabel Anda sendiri dalam wadah alur kerja.
HealthOmics menyediakan variabel lingkungan alur kerja berikut:
- AWS_REGION
-
Variabel ini adalah wilayah tempat penampung berjalan.
- AWS_WORKFLOW_JALANKAN
-
Variabel ini adalah nama run saat ini.
- AWS_WORKFLOW_RUN_ID
-
Variabel ini adalah pengidentifikasi run dari run saat ini.
- AWS_WORKFLOW_RUN_UUID
-
Variabel ini adalah UUID run dari run saat ini.
- AWS_WORKFLOW_TUGAS
-
Variabel ini adalah nama tugas saat ini.
- AWS_WORKFLOW_TASK_ID
-
Variabel ini adalah pengidentifikasi tugas dari tugas saat ini.
- AWS_WORKFLOW_TUGAS_UUID
-
Variabel ini adalah tugas UUID dari tugas saat ini.
Contoh berikut menunjukkan nilai-nilai khas untuk setiap variabel lingkungan:
AWS Region: us-east-1 Workflow Run: arn:aws:omics:us-east-1:123456789012:run/6470304 Workflow Run ID: 6470304 Workflow Run UUID: f4d9ed47-192e-760e-f3a8-13afedbd4937 Workflow Task: arn:aws:omics:us-east-1:123456789012:task/4192063 Workflow Task ID: 4192063 Workflow Task UUID: f0c9ed49-652c-4a38-7646-60ad835e0a2e
Menggunakan Java di gambar kontainer Amazon ECR
Jika tugas alur kerja menggunakan aplikasi Java seperti GATK, pertimbangkan persyaratan memori berikut untuk wadah:
-
Aplikasi Java menggunakan memori tumpukan dan memori heap. Secara default, memori heap maksimum adalah persentase dari total memori yang tersedia dalam wadah. Default ini tergantung pada distribusi JVM tertentu dan versi JVM, jadi konsultasikan dokumentasi yang relevan untuk JVM Anda atau secara eksplisit atur memori heap maksimum menggunakan opsi baris perintah Java (seperti `-Xmx`).
-
Jangan mengatur memori heap maksimum menjadi 100% dari alokasi memori kontainer, karena tumpukan JVM juga membutuhkan memori. Memori juga diperlukan untuk pengumpul sampah JVM dan proses sistem operasi lainnya yang berjalan di wadah.
-
Beberapa aplikasi Java, seperti GATK, dapat menggunakan pemanggilan metode asli atau pengoptimalan lain seperti file pemetaan memori. Teknik-teknik ini memerlukan alokasi memori yang dilakukan “off heap”, yang tidak dikendalikan oleh parameter heap maksimum JVM.
Jika Anda tahu (atau mencurigai) bahwa aplikasi Java Anda mengalokasikan memori off-heap, pastikan alokasi memori tugas Anda mencakup persyaratan memori off-heap.
Jika alokasi off-heap ini menyebabkan wadah kehabisan memori, Anda biasanya tidak akan melihat OutOfMemory kesalahan Java, karena JVM tidak mengontrol memori ini.
Tambahkan input tugas ke gambar wadah Amazon ECR
Tambahkan semua executable, library, dan skrip yang diperlukan untuk menjalankan tugas alur kerja ke dalam image Amazon ECR yang digunakan untuk menjalankan tugas.
Ini adalah praktik terbaik untuk menghindari penggunaan skrip, binari, dan pustaka yang berada di luar gambar wadah tugas. Hal ini sangat penting ketika menggunakan nf-core
alur kerja yang menggunakan bin
direktori sebagai bagian dari paket alur kerja. Sementara direktori ini akan tersedia untuk tugas alur kerja, itu dipasang sebagai direktori read-only. Sumber daya yang diperlukan dalam direktori ini harus disalin ke dalam gambar tugas dan tersedia saat runtime atau saat membuat gambar kontainer yang digunakan untuk tugas tersebut.
Lihat HealthOmics alur kerja kuota ukuran tetap untuk ukuran maksimum gambar kontainer yang HealthOmics mendukung.