Gambar kontainer di Amazon ECR untuk alur kerja pribadi - AWS HealthOmics

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Gambar kontainer di Amazon ECR untuk alur kerja pribadi

Sebelum membuat alur kerja pribadi, Anda membuat gambar kontainer untuk alur kerja Anda. Anda mengunggah gambar ke repositori gambar pribadi di Amazon Elastic Container Registry (Amazon ECR). Saat Anda menjalankan alur kerja, HealthOmics layanan mengakses kontainer yang Anda sediakan.

Gambar kontainer Amazon ECR repositori 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 repositori Amazon Elastic Container Registry untuk alur kerja bersama.

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. Izin Sumber Daya

Pertimbangan umum untuk gambar kontainer Amazon ECR

  • Arsitektur

    HealthOmics mendukung kontainer x86_64. Jika mesin lokal Anda berbasis ARM, seperti Apple Mac), gunakan perintah seperti berikut ini untuk membuat image kontainer 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 kontainer 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.