

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

# Membuat alur kerja pribadi di HealthOmics
<a name="workflows-setup"></a>

*Alur kerja pribadi* bergantung pada berbagai sumber daya yang Anda buat dan konfigurasikan sebelum membuat alur kerja:
+ **Workflow definition file:**File definisi alur kerja yang ditulis dalamWDL,Nextflow, atauCWL. Definisi alur kerja menentukan input dan output untuk menjalankan yang menggunakan alur kerja. Ini juga mencakup spesifikasi untuk menjalankan dan menjalankan tugas untuk alur kerja Anda, termasuk persyaratan komputasi dan memori. File definisi alur kerja harus dalam `.zip` format. Untuk informasi selengkapnya, lihat [File definisi alur kerja](workflow-definition-files.md).
  + Anda dapat menggunakan [Amazon Q CLI](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/what-is.html) untuk membangun dan memvalidasi file definisi alur kerja Anda di WDL, Nextflow, dan CWL. Untuk informasi selengkapnya, lihat [Contoh prompt untuk Amazon Q CLI](getting-started.md#omics-q-prompts) dan tutorial AI [HealthOmics generatif Agentic](https://github.com/aws-samples/aws-healthomics-tutorials/tree/main/generative-ai). GitHub
+ **(Optional) Parameter template file:**File template parameter yang ditulis dalam fileJSON. Buat file untuk menentukan parameter run, atau HealthOmics buat template parameter untuk Anda. Untuk informasi selengkapnya, lihat [File templat parameter untuk HealthOmics alur kerja](parameter-templates.md).
+ **Amazon ECR container images:**Buat repositori Amazon ECR pribadi untuk alur kerja. Buat gambar kontainer di repositori pribadi, atau sinkronkan konten registri upstream yang didukung dengan repositori pribadi Amazon ECR Anda.
+ **(Optional) Sentieon licenses:**Minta Sentieon lisensi untuk menggunakan Sentieon perangkat lunak dalam alur kerja pribadi.

Secara opsional, Anda dapat menjalankan linter pada definisi alur kerja sebelum atau setelah Anda membuat alur kerja. **linter**Topik ini menjelaskan linter yang tersedia di HealthOmics.

**Topics**
+ [HealthOmics integrasi alur kerja dengan repositori berbasis Git](workflows-git-integration.md)
+ [File definisi alur kerja di HealthOmics](workflow-definition-files.md)
+ [File template parameter untuk HealthOmics alur kerja](parameter-templates.md)
+ [Gambar kontainer untuk alur kerja pribadi](workflows-ecr.md)
+ [HealthOmics Alur kerja file README](workflows-readme.md)
+ [Meminta lisensi Sentieon untuk alur kerja pribadi](private-workflows-subscribe.md)
+ [Linter alur kerja di HealthOmics](workflows-linter.md)
+ [HealthOmics operasi alur kerja](creating-private-workflows.md)

# HealthOmics integrasi alur kerja dengan repositori berbasis Git
<a name="workflows-git-integration"></a>

Saat membuat alur kerja (atau versi alur kerja), Anda memberikan definisi alur kerja untuk menentukan informasi tentang alur kerja, proses, dan tugas. HealthOmics dapat mengambil definisi alur kerja sebagai arsip.zip (disimpan secara lokal atau dalam bucket Amazon S3), atau dari repositori berbasis Git yang didukung.

 HealthOmics Integrasi dengan repositori berbasis Git memungkinkan kemampuan berikut:
+ Pembuatan alur kerja langsung dari instans publik, pribadi, dan yang dikelola sendiri.
+ Integrasi file README alur kerja dan templat parameter dari repositori.
+ Support untuk GitHub, GitLab, dan repositori Bitbucket.

Dengan menggunakan repositori berbasis Git, Anda menghindari langkah-langkah manual mengunduh file definisi alur kerja dan memasukkan file template parameter, membuat arsip.zip, dan kemudian mementaskan arsip ke S3. Ini menyederhanakan pembuatan alur kerja untuk skenario seperti contoh berikut:

1. Anda ingin memulai dengan cepat menggunakan alur kerja open source umum, seperti nf-core. HealthOmicssecara otomatis mengambil semua definisi alur kerja dan memasukkan file template parameter dari repositori nf-core GitHub dan menggunakan file-file ini untuk membuat alur kerja baru Anda.

1. Anda menggunakan alur kerja publik dari GitHub, dan beberapa pembaruan baru tersedia. Anda dapat dengan mudah membuat versi HealthOmics alur kerja baru menggunakan definisi alur kerja yang diperbarui GitHub sebagai sumbernya. Pengguna alur kerja Anda dapat memilih antara alur kerja asli atau versi alur kerja baru yang Anda buat.

1. Tim Anda sedang membangun pipa berpemilik yang tidak bersifat publik. Anda menyimpan kode Anda di repositori git pribadi dan menggunakan definisi alur kerja ini untuk alur kerja Anda. HealthOmics Tim sering memperbarui definisi alur kerja sebagai bagian dari siklus hidup pengembangan alur kerja berulang. Anda dapat dengan mudah membuat versi alur kerja baru seperti yang diperlukan dari repositori pribadi Anda.

**Topics**
+ [Repositori berbasis Git yang didukung](#workflows-git-supported)
+ [Konfigurasikan koneksi ke repositori kode eksternal](#workflows-git-connections)
+ [Mengakses repositori yang dikelola sendiri](#workflows-git-self-managed)
+ [Kuota yang terkait dengan repositori kode eksternal](#workflows-git-quotas)
+ [Izin IAM yang diperlukan](#workflows-git-permissions)

## Repositori berbasis Git yang didukung
<a name="workflows-git-supported"></a>

HealthOmics mendukung repositori publik dan pribadi untuk penyedia berbasis Git berikut:
+ GitHub 
+ GitLab 
+ Bitbucket 

HealthOmics mendukung repositori yang dikelola sendiri untuk penyedia berbasis Git berikut:
+ GitHubEnterpriseServer 
+ GitLabSelfManaged 

HealthOmics mendukung penggunaan koneksi lintas akun untuk GitHub, GitLab, dan Bitbucket. Siapkan izin bersama melalui AWS Resource Access Manager. Sebagai contoh, lihat [Koneksi bersama](https://docs.aws.amazon.com/codepipeline/latest/userguide/connections-shared.html) dalam *panduan CodePipeline pengguna*.

## Konfigurasikan koneksi ke repositori kode eksternal
<a name="workflows-git-connections"></a>

Hubungkan alur kerja Anda ke repositori berbasis Git menggunakan AWS. CodeConnection HealthOmics menggunakan koneksi ini untuk mengakses repositori kode sumber Anda.

**catatan**  
 CodeConnections Layanan AWS tidak tersedia di wilayah il-central-1. Untuk wilayah ini, konfigurasikan layanan us-east-1 untuk membuat alur kerja atau versi alur kerja dari repositori. 

### Buat koneksi
<a name="workflows-git-connection-create"></a>

Sebelum Anda dapat membuat koneksi, ikuti petunjuk dalam [Menyiapkan koneksi](https://docs.aws.amazon.com/dtconsole/latest/userguide/setting-up-connections.html) di *Panduan Pengguna Alat Konsol Pengembang*. 

Untuk membuat sambungan, ikuti petunjuk di [Buat sambungan](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-create.html) di *Panduan Pengguna Alat Konsol Pengembang*. 

### Konfigurasikan otorisasi untuk koneksi
<a name="workflows-git-connection-create"></a>

Anda harus mengotorisasi koneksi menggunakan OAuth alur penyedia. Pastikan status koneksi `AVAILABLE` sebelum Anda menggunakannya.

Sebagai contoh, lihat posting blog [Cara Membuat AWS HealthOmics Alur Kerja dari Konten di Git](https://repost.aws/articles/ARCEN7AjhaRSmteczRoc_QsA/how-to-create-an-aws-healthomics-workflows-from-content-in-git). 

## Mengakses repositori yang dikelola sendiri
<a name="workflows-git-self-managed"></a>

Untuk mengatur koneksi ke repositori yang GitLab dikelola sendiri, gunakan Token Akses Pribadi admin saat membuat host. Pembuatan koneksi berikutnya mengakses Oauth dengan akun pelanggan.

Contoh berikut menyiapkan koneksi ke repositori yang GitLab dikelola sendiri:

1. Siapkan akses ke Token Akses Pribadi pengguna admin.

   *Untuk menyiapkan PAT di repositori yang dikelola GitLab sendiri, lihat [Token akses pribadi di GitLab Dokumen](https://docs.gitlab.com/user/profile/personal_access_tokens/).*

1. Membuat host

   1. Arahkan ke> **CodePipelinePengaturan> Koneksi**.

   1. Pilih tab **Hosts** dan kemudian pilih **Create Host**.

   1. Konfigurasi bidang berikut:
      + Masukkan nama host
      + Untuk jenis penyedia, pilih **GitLab Self Managed**
      + Masukkan **URL Host** 
      + Masukkan informasi VPC jika host didefinisikan dalam VPC

   1. Pilih **Buat Host**, yang membuat host dalam status PENDING.

   1. Untuk menyelesaikan pengaturan, pilih **Siapkan Host**.

   1. Masukkan Personal Access Token (PAT) dari pengguna Admin, lalu pilih **Lanjutkan**. 

1. Buat koneksi

   1. Pilih **Buat Koneksi** pada tab **Koneksi**.

   1. Untuk jenis penyedia, pilih **GitLab dikelola sendiri**.

   1. Di bawah **Pengaturan Koneksi> Masukkan Nama Koneksi**, masukkan URL Host yang sebelumnya Anda buat.

   1. Jika instans yang GitLab dikelola sendiri hanya dapat diakses melalui VPC, konfigurasikan detail VPC.

   1. Pilih **Perbarui Koneksi Tertunda**. Jendela modal mengarahkan Anda kembali ke halaman GitLab login.

   1. Masukkan nama pengguna dan kata sandi untuk akun pelanggan dan selesaikan proses otorisasi.

   1.  Untuk penyiapan pertama kali, pilih **Authorize AWS Connector for Gitlab Self Managed**.

## Kuota yang terkait dengan repositori kode eksternal
<a name="workflows-git-quotas"></a>

Untuk HealthOmics integrasi dengan repositori kode eksternal, ada ukuran maksimum untuk repositori, setiap file repositori, dan setiap file README. Lihat perinciannya di [HealthOmics alur kerja kuota ukuran tetap](fixed-quotas.md#fixed-quotas-workflows).

## Izin IAM yang diperlukan
<a name="workflows-git-permissions"></a>

Tambahkan tindakan berikut ke kebijakan IAM berbasis identitas Anda:

```
   "codeconnections:CreateConnection",
   "codeconnections:GetConnection",
   "codeconnections:GetHost",
   "codeconnections:ListConnections",
   "codeconnections:UseConnection"
```

# File definisi alur kerja di HealthOmics
<a name="workflow-definition-files"></a>

Anda menggunakan definisi alur kerja untuk menentukan informasi tentang alur kerja, proses, dan tugas dalam proses. Anda membuat definisi alur kerja dalam satu atau beberapa file menggunakan bahasa definisi alur kerja. HealthOmics mendukung definisi alur kerja yang ditulis dalam WDL, Nextflow, atau CWL. 

HealthOmics mendukung pilihan berikut untuk definisi alur kerja WDL: 
+ WDL - Menyediakan mesin WDL yang sesuai spesifikasi. 
+ WDL lunak - Dirancang untuk menangani alur kerja yang dimigrasikan dari Cromwell. Ini mendukung arahan pelanggan Cromwell dan beberapa logika non-kesesuaian. Lihat perinciannya di [Konversi tipe implisit di WDL yang lunak](workflow-languages-wdl.md#workflow-wdl-type-conversion).

Untuk informasi tentang masing-masing bahasa alur kerja, lihat bagian detail khusus bahasa di bawah ini.

Anda menentukan jenis informasi berikut dalam definisi alur kerja:
+ **Language version**— Bahasa dan versi definisi alur kerja.
+ **Compute and memory**— Persyaratan komputasi dan memori untuk tugas-tugas dalam alur kerja.
+ **Inputs**— Lokasi input ke tugas alur kerja. Untuk informasi selengkapnya, lihat [HealthOmics jalankan masukan](workflows-run-inputs.md).
+ **Outputs**— Lokasi untuk menyimpan output yang dihasilkan tugas.
+ **Task resources**— Persyaratan komputasi dan memori untuk setiap tugas.
+ **Accelerators**— sumber daya lain yang dibutuhkan tugas, seperti akselerator.

**Topics**
+ [HealthOmics persyaratan definisi alur kerja](workflow-defn-requirements.md)
+ [Dukungan versi untuk bahasa definisi HealthOmics alur kerja](workflows-lang-versions.md)
+ [Persyaratan komputasi dan memori untuk tugas HealthOmics](memory-and-compute-tasks.md)
+ [Output tugas dalam definisi HealthOmics alur kerja](workflows-task-outputs.md)
+ [Sumber daya tugas dalam definisi HealthOmics alur kerja](task-resources.md)
+ [Akselerator tugas dalam definisi HealthOmics alur kerja](task-accelerators.md)
+ [Spesifikasi definisi alur kerja WDL](workflow-languages-wdl.md)
+ [Spesifikasi definisi alur kerja alur berikutnya](workflow-definition-nextflow.md)
+ [Spesifikasi definisi alur kerja CWL](workflow-languages-cwl.md)
+ [Contoh definisi alur kerja](workflow-definition-examples.md)

# HealthOmics persyaratan definisi alur kerja
<a name="workflow-defn-requirements"></a>

File definisi HealthOmics alur kerja harus memenuhi persyaratan berikut:
+ Tugas harus menentukan input/output parameter, repositori kontainer Amazon ECR, dan spesifikasi runtime seperti memori atau alokasi CPU.
+ Verifikasi bahwa peran IAM Anda memiliki izin yang diperlukan.<a name="lower"></a>
  + Alur kerja Anda memiliki akses ke data input dari AWS sumber daya, seperti Amazon S3. 
  + Alur kerja Anda memiliki akses ke layanan repositori eksternal bila diperlukan.
+ Deklarasikan file output dalam definisi alur kerja. Untuk menyalin file run perantara ke lokasi output, deklarasikan sebagai output alur kerja. 
+ Lokasi input dan output harus berada di Wilayah yang sama dengan alur kerja. 
+ HealthOmics input alur kerja penyimpanan harus dalam `ACTIVE` status. HealthOmics tidak akan mengimpor input dengan `ARCHIVED` status, menyebabkan alur kerja gagal. Untuk informasi tentang input objek Amazon S3, lihat. [HealthOmics jalankan masukan](workflows-run-inputs.md)
+ **main**Lokasi alur kerja bersifat opsional jika arsip ZIP Anda berisi definisi alur kerja tunggal atau file bernama 'utama'.<a name="lower"></a>
  + Contoh jalur: `workflow-definition/main-file.wdl`
+ Sebelum Anda membuat alur kerja dari Amazon S3 atau drive lokal Anda, buat arsip zip file definisi alur kerja dan dependensi apa pun, seperti subalur kerja.
+ Kami menyarankan Anda mendeklarasikan container Amazon ECR dalam alur kerja sebagai parameter input untuk validasi izin Amazon ECR. 

Pertimbangan Nextflow tambahan:
+ **/bin**

  Definisi alur kerja Nextflow dapat mencakup folder/bin dengan skrip yang dapat dieksekusi. Jalur ini memiliki akses read-only plus executable ke tugas. Tugas yang mengandalkan skrip ini harus menggunakan wadah yang dibangun dengan interpreter skrip yang sesuai. Praktik terbaik adalah memanggil penerjemah secara langsung. Contoh:

  ```
  process my_bin_task {
     ...
     script:
        """
        python3 my_python_script.py
        """
  }
  ```
+ **includeConfig**

  Definisi alur kerja berbasis NextFlow dapat menyertakan file nextflow.config yang membantu mengabstraksi definisi parameter atau memproses profil sumber daya. Untuk mendukung pengembangan dan eksekusi pipeline Nextflow di beberapa lingkungan, gunakan konfigurasi HealthOmics -spesifik yang Anda tambahkan ke konfigurasi global menggunakan direktif includeConfig. Untuk mempertahankan portabilitas, konfigurasikan alur kerja untuk menyertakan file hanya saat dijalankan HealthOmics dengan menggunakan kode berikut:

  ```
  // at the end of the nextflow.config file
  if ("$AWS_WORKFLOW_RUN") {
      includeConfig 'conf/omics.config'
  }
  ```
+ **Reports**

  HealthOmics tidak mendukung laporan dag, trace, dan eksekusi yang dihasilkan mesin. Anda dapat menghasilkan alternatif untuk laporan penelusuran dan eksekusi menggunakan kombinasi panggilan GetRunTask API GetRun dan. 

Pertimbangan CWL tambahan:
+ **Container image uri interpolation**

  HealthOmics memungkinkan properti DockerPull DockerRequirement untuk menjadi ekspresi javascript inline. Contoh:

  ```
  requirements:
    DockerRequirement:
      dockerPull: "$(inputs.container_image)"
  ```

  Ini memungkinkan Anda untuk menentukan gambar kontainer URIs sebagai parameter input ke alur kerja.
+ **Javascript expressions**

  Ekspresi Javascript harus `strict mode` sesuai.
+ **Operation process**

  HealthOmics tidak mendukung proses Operasi CWL.

# Dukungan versi untuk bahasa definisi HealthOmics alur kerja
<a name="workflows-lang-versions"></a>

HealthOmics mendukung file definisi alur kerja yang ditulis dalam Nextflow, WDL, atau CWL. Bagian berikut memberikan informasi tentang dukungan HealthOmics versi untuk bahasa-bahasa ini.

**Topics**
+ [Dukungan versi WDL](#workflows-lang-versions-WDL)
+ [Dukungan versi CWL](#workflows-lang-versions-CWL)
+ [Dukungan versi Nextflow](#workflows-lang-versions-nextflow)

## Dukungan versi WDL
<a name="workflows-lang-versions-WDL"></a>

HealthOmics mendukung versi 1.0, 1.1, dan versi pengembangan spesifikasi WDL.

Setiap dokumen WDL harus menyertakan pernyataan versi untuk menentukan versi mana (mayor dan minor) dari spesifikasi yang dipatuhi. Untuk informasi selengkapnya tentang versi, lihat pembuatan versi [WDL](https://github.com/openwdl/wdl/blob/wdl-1.1/SPEC.md#versioning)

Versi 1.0 dan 1.1 dari spesifikasi WDL tidak mendukung jenis. `Directory` Untuk menggunakan `Directory` tipe untuk input atau output, atur versi ke **development** baris pertama file:

```
version development  # first line of .wdl file
     ... remainder of the file ...
```

## Dukungan versi CWL
<a name="workflows-lang-versions-CWL"></a>

HealthOmics mendukung versi 1.0, 1.1, dan 1.2 dari bahasa CWL.

Anda dapat menentukan versi bahasa dalam file definisi alur kerja CWL. Untuk informasi selengkapnya tentang CWL, lihat panduan pengguna [CWL](https://github.com/common-workflow-language/user_guide)

## Dukungan versi Nextflow
<a name="workflows-lang-versions-nextflow"></a>

HealthOmics mendukung tiga versi stabil Nextflow. Nextflow biasanya merilis versi stabil setiap enam bulan. HealthOmics tidak mendukung rilis “edge” bulanan.

HealthOmics mendukung fitur yang dirilis di setiap versi, tetapi tidak fitur pratinjau.

### Versi yang didukung
<a name="workflows-versions-nextflow-list"></a>

HealthOmics mendukung versi Nextflow berikut:
+ Nextflow v22.04.01 DSL 1 dan DSL 2
+ Nextflow v23.10.0 DSL 2 (default)
+ Nextflow v24.10.8 DSL 2

[Untuk memigrasikan alur kerja Anda ke versi terbaru yang didukung (v24.10.8), ikuti panduan pemutakhiran Nextflow.](https://nextflow.io/docs/latest/migrations/24-10.html)

Ada beberapa perubahan yang mengganggu saat bermigrasi dari Nextflow v23 ke v24, seperti yang dijelaskan di bagian berikut dari panduan migrasi Nextflow:
+ [Melanggar perubahan di 24.04](https://www.nextflow.io/docs/latest/migrations/24-04.html#breaking-changes)
+  [Melanggar perubahan di 24.10](https://www.nextflow.io/docs/latest/migrations/24-10.html#breaking-changes)

### Mendeteksi dan memproses versi Nextflow
<a name="workflows-versions-processing"></a>

HealthOmics mendeteksi versi DSL dan versi Nextflow yang Anda tentukan. Ini secara otomatis menentukan versi Nextflow terbaik untuk dijalankan berdasarkan input ini.

#### Versi DSL
<a name="workflows-versions-p1"></a>

HealthOmics mendeteksi versi DSL yang diminta dalam file definisi alur kerja Anda. Misalnya, Anda dapat menentukan:`nextflow.enable.dsl=2`.

HealthOmics mendukung DSL 2 secara default. Ini menyediakan kompatibilitas mundur dengan DSL 1, jika ditentukan dalam file definisi alur kerja Anda.
+ Jika Anda menentukan DSL 2, HealthOmics jalankan Nextflow v23.10.0, kecuali Anda menentukan Nextflow v22.04.0 atau v24.10.8.
+ Jika Anda menentukan DSL 1, HealthOmics jalankan Nextflow v22.04 DSL1 (satu-satunya versi yang didukung yang menjalankan DSL 1).
+ Jika Anda tidak menentukan versi DSL, atau jika tidak HealthOmics dapat mengurai informasi DSL karena alasan apa pun (seperti kesalahan sintaks dalam file definisi alur kerja Anda), HealthOmics default ke DSL 2 dan menjalankan Nextflow v23.10.0.
+ [Untuk meningkatkan alur kerja Anda dari DSL 1 ke DSL 2 untuk memanfaatkan versi dan fitur perangkat lunak Nextflow terbaru, lihat Migrasi dari DSL 1.](https://nextflow.io/docs/latest/dsl1.html)

#### Versi Nextflow
<a name="workflows-versions-p2"></a>

HealthOmics mendeteksi versi Nextflow yang diminta dalam file konfigurasi Nextflow (nextflow.config), jika Anda menyediakan file ini. Kami menyarankan Anda menambahkan `nextflowVersion` klausa di akhir file untuk menghindari penggantian tak terduga dari konfigurasi yang disertakan. Untuk informasi selengkapnya, lihat konfigurasi [Nextflow](https://nextflow.io/docs/latest/config.html).

Anda dapat menentukan versi Nextflow atau rentang versi menggunakan sintaks berikut:

```
   // exact match
   manifest.nextflowVersion = '1.2.3'   
            
   // 1.2 or later (excluding 2 and later)
   manifest.nextflowVersion = '1.2+'         
            
   // 1.2 or later
   manifest.nextflowVersion = '>=1.2'
            
   // any version in the range 1.2 to 1.5
   manifest.nextflowVersion = '>=1.2, <=1.5' 
            
   // use the "!" prefix to stop execution if the current version 
   // doesn't match the required version.
   manifest.nextflowVersion = '!>=1.2'
```

HealthOmics memproses informasi versi Nextflow sebagai berikut: 
+ Jika Anda menggunakan **=** untuk menentukan versi persis yang HealthOmics mendukung, HealthOmics gunakan versi itu. 
+ Jika Anda menggunakan **\$1** untuk menentukan versi yang tepat atau rentang versi yang tidak didukung, HealthOmics memunculkan pengecualian dan gagal dijalankan. Pertimbangkan untuk menggunakan opsi ini jika Anda ingin ketat dengan permintaan versi dan gagal dengan cepat jika permintaan menyertakan versi yang tidak didukung.
+ Jika Anda menentukan rentang versi, HealthOmics gunakan versi terbaru yang didukung dalam rentang tersebut, kecuali rentang tersebut menyertakan v24.10.8. Dalam hal ini, HealthOmics berikan preferensi ke versi sebelumnya. Misalnya, jika rentang mencakup v23.10.0 dan v24.10.8, pilih v23.10.0. HealthOmics 
+ Jika tidak ada versi yang diminta, atau jika versi yang diminta tidak valid atau tidak dapat diuraikan karena alasan apa pun:
  + Jika Anda menentukan DSL 1, HealthOmics jalankan Nextflow v22.04.
  + Jika tidak, HealthOmics jalankan Nextflow v23.10.0.

 Anda dapat mengambil informasi berikut tentang versi Nextflow yang HealthOmics digunakan untuk setiap proses:
+ Log run berisi informasi tentang versi Nextflow aktual yang HealthOmics digunakan untuk menjalankan.
+ HealthOmics menambahkan peringatan di log run jika tidak ada kecocokan langsung dengan versi yang Anda minta atau jika perlu menggunakan versi yang berbeda dari yang Anda tentukan.
+ Respons terhadap operasi **GetRun** API menyertakan field (`engineVersion`) dengan versi Nextflow aktual yang HealthOmics digunakan untuk menjalankan. Contoh:

  ```
  "engineVersion":"22.04.0"
  ```

# Persyaratan komputasi dan memori untuk tugas HealthOmics
<a name="memory-and-compute-tasks"></a>

HealthOmics menjalankan tugas alur kerja pribadi Anda dalam instance omics. HealthOmics menyediakan berbagai jenis instance untuk mengakomodasi berbagai jenis tugas. Setiap jenis instans memiliki memori tetap dan konfigurasi vCPU (dan konfigurasi GPU tetap untuk jenis instans komputasi yang dipercepat). Biaya penggunaan instance omics bervariasi tergantung pada jenis instans. Untuk detailnya, lihat halaman [HealthOmics Harga](https://aws.amazon.com/healthomics/pricing/).

Untuk tugas dalam alur kerja, Anda menentukan memori yang diperlukan dan v CPUs dalam file definisi alur kerja. Saat tugas alur kerja berjalan, HealthOmics alokasikan instance omics terkecil yang mengakomodasi memori yang diminta dan v. CPUs Misalnya, jika tugas membutuhkan 64 GiB memori dan 8 vCPUs, HealthOmics pilih. `omics.r.2xlarge`

Kami menyarankan Anda meninjau jenis instans dan mengatur v CPUs dan ukuran memori yang Anda minta agar sesuai dengan instans yang paling sesuai dengan kebutuhan Anda. Wadah tugas menggunakan jumlah v CPUs dan ukuran memori yang Anda tentukan dalam file definisi alur kerja Anda, bahkan jika jenis instance memiliki v CPUs dan memori tambahan. 

Daftar berikut berisi informasi tambahan tentang vCPU dan alokasi memori:
+ Alokasi sumber daya kontainer adalah batas sulit. Jika tugas kehabisan memori atau mencoba menggunakan v tambahanCPUs , tugas menghasilkan log kesalahan dan keluar.
+ Jika Anda tidak menentukan persyaratan komputasi atau memori, HealthOmics pilih **omics.c.large** dan default ke konfigurasi dengan 1 vCPU dan 1 GiB memori.
+ Konfigurasi minimum yang dapat Anda minta adalah 1 vCPU dan 1 GiB memori. 
+ Jika Anda menentukan vCPUs, memori, atau GPUs yang melebihi jenis instans yang didukung, HealthOmics melempar pesan kesalahan dan alur kerja gagal validasi
+ Jika Anda menentukan satuan pecahan, HealthOmics bulatkan ke bilangan bulat terdekat.
+ HealthOmics menyimpan sejumlah kecil memori (5%) untuk agen manajemen dan logging, sehingga alokasi memori penuh mungkin tidak selalu tersedia untuk aplikasi dalam tugas.
+ HealthOmics mencocokkan jenis instance agar sesuai dengan persyaratan komputasi dan memori yang Anda tentukan, dan dapat menggunakan campuran generasi perangkat keras. Untuk alasan ini, mungkin ada beberapa variasi kecil dalam waktu menjalankan tugas untuk tugas yang sama.

Topik ini memberikan detail tentang jenis instance yang HealthOmics mendukung. 

**Topics**
+ [Jenis instans standar](#workflow-task-standard-instances)
+ [Instans yang dioptimalkan untuk komputasi](#workflow-task-compute-optimized-instances)
+ [Instans yang dioptimalkan untuk memori](#workflow-task-memory-optimized-instances)
+ [Instans komputasi yang dipercepat](#workflow-task-accelerated-computing-instances)

**catatan**  
 Untuk instans standar, komputasi, dan memori yang dioptimalkan, tingkatkan ukuran bandwidth instans jika instance memerlukan throughput yang lebih tinggi. Instans Amazon EC2 dengan kurang dari 16 vCPU (ukuran 4xl dan lebih kecil) dapat mengalami ledakan throughput. Untuk informasi selengkapnya tentang throughput instans Amazon EC2, lihat Bandwidth instans yang tersedia [Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-network-bandwidth.html#available-instance-bandwidth).

## Jenis instans standar
<a name="workflow-task-standard-instances"></a>

Untuk tipe instans standar, konfigurasi bertujuan untuk keseimbangan daya komputasi dan memori. 

HealthOmics mendukung instance 32xlarge dan 48xlarge di wilayah ini: US West (Oregon) dan US East (Virginia N.).


| Instans | Jumlah v CPUs | Memori | 
| --- | --- | --- | 
| omics.m.large | 2 | 8 GiB | 
| omics.m.xlarge | 4 | 16 GiB | 
| omics.m.2xlarge | 8 | 32 GiB | 
| omics.m.4xlarge | 16 | 64 GiB | 
| omics.m.8xlarge | 32 | 128 GiB | 
| omics.m.12xlarge | 48 | 192 GiB | 
| omics.m.16xlarge | 64 | 256 GiB | 
| omics.m.24xlarge | 96 | 384 GiB | 
| omics.m.32xlarge | 128 | 512 GiB | 
| omics.m.48xlarge | 192 | 768 GiB | 

## Instans yang dioptimalkan untuk komputasi
<a name="workflow-task-compute-optimized-instances"></a>

Untuk tipe instans yang dioptimalkan komputasi, konfigurasi memiliki daya komputasi yang lebih besar dan memori yang lebih sedikit.

HealthOmics mendukung instance 32xlarge dan 48xlarge di wilayah ini: US West (Oregon) dan US East (Virginia N.).


| Instans | Jumlah v CPUs | Memori | 
| --- | --- | --- | 
| omics.c.large | 2 | 4 GiB | 
| omics.c.xlarge | 4 | 8 GiB | 
| omics.c.2xlarge | 8 | 16 GiB | 
| omics.c.4xlarge | 16 | 32 GiB | 
| omics.c.8xlarge | 32 | 64 GiB | 
| omics.c.12xlarge | 48 | 96 GiB | 
| omics.c.16xlarge | 64 | 128 GiB | 
| omics.c.24xlarge | 96 | 192 GiB | 
| omics.c.32xlarge | 128 | 256 GiB | 
| omics.c.48xlarge | 192 | 384 GiB | 

## Instans yang dioptimalkan untuk memori
<a name="workflow-task-memory-optimized-instances"></a>

Untuk jenis instans yang dioptimalkan memori, konfigurasi memiliki daya komputasi yang lebih sedikit dan lebih banyak memori.

HealthOmics mendukung instance 32xlarge dan 48xlarge di wilayah ini: US West (Oregon) dan US East (Virginia N.).


| Instans | Jumlah v CPUs | Memori | 
| --- | --- | --- | 
| omics.r.large | 2 | 16 GiB | 
| omics.r.xlarge | 4 | 32 GiB | 
| omics.r.2xlarge | 8 | 64 GiB | 
| omics.r.4xlarge | 16 | 128 GiB | 
| omics.r.8xlarge | 32 | 256 GiB | 
| omics.r.12xlarge | 48 | 384 GiB | 
| omics.r.16xlarge | 64 | 512 GiB | 
| omics.r.24xlarge | 96 | 768 GiB | 
| omics.r.32xlarge | 128 | 1024 GiB | 
| omics.r.48xlarge | 192 | 1536 GiB | 

## Instans komputasi yang dipercepat
<a name="workflow-task-accelerated-computing-instances"></a>

Anda dapat secara opsional menentukan sumber daya GPU untuk setiap tugas dalam alur kerja, sehingga HealthOmics mengalokasikan instance komputasi yang dipercepat untuk tugas tersebut. Untuk informasi tentang cara menentukan informasi GPU dalam file definisi alur kerja, lihat. [Akselerator tugas dalam definisi HealthOmics alur kerja](task-accelerators.md)

Jika Anda menentukan akselerator tugas yang mendukung beberapa jenis instans, HealthOmics pilih jenis instans berdasarkan ketersediaan. Jika lebih dari satu jenis instance tersedia, HealthOmics berikan preferensi ke instance biaya yang lebih rendah. Pengecualiannya adalah untuk akselerator tugas nvidia-t4-a10g-l4 yang memberikan preferensi pada instance generasi terbaru yang tersedia di wilayah Anda.

Instans G4 tidak didukung di Wilayah Israel (Tel Aviv). Instans G5 tidak didukung di Wilayah Asia Pasifik (Singapura). 



**Topics**
+ [Jenis instans G6 dan G6e](#workflow-task-accelerated-accelerated-g6)
+ [Instans G4 dan G5](#workflow-task-accelerated-accelerated-g45)

### Jenis instans G6 dan G6e
<a name="workflow-task-accelerated-accelerated-g6"></a>

HealthOmics mendukung konfigurasi instans komputasi akselerasi G6 berikut. Semua instance omics.g6 menggunakan Nvidia L4. GPUs

HealthOmics mendukung contoh G6 dan G6e di wilayah ini: US West (Oregon) dan US East (Virginia N.).


| Instans | Jumlah v CPUs | Memori | Jumlah GPUs | Memori GPU | 
| --- | --- | --- | --- | --- | 
| omics.g6.xlarge | 4 | 16 GiB | 1 | 24 GiB | 
| omics.g6.2xlarge | 8 | 32 GiB | 1 | 24 GiB | 
| omics.g6.4xlarge | 16 | 64 GiB | 1 | 24 GiB | 
| omics.g6.8xlarge | 32 | 128 GiB | 1 | 24 GiB | 
| omics.g6.12xlarge | 48 | 192 GiB | 4 | 96 GiB | 
| omics.g6.16xlarge | 64 | 256 GiB | 1 | 24 GiB | 
| omics.g6.24xlarge | 96 | 384 GiB | 4 | 96 GiB | 

Semua instans omics.g6e menggunakan Nvidia L40. GPUs


| Instans | Jumlah v CPUs | Memori | Jumlah GPUs | Memori GPU | 
| --- | --- | --- | --- | --- | 
| omics.g6e.xlarge | 4 | 32 GiB | 1 | 48 GiB | 
| omics.g6e.2xlarge | 8 | 64 GiB | 1 | 48 GiB | 
| omics.g6e.4xlarge | 16 | 128 GiB | 1 | 48 GiB | 
| omics.g6e.8xlarge | 32 | 256 GiB | 1 | 48 GiB | 
| omics.g6e.12xlarge | 48 | 384 GiB | 4 | 192 GiB | 
| omics.g6e.16xlarge | 64 | 512 GiB | 1 | 48 GiB | 
| omics.g6e.24xlarge | 96 | 768 GiB | 4 | 192 GiB | 

### Instans G4 dan G5
<a name="workflow-task-accelerated-accelerated-g45"></a>

HealthOmics mendukung konfigurasi instans komputasi akselerasi G4 dan G5 berikut. 

Semua instans omics.g5 menggunakan Nvidia Tesla A10G. GPUs


| Instans | Jumlah v CPUs | Memori | Jumlah GPUs | Memori GPU | 
| --- | --- | --- | --- | --- | 
| omics.g5.xlarge | 4 | 16 GiB | 1 | 24 GiB | 
| omics.g5.2xlarge | 8 | 32 GiB | 1 | 24 GiB | 
| omics.g5.4xlarge | 16 | 64 GiB | 1 | 24 GiB | 
| omics.g5.8xlarge | 32 | 128 GiB | 1 | 24 GiB | 
| omics.g5.12xlarge | 48 | 192 GiB | 4 | 96 GiB | 
| omics.g5.16xlarge | 64 | 256 GiB | 1 | 24 GiB | 
| omics.g5.24xlarge | 96 | 384 GiB | 4 | 96 GiB | 

Semua instans omics.g4dn menggunakan Nvidia Tesla T4. GPUs


| Instans | Jumlah v CPUs | Memori | Jumlah GPUs | Memori GPU | 
| --- | --- | --- | --- | --- | 
| omics.g4dn.xlarge | 4 | 16 GiB | 1 | 16 GiB | 
| omics.g4dn.2xlarge | 8 | 32 GiB | 1 | 16 GiB | 
| omics.g4dn.4xlarge | 16 | 64 GiB | 1 | 16 GiB | 
| omics.g4dn.8xlarge | 32 | 128 GiB | 1 | 16 GiB | 
| omics.g4dn.12xlarge | 48 | 192 GiB | 4 | 64 GiB | 
| omics.g4dn.16xlarge | 64 | 256 GiB | 1 | 24 GiB | 

# Output tugas dalam definisi HealthOmics alur kerja
<a name="workflows-task-outputs"></a>

Anda menentukan output tugas dalam definisi alur kerja. Secara default, HealthOmics buang semua file tugas perantara saat alur kerja selesai. Untuk mengekspor file perantara, Anda mendefinisikannya sebagai output. 

Jika Anda menggunakan caching panggilan, HealthOmics menyimpan output tugas ke cache, termasuk file perantara yang Anda tentukan sebagai output.

Topik berikut mencakup contoh definisi tugas untuk setiap bahasa definisi alur kerja.

**Topics**
+ [Output tugas untuk WDL](#workflow-task-outputs-wdl)
+ [Output tugas untuk Nextflow](#workflow-task-outputs-nextflow)
+ [Output tugas untuk CWL](#workflow-task-outputs-cwl)

## Output tugas untuk WDL
<a name="workflow-task-outputs-wdl"></a>

Untuk definisi alur kerja yang ditulis dalam WDL, tentukan output Anda di bagian alur kerja tingkat atas. **outputs** 

HealthOmics

**Topics**
+ [Output tugas untuk STDOUT](#task-outputs-wdl-stdout)
+ [Output tugas untuk STDERR](#task-outputs-wdl-stderr)
+ [Output tugas ke file](#task-outputs-wdl-file)
+ [Output tugas ke array file](#task-outputs-wdl-files)

### Output tugas untuk STDOUT
<a name="task-outputs-wdl-stdout"></a>

Contoh ini membuat tugas bernama `SayHello` yang menggemakan konten STDOUT ke file output tugas. **stdout****Fungsi WDL menangkap konten STDOUT (dalam contoh ini, string input Hello World\$1** ) dalam file**stdout\$1file**. 

Karena HealthOmics membuat log untuk semua konten STDOUT, output juga muncul di CloudWatch Log, bersama dengan informasi logging STDERR lainnya untuk tugas tersebut.

```
version 1.0
 workflow HelloWorld {
    input {
        String message = "Hello, World!"
        String ubuntu_container = "123456789012.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/ubuntu:20.04"
    }

    call SayHello {
        input:
            message = message,
            container = ubuntu_container
    }

    output {
        File stdout_file = SayHello.stdout_file
    }
}

task SayHello {
    input {
        String message
        String container
    }

    command <<<
        echo "~{message}" 
        echo "Current date: $(date)"
        echo "This message was printed to STDOUT"
    >>>

    runtime {
        docker: container
        cpu: 1
        memory: "2 GB"
    }

    output {
        File stdout_file = stdout()
    }
}
```

### Output tugas untuk STDERR
<a name="task-outputs-wdl-stderr"></a>

Contoh ini membuat tugas bernama `SayHello` yang menggemakan konten STDERR ke file output tugas. **stderr****Fungsi WDL menangkap konten STDERR (dalam contoh ini, string input Hello World\$1** ) dalam file**stderr\$1file**. 

Karena HealthOmics membuat log untuk semua konten STDERR, output akan muncul di CloudWatch Log, bersama dengan informasi logging STDERR lainnya untuk tugas tersebut.

```
version 1.0
 workflow HelloWorld {
    input {
        String message = "Hello, World!"
        String ubuntu_container = "123456789012.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/ubuntu:20.04"
    }

    call SayHello {
        input:
            message = message,
            container = ubuntu_container
    }

    output {
        File stderr_file = SayHello.stderr_file
    }
}

task SayHello {
    input {
        String message
        String container
    }

    command <<<
        echo "~{message}" >&2
        echo "Current date: $(date)" >&2
        echo "This message was printed to STDERR" >&2
    >>>

    runtime {
        docker: container
        cpu: 1
        memory: "2 GB"
    }

    output {
        File stderr_file = stderr()
    }
}
```

### Output tugas ke file
<a name="task-outputs-wdl-file"></a>

Dalam contoh ini, SayHello tugas membuat dua file (message.txt dan info.txt) dan secara eksplisit menyatakan file-file ini sebagai output bernama (message\$1file dan info\$1file). 

```
version 1.0
workflow HelloWorld {
    input {
        String message = "Hello, World!"
        String ubuntu_container = "123456789012.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/ubuntu:20.04"
    }

    call SayHello {
        input:
            message = message,
            container = ubuntu_container
    }

    output {
        File message_file = SayHello.message_file
        File info_file = SayHello.info_file
    }
}

task SayHello {
    input {
        String message
        String container
    }

    command <<<
        # Create message file
        echo "~{message}" > message.txt
        
        # Create info file with date and additional information
        echo "Current date: $(date)" > info.txt
        echo "This message was saved to a file" >> info.txt
    >>>

    runtime {
        docker: container
        cpu: 1
        memory: "2 GB"
    }

    output {
        File message_file = "message.txt"
        File info_file = "info.txt"
    } 
}
```

### Output tugas ke array file
<a name="task-outputs-wdl-files"></a>

Dalam contoh ini, `GenerateGreetings` tugas menghasilkan array file sebagai output tugas. Tugas secara dinamis menghasilkan satu file ucapan untuk setiap anggota array input. `names` Karena nama file tidak diketahui sampai runtime, definisi output menggunakan fungsi WDL glob () untuk menampilkan semua file yang cocok dengan pola. `*_greeting.txt` 

```
version 1.0
 workflow HelloArray {
    input {
        Array[String] names = ["World", "Friend", "Developer"]
        String ubuntu_container = "123456789012.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/ubuntu:20.04"
    }

    call GenerateGreetings {
        input:
            names = names,
            container = ubuntu_container
    }

    output {
        Array[File] greeting_files = GenerateGreetings.greeting_files
    }
}

task GenerateGreetings {
    input {
        Array[String] names
        String container
    }

    command  <<<
        # Create a greeting file for each name
        for name in ~{sep=" " names}; do
            echo "Hello, $name!" > ${name}_greeting.txt
        done
    >>>

    runtime {
        docker: container
        cpu: 1
        memory: "2 GB"
    }

    output {
        Array[File] greeting_files = glob("*_greeting.txt")
    }       
 }
```

## Output tugas untuk Nextflow
<a name="workflow-task-outputs-nextflow"></a>

Untuk definisi alur kerja yang ditulis dalam Alur Berikutnya, tentukan direktif **PublishDir** untuk mengekspor konten tugas ke bucket Amazon S3 keluaran Anda. Setel nilai **publishDir** ke. `/mnt/workflow/pubdir` 

 HealthOmics Untuk mengekspor file ke Amazon S3, file harus ada di direktori ini.

Jika tugas menghasilkan sekelompok file output untuk digunakan sebagai input untuk tugas berikutnya, kami sarankan Anda mengelompokkan file-file ini dalam direktori dan memancarkan direktori sebagai output tugas. Menghitung setiap file individu dapat mengakibatkan kemacetan I/O di sistem file yang mendasarinya. Misalnya:

```
process my_task {
      ...
      // recommended
      output "output-folder/", emit: output
      
      // not recommended
      // output "output-folder/**", emit: output
      ...
  }
```

## Output tugas untuk CWL
<a name="workflow-task-outputs-cwl"></a>

Untuk definisi alur kerja yang ditulis dalam CWL, Anda dapat menentukan output tugas menggunakan tugas. `CommandLineTool` Bagian berikut menunjukkan contoh `CommandLineTool` tugas yang menentukan berbagai jenis output.

**Topics**
+ [Output tugas untuk STDOUT](#task-outputs-cwl-stdout)
+ [Output tugas untuk STDERR](#task-outputs-cwl-stderr)
+ [Output tugas ke file](#task-outputs-cwl-file)
+ [Output tugas ke array file](#task-outputs-cwl-files)

### Output tugas untuk STDOUT
<a name="task-outputs-cwl-stdout"></a>

Contoh ini membuat `CommandLineTool` tugas yang menggemakan konten STDOUT ke file keluaran teks bernama. **output.txt** Misalnya, jika Anda memberikan masukan berikut, output tugas yang dihasilkan adalah **Hello World\$1** dalam **output.txt** file.

```
{
    "message": "Hello World!"
}
```

`outputs`Direktif menentukan bahwa nama output adalah **example\$1out** dan jenisnya adalah. `stdout` Untuk tugas hilir untuk mengkonsumsi output dari tugas ini, itu akan merujuk ke output sebagai`example_out`.

Karena HealthOmics membuat log untuk semua konten STDERR dan STDOUT, output juga muncul di CloudWatch Log, bersama dengan informasi logging STDERR lainnya untuk tugas tersebut.

```
cwlVersion: v1.2
class: CommandLineTool
baseCommand: echo
stdout: output.txt
inputs:
  message:
    type: string
    inputBinding:
      position: 1
outputs:
  example_out:
    type: stdout

requirements:
    DockerRequirement:
        dockerPull: 123456789012.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/ubuntu:20.04
    ResourceRequirement:
        ramMin: 2048
        coresMin: 1
```

### Output tugas untuk STDERR
<a name="task-outputs-cwl-stderr"></a>

Contoh ini membuat `CommandLineTool` tugas yang menggemakan konten STDERR ke file keluaran teks bernama. **stderr.txt** Tugas memodifikasi `baseCommand` sehingga `echo` menulis ke STDERR (bukan STDOUT).

`outputs`Direktif menentukan bahwa nama output adalah **stderr\$1out** dan jenisnya adalah. `stderr` 

Karena HealthOmics membuat log untuk semua konten STDERR dan STDOUT, output akan muncul di CloudWatch Log, bersama dengan informasi logging STDERR lainnya untuk tugas tersebut.

```
cwlVersion: v1.2
class: CommandLineTool
baseCommand: [bash, -c]
stderr: stderr.txt
inputs:
  message:
    type: string
    inputBinding:
      position: 1
      shellQuote: true
      valueFrom: "echo $(self) >&2"
outputs:
  stderr_out:
    type: stderr

requirements:
    DockerRequirement:
        dockerPull: 123456789012.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/ubuntu:20.04
    ResourceRequirement:
        ramMin: 2048
        coresMin: 1
```

### Output tugas ke file
<a name="task-outputs-cwl-file"></a>

Contoh ini membuat `CommandLineTool` tugas yang membuat arsip tar terkompresi dari file input. Anda memberikan nama arsip sebagai parameter input (archive\$1name). 

**outputs**Direktif menentukan bahwa jenis `archive_file` output adalah`File`, dan menggunakan referensi ke parameter input untuk mengikat `archive_name` ke file output.

```
cwlVersion: v1.2
class: CommandLineTool
baseCommand: [tar, cfz]
inputs:
  archive_name:
    type: string
    inputBinding:
      position: 1
  input_files:
    type: File[]
    inputBinding:
      position: 2
      
outputs:
  archive_file:
    type: File
    outputBinding:
      glob: "$(inputs.archive_name)"

requirements:
    DockerRequirement:
        dockerPull: 123456789012.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/ubuntu:20.04
    ResourceRequirement:
        ramMin: 2048
        coresMin: 1
```

### Output tugas ke array file
<a name="task-outputs-cwl-files"></a>

Dalam contoh ini, `CommandLineTool` tugas membuat array file menggunakan `touch` perintah. Perintah menggunakan string dalam parameter `files-to-create` input untuk memberi nama file. Perintah mengeluarkan array file. Array mencakup file apa pun di direktori kerja yang cocok dengan `glob` pola. Contoh ini menggunakan pola wildcard (“\$1”) yang cocok dengan semua file.

```
cwlVersion: v1.2
class: CommandLineTool
baseCommand: touch
inputs:
  files-to-create:
    type:
      type: array
      items: string
    inputBinding:
      position: 1
outputs:
  output-files:
    type:
      type: array
      items: File
    outputBinding:
      glob: "*"

requirements:
    DockerRequirement:
        dockerPull: 123456789012.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/ubuntu:20.04
    ResourceRequirement:
        ramMin: 2048
        coresMin: 1
```

# Sumber daya tugas dalam definisi HealthOmics alur kerja
<a name="task-resources"></a>

Dalam definisi alur kerja, tentukan hal berikut untuk setiap tugas:
+ Gambar kontainer untuk tugas. Untuk informasi selengkapnya, lihat [Gambar kontainer untuk alur kerja pribadi](workflows-ecr.md).
+ Jumlah CPUs dan memori yang dibutuhkan untuk tugas tersebut. Untuk informasi selengkapnya, lihat [Persyaratan komputasi dan memori untuk tugas HealthOmics](memory-and-compute-tasks.md).

HealthOmics mengabaikan spesifikasi penyimpanan per tugas apa pun. HealthOmics menyediakan penyimpanan run yang dapat diakses oleh semua tugas dalam proses. Untuk informasi selengkapnya, lihat [Jalankan jenis penyimpanan dalam HealthOmics alur kerja](workflows-run-types.md).

------
#### [ WDL ]

```
task my_task {
   runtime {
      container: "<aws-account-id>.dkr.ecr.<aws-region>.amazonaws.com/<image-name>"
      cpu: 2
      memory: "4 GB"
   }
   ...
}
```

Untuk alur kerja WDL, HealthOmics mencoba hingga dua percobaan ulang untuk tugas yang gagal karena kesalahan layanan (permintaan API mengembalikan kode status HTTP 5XX). Untuk informasi selengkapnya tentang percobaan ulang tugas, lihat[Tugas Mencoba Ulang](monitoring-runs.md#run-status-task-retries).

Anda dapat memilih keluar dari perilaku coba lagi dengan menentukan konfigurasi berikut untuk tugas dalam file definisi WDL:

```
runtime {
   preemptible: 0
}
```

------
#### [ NextFlow ]

```
process my_task {
   container "<aws-account-id>.dkr.ecr.<aws-region>.amazonaws.com/<image-name>"
   cpus 2
   memory "4 GiB"
   ...
}
```

------
#### [ CWL ]

```
cwlVersion: v1.2
class: CommandLineTool
requirements:
    DockerRequirement:
        dockerPull: "<aws-account-id>.dkr.ecr.<aws-region>.amazonaws.com/<image-name>"
    ResourceRequirement:
        coresMax: 2
        ramMax: 4000 # specified in mebibytes
```

------

# Akselerator tugas dalam definisi HealthOmics alur kerja
<a name="task-accelerators"></a>

Dalam definisi alur kerja, Anda dapat menentukan spesifikasi akselerator GPU untuk tugas secara opsional. HealthOmics mendukung nilai spesifikasi akselerator berikut, bersama dengan jenis instance yang didukung:


| Spesifikasi akselerator | Jenis contoh Healthomics | 
| --- | --- | 
| nvidia-tesla-t4 | G4 | 
| nvidia-tesla-t4-a10g | G4 dan G5 | 
| nvidia-tesla-a10g | G5 | 
| nvidia-t4-a10g-l4 | G4, G5, dan G6 | 
| nvidia-l4-a10g | G5 dan G6 | 
| nvidia-l4 | G6 | 
| nvidia-l40-an | G6e | 

Jika Anda menentukan jenis akselerator yang mendukung beberapa jenis instans, HealthOmics pilih jenis instans berdasarkan kapasitas yang tersedia. Jika kedua jenis instans tersedia, HealthOmics berikan preferensi ke instance biaya yang lebih rendah. Pengecualiannya adalah untuk akselerator tugas nvidia-t4-a10g-l4 yang memberikan preferensi pada instance generasi terbaru yang tersedia.

Untuk detail tentang jenis instance, lihat[Instans komputasi yang dipercepat](memory-and-compute-tasks.md#workflow-task-accelerated-computing-instances).

Dalam contoh berikut, definisi alur kerja menentukan `nvidia-l4` sebagai akselerator:

------
#### [ WDL ]

```
task my_task {
 runtime {
    ...
    acceleratorCount: 1
    acceleratorType: "nvidia-l4"
 }
 ...
}
```

------
#### [ NextFlow ]

```
process my_task {
 ...
 accelerator 1, type: "nvidia-l4"
 ...
}
```

------
#### [ CWL ]

```
cwlVersion: v1.2
class: CommandLineTool
requirements:
  ...
  cwltool:CUDARequirement:
      cudaDeviceCountMin: 1
      cudaComputeCapability: "nvidia-l4"
      cudaVersionMin: "1.0"
```

------

# Spesifikasi definisi alur kerja WDL
<a name="workflow-languages-wdl"></a>

Topik berikut memberikan rincian tentang jenis dan arahan yang tersedia untuk definisi alur kerja WDL di. HealthOmics

**Topics**
+ [Konversi tipe implisit di WDL yang lunak](#workflow-wdl-type-conversion)
+ [Definisi namespace di input.json](#workflow-wdl-namespace-defn)
+ [Tipe primitif di WDL](#workflow-wdl-primitive-types)
+ [Jenis kompleks di WDL](#workflow-wdl-complex-types)
+ [Arahan di WDL](#workflow-wdl-directives)
+ [Metadata tugas di WDL](#workflow-wdl-task-metadata)
+ [Contoh definisi alur kerja WDL](#wdl-example)

## Konversi tipe implisit di WDL yang lunak
<a name="workflow-wdl-type-conversion"></a>

HealthOmics mendukung konversi tipe implisit dalam file input.json dan definisi alur kerja. Untuk menggunakan casting tipe implisit, tentukan mesin alur kerja sebagai WDL lunak saat Anda membuat alur kerja. WDL lunak dirancang untuk menangani alur kerja yang dimigrasikan dari Cromwell. Ini mendukung arahan pelanggan Cromwell dan beberapa logika non-kesesuaian.

[WDL lunak mendukung konversi tipe untuk item berikut dalam daftar pengecualian terbatas WDL:](https://github.com/openwdl/wdl/blob/wdl-1.2/SPEC.md#-limited-exceptions)
+ Mengapung ke Int, di mana paksaan tidak menghasilkan kehilangan presisi (seperti 1.0 peta ke 1).
+ String ke Int/Float, di mana paksaan tidak menghasilkan kehilangan presisi.
+ Petakan [W, X] ke Array [Pair [Y, Z]], dalam kasus di mana W dapat dipaksakan ke Y dan X dapat dipaksakan ke Z.
+ Array [Pasangkan [W, X]] ke Peta [Y, Z], dalam kasus di mana W dapat dipaksakan ke Y dan X dapat dipaksakan ke Z (seperti 1,0 peta ke 1).

Untuk menggunakan casting tipe implisit, tentukan mesin alur kerja sebagai WDL\$1LENIENT saat Anda membuat alur kerja atau versi alur kerja.

Di konsol, parameter mesin alur kerja diberi nama **Bahasa**. Dalam API, parameter workflow engine diberi nama **engine**. Untuk informasi selengkapnya, lihat [Buat alur kerja pribadi](create-private-workflow.md) atau [Buat versi alur kerja](workflows-version-create.md).

## Definisi namespace di input.json
<a name="workflow-wdl-namespace-defn"></a>

HealthOmics mendukung variabel yang sepenuhnya memenuhi syarat di input.json. Misalnya, jika Anda mendeklarasikan dua variabel input bernama number1 dan number2 dalam alur kerja: **SumWorkflow**

```
workflow SumWorkflow {
  input {
    Int number1
    Int number2
  }
}
```

 Anda dapat menggunakannya sebagai variabel yang sepenuhnya memenuhi syarat di input.json: 

```
{
    "SumWorkflow.number1": 15,
    "SumWorkflow.number2": 27
}
```

## Tipe primitif di WDL
<a name="workflow-wdl-primitive-types"></a>

Tabel berikut menunjukkan bagaimana input dalam peta WDL ke tipe primitif yang cocok. HealthOmics menyediakan dukungan terbatas untuk pemaksaan tipe, jadi sebaiknya Anda menyetel tipe eksplisit. 


**Jenis primitif**  

| Jenis WDL | Jenis JSON | Contoh WDL | Contoh kunci dan nilai JSON | Catatan | 
| --- | --- | --- | --- | --- | 
| Boolean | boolean | Boolean b | "b": true | Nilainya harus huruf kecil dan tidak dikutip. | 
| Int | integer | Int i | "i": 7 | Harus tidak dikutip. | 
| Float | number | Float f | "f": 42.2 | Harus tidak dikutip. | 
| String | string | String s | "s": "characters" | String JSON yang merupakan URI harus dipetakan ke file WDL untuk diimpor. | 
| File | string | File f | "f": "s3://amzn-s3-demo-bucket1/path/to/file" | Amazon S3 dan HealthOmics penyimpanan URIs diimpor selama peran IAM yang disediakan untuk alur kerja memiliki akses baca ke objek ini. Tidak ada skema URI lain yang didukung (sepertifile://,https://, danftp://). URI harus menentukan objek. Itu tidak bisa menjadi direktori yang berarti tidak dapat diakhiri dengan/. | 
| Directory | string | Directory d | "d": "s3://bucket/path/" | DirectoryJenis ini tidak termasuk dalam WDL 1.0 atau 1.1, jadi Anda harus menambahkan version development ke header file WDL. URI harus berupa URI Amazon S3 dan dengan awalan yang diakhiri dengan '/'. Semua isi direktori akan disalin secara rekursif ke alur kerja sebagai unduhan tunggal. DirectorySeharusnya hanya berisi file yang terkait dengan alur kerja. | 

## Jenis kompleks di WDL
<a name="workflow-wdl-complex-types"></a>

Tabel berikut menunjukkan bagaimana input dalam peta WDL ke jenis JSON kompleks yang cocok. Tipe kompleks dalam WDL adalah struktur data yang terdiri dari tipe primitif. Struktur data seperti daftar akan dikonversi ke array.


**Jenis kompleks**  

| Jenis WDL | Jenis JSON | Contoh WDL | Contoh kunci dan nilai JSON | Catatan | 
| --- | --- | --- | --- | --- | 
| Array | array | Array[Int] nums | “nums": [1, 2, 3] | Anggota array harus mengikuti format tipe array WDL. | 
| Pair | object | Pair[String, Int] str\$1to\$1i | “str\$1to\$1i": \$1"left": "0", "right": 1\$1 | Setiap nilai pasangan harus menggunakan format JSON dari jenis WDL yang cocok. | 
| Map | object | Map[Int, String] int\$1to\$1string | "int\$1to\$1string": \$1 2: "hello", 1: "goodbye" \$1 | Setiap entri di peta harus menggunakan format JSON dari jenis WDL yang cocok. | 
| Struct | object | <pre>struct SampleBamAndIndex { <br />  String sample_name <br />  File bam <br />  File bam_index <br />} SampleBamAndIndex b_and_i</pre>  |  <pre>"b_and_i": { <br />   "sample_name": "NA12878", <br />   "bam": "s3://amzn-s3-demo-bucket1/NA12878.bam", <br />   "bam_index": "s3://amzn-s3-demo-bucket1/NA12878.bam.bai" <br />}           </pre>  | Nama-nama anggota struct harus sama persis dengan nama-nama kunci objek JSON. Setiap nilai harus menggunakan format JSON dari jenis WDL yang cocok. | 
| Object | N/A | N/A | N/A | ObjectJenis WDL sudah usang dan harus diganti dengan Struct dalam semua kasus. | 

## Arahan di WDL
<a name="workflow-wdl-directives"></a>

HealthOmics mendukung arahan berikut di semua versi WDL yang mendukung. HealthOmics 

### Konfigurasikan sumber daya GPU
<a name="workflow-wdl-directive-gpu"></a>

HealthOmics mendukung atribut runtime **acceleratorType** dan **acceleratorCount** dengan semua instance [GPU](https://docs.aws.amazon.com/omics/latest/dev/task-accelerators.html) yang didukung. HealthOmics juga mendukung alias bernama **gpuType** dan**gpuCount**, yang memiliki fungsi yang sama dengan rekan-rekan akselerator mereka. Jika definisi WDL berisi kedua arahan, HealthOmics gunakan nilai akselerator.

Contoh berikut menunjukkan cara menggunakan arahan ini:

```
runtime {
    gpuCount: 2
    gpuType: "nvidia-tesla-t4"
}
```

### Konfigurasikan coba lagi tugas untuk kesalahan layanan
<a name="workflow-wdl-task-retry"></a>

HealthOmics mendukung hingga dua percobaan ulang untuk tugas yang gagal karena kesalahan layanan (kode status HTTP 5XX). Anda dapat mengonfigurasi jumlah maksimum percobaan ulang (1 atau 2) dan Anda dapat memilih keluar dari percobaan ulang untuk kesalahan layanan. Secara default, HealthOmics mencoba maksimal dua percobaan ulang. 

Contoh berikut ditetapkan `preemptible` untuk memilih keluar dari percobaan ulang untuk kesalahan layanan:

```
{
  preemptible: 0 
}
```

Untuk informasi selengkapnya tentang percobaan ulang tugas HealthOmics, lihat[Tugas Mencoba Ulang](monitoring-runs.md#run-status-task-retries).

### Konfigurasikan tugas coba lagi untuk kehabisan memori
<a name="workflow-wdl-retries"></a>

HealthOmics mendukung percobaan ulang untuk tugas yang gagal karena kehabisan memori (kode keluar wadah 137, kode status HTTP 4XX). HealthOmics menggandakan jumlah memori untuk setiap upaya coba lagi.

Secara default, HealthOmics tidak mencoba lagi untuk jenis kegagalan ini. Gunakan `maxRetries` arahan untuk menentukan jumlah maksimum percobaan ulang.

Contoh berikut ditetapkan `maxRetries` ke 3, sehingga HealthOmics upaya maksimal empat upaya untuk menyelesaikan tugas (upaya awal ditambah tiga percobaan ulang):

```
runtime {
    maxRetries: 3
}
```

**catatan**  
Coba lagi tugas untuk kehabisan memori membutuhkan GNU findutils 4.2.3\$1. Wadah HealthOmics gambar default menyertakan paket ini. Jika Anda menentukan gambar kustom dalam definisi WDL Anda, pastikan bahwa gambar tersebut menyertakan GNU findutils 4.2.3\$1.

### Konfigurasikan kode pengembalian
<a name="workflow-wdl-directive-returnCodes"></a>

Atribut **ReturnCodes** menyediakan mekanisme untuk menentukan kode pengembalian, atau satu set kode pengembalian, yang menunjukkan keberhasilan pelaksanaan tugas. Mesin WDL menghormati kode pengembalian yang Anda tentukan di bagian **runtime** definisi WDL, dan menetapkan status tugas yang sesuai. 

```
runtime {
    returnCodes: 1
}
```

HealthOmics juga mendukung alias bernama **continueOnReturnCode**, yang memiliki kemampuan yang sama dengan **ReturnCodes**. Jika Anda menentukan kedua atribut, HealthOmics menggunakan nilai **ReturnCodes**.

## Metadata tugas di WDL
<a name="workflow-wdl-task-metadata"></a>

HealthOmics mendukung opsi metadata berikut untuk tugas WDL.

### Nonaktifkan caching tingkat tugas dengan atribut volatile
<a name="workflow-wdl-volatile-attribute"></a>

Atribut **volatile** memungkinkan Anda untuk menonaktifkan caching panggilan untuk tugas-tugas tertentu dalam alur kerja WDL Anda. Ketika tugas ditandai sebagai volatile, itu akan selalu mengeksekusi dan tidak pernah menggunakan hasil cache, bahkan ketika caching diaktifkan untuk dijalankan.

Tambahkan atribut **volatile** ke bagian **meta** definisi tugas Anda:

```
task my_volatile_task {
    meta {
        volatile: true
    }
    
    input {
        String input_file
    }
    
    command {
        echo "Processing ${input_file}" > output.txt
    }
    
    output {
        File result = "output.txt"
    }
}
```

## Contoh definisi alur kerja WDL
<a name="wdl-example"></a>

Contoh berikut menunjukkan definisi alur kerja pribadi untuk mengkonversi dari `CRAM` ke `BAM` dalam WDL. `BAM`Alur kerja `CRAM` to mendefinisikan dua tugas dan menggunakan alat dari `genomes-in-the-cloud` wadah, yang ditampilkan dalam contoh dan tersedia untuk umum. 

Contoh berikut menunjukkan cara menyertakan wadah Amazon ECR sebagai parameter. Ini memungkinkan HealthOmics untuk memverifikasi izin akses ke penampung Anda sebelum memulai menjalankan proses.

```
{
   ...
   "gotc_docker":"<account_id>.dkr.ecr.<region>.amazonaws.com/genomes-in-the-cloud:2.4.7-1603303710"
}
```

Contoh berikut menunjukkan cara menentukan file mana yang akan digunakan dalam proses Anda, saat file berada di bucket Amazon S3.

```
{
    "input_cram": "s3://amzn-s3-demo-bucket1/inputs/NA12878.cram",
    "ref_dict": "s3://amzn-s3-demo-bucket1/inputs/Homo_sapiens_assembly38.dict",
    "ref_fasta": "s3://amzn-s3-demo-bucket1/inputs/Homo_sapiens_assembly38.fasta",
    "ref_fasta_index": "s3://amzn-s3-demo-bucket1/inputs/Homo_sapiens_assembly38.fasta.fai",
    "sample_name": "NA12878"
}
```

Jika Anda ingin menentukan file dari toko urutan, tunjukkan bahwa seperti yang ditunjukkan dalam contoh berikut, menggunakan URI untuk penyimpanan urutan.

```
{
    "input_cram": "omics://429915189008.storage.us-west-2.amazonaws.com/111122223333/readSet/4500843795/source1",
    "ref_dict": "s3://amzn-s3-demo-bucket1/inputs/Homo_sapiens_assembly38.dict",
    "ref_fasta": "s3://amzn-s3-demo-bucket1/inputs/Homo_sapiens_assembly38.fasta",
    "ref_fasta_index": "s3://amzn-s3-demo-bucket1/inputs/Homo_sapiens_assembly38.fasta.fai",
    "sample_name": "NA12878"
}
```

Anda kemudian dapat menentukan alur kerja Anda di WDL seperti yang ditunjukkan pada contoh berikut. 

```
 version 1.0
workflow CramToBamFlow {
    input {
        File ref_fasta
        File ref_fasta_index
        File ref_dict
        File input_cram
        String sample_name
        String gotc_docker = "<account>.dkr.ecr.us-west-2.amazonaws.com/genomes-in-the-
cloud:latest"
    }
    #Converts CRAM to SAM to BAM and makes BAI.
    call CramToBamTask{
         input:
            ref_fasta = ref_fasta,
            ref_fasta_index = ref_fasta_index,
            ref_dict = ref_dict,
            input_cram = input_cram,
            sample_name = sample_name,
            docker_image = gotc_docker,
     }
     #Validates Bam.
     call ValidateSamFile{
        input:
           input_bam = CramToBamTask.outputBam,
           docker_image = gotc_docker,
     }
     #Outputs Bam, Bai, and validation report to the FireCloud data model.
     output {
         File outputBam = CramToBamTask.outputBam
         File outputBai = CramToBamTask.outputBai
         File validation_report = ValidateSamFile.report
      }
}
#Task definitions.
task CramToBamTask {
    input {
       # Command parameters
       File ref_fasta
       File ref_fasta_index
       File ref_dict
       File input_cram
       String sample_name
       # Runtime parameters
       String docker_image
    }
   #Calls samtools view to do the conversion.
   command {
       set -eo pipefail

       samtools view -h -T ~{ref_fasta} ~{input_cram} |
       samtools view -b -o ~{sample_name}.bam -
       samtools index -b ~{sample_name}.bam
       mv ~{sample_name}.bam.bai ~{sample_name}.bai
    }
    
    #Runtime attributes:
    runtime {
        docker: docker_image
    }

    #Outputs a BAM and BAI with the same sample name
     output {
         File outputBam = "~{sample_name}.bam"
         File outputBai = "~{sample_name}.bai"
    }
}

#Validates BAM output to ensure it wasn't corrupted during the file conversion.
task ValidateSamFile {
   input {
      File input_bam
      Int machine_mem_size = 4
      String docker_image
   }
   String output_name = basename(input_bam, ".bam") + ".validation_report"
   Int command_mem_size = machine_mem_size - 1
   command {
       java -Xmx~{command_mem_size}G -jar /usr/gitc/picard.jar \
       ValidateSamFile \
       INPUT=~{input_bam} \
       OUTPUT=~{output_name} \
       MODE=SUMMARY \
       IS_BISULFITE_SEQUENCED=false
    }
    runtime {
    docker: docker_image
    }
   #A text file is generated that lists errors or warnings that apply.
    output {
        File report = "~{output_name}"
    }
}
```

# Spesifikasi definisi alur kerja alur berikutnya
<a name="workflow-definition-nextflow"></a>

HealthOmics mendukung DSL1 Nextflow dan. DSL2 Lihat perinciannya di [Dukungan versi Nextflow](workflows-lang-versions.md#workflows-lang-versions-nextflow).

Nextflow DSL2 didasarkan pada bahasa pemrograman Groovy, sehingga parameternya dinamis dan pemaksaan tipe dimungkinkan menggunakan aturan yang sama seperti Groovy. Parameter dan nilai yang disediakan oleh input JSON tersedia di parameter (`params`) peta alur kerja.

**Topics**
+ [Gunakan plugin nf-schema dan nf-validation](#schema-and-validation-plugins-nextflow)
+ [Tentukan penyimpanan URIs](#storage-uris-nextflow)
+ [Arahan Nextflow](#workflow-nexflow-directives)
+ [Ekspor konten tugas](#exporting-task-content-nextflow)

## Gunakan plugin nf-schema dan nf-validation
<a name="schema-and-validation-plugins-nextflow"></a>

**catatan**  
Ringkasan HealthOmics dukungan untuk plugin:  
v22.04 - tidak ada dukungan untuk plugin
v23.10 — mendukung dan `nf-schema` `nf-validation`
v24.10 - mendukung `nf-schema`

HealthOmics menyediakan dukungan berikut untuk plugin Nextflow:
+ Untuk Nextflow v23.10, HealthOmics pra-instal plugin nf-validation @1 .1.1. 
+ Untuk Nextflow v23.10 dan yang lebih baru, HealthOmics pra-instal plugin nf-schema @2 .3.0.
+ Anda tidak dapat mengambil plugin tambahan selama menjalankan alur kerja. HealthOmics mengabaikan versi plugin lain yang Anda tentukan dalam `nextflow.config` file.
+ Untuk Nextflow v24 dan yang lebih tinggi, `nf-schema` adalah versi baru dari plugin yang tidak digunakan lagi. `nf-validation` Untuk informasi selengkapnya, lihat [skema nf di repositori](https://github.com/nextflow-io/nf-schema) Nextflow. GitHub

## Tentukan penyimpanan URIs
<a name="storage-uris-nextflow"></a>

Ketika Amazon S3 atau HealthOmics URI digunakan untuk membuat file atau objek jalur Nextflow, itu membuat objek yang cocok tersedia untuk alur kerja, selama akses baca diberikan. Penggunaan awalan atau direktori diizinkan untuk Amazon S3. URIs Sebagai contoh, lihat [Format parameter masukan Amazon S3](workflows-run-inputs.md#s3-run-input-formats). 

HealthOmics sebagian mendukung penggunaan pola glob di Amazon URIs S3 atau Storage HealthOmics . URIs Gunakan pola Glob dalam definisi alur kerja untuk pembuatan `path` atau `file` saluran. Untuk perilaku yang diharapkan dan kasus yang tepat, lihat[Nextflow Penanganan pola Glob di input Amazon S3](workflows-run-inputs.md#wd-nextflow-s3-formats).

## Arahan Nextflow
<a name="workflow-nexflow-directives"></a>

Anda mengonfigurasi arahan Nextflow dalam file konfigurasi Nextflow atau definisi alur kerja. Daftar berikut menunjukkan urutan prioritas yang HealthOmics digunakan untuk menerapkan pengaturan konfigurasi, dari prioritas terendah hingga tertinggi:

1. Konfigurasi global dalam file konfigurasi.

1. Bagian tugas dari definisi alur kerja.

1. Selektor khusus tugas dalam file konfigurasi.

**Topics**
+ [Strategi coba lagi tugas menggunakan `errorStrategy`](#workflow-nextflow-errorStrategy)
+ [Upaya coba lagi tugas menggunakan `maxRetries`](#workflow-nexflow-task-retry)
+ [Menyisih dari tugas coba lagi menggunakan `omicsRetryOn5xx`](#workflow-nextflow-retry-5xx)
+ [Durasi tugas menggunakan `time` direktif](#time-directive-nextflow)

### Strategi coba lagi tugas menggunakan `errorStrategy`
<a name="workflow-nextflow-errorStrategy"></a>

Gunakan `errorStrategy` direktif untuk menentukan strategi kesalahan tugas. Secara default, ketika tugas kembali dengan indikasi kesalahan (status keluar bukan nol), tugas berhenti dan HealthOmics mengakhiri seluruh proses. Jika Anda menyetel `errorStrategy` ke`retry`, HealthOmics coba satu coba lagi tugas yang gagal. Untuk menambah jumlah percobaan ulang, lihat[Upaya coba lagi tugas menggunakan `maxRetries`](#workflow-nexflow-task-retry).

```
process {
    label 'my_label'
    errorStrategy 'retry'

    script:
    """
    your-command-here
    """
}
```

Untuk informasi tentang cara HealthOmics menangani percobaan ulang tugas selama proses, lihat[Tugas Mencoba Ulang](monitoring-runs.md#run-status-task-retries).

### Upaya coba lagi tugas menggunakan `maxRetries`
<a name="workflow-nexflow-task-retry"></a>

Secara default, HealthOmics tidak mencoba mencoba ulang tugas yang gagal, atau mencoba satu percobaan lagi jika Anda mengonfigurasi. `errorStrategy` Untuk meningkatkan jumlah percobaan ulang maksimum, atur `errorStrategy` ke `retry` dan konfigurasikan jumlah maksimum percobaan ulang menggunakan arahan`maxRetries`.

Contoh berikut menetapkan jumlah maksimum percobaan ulang ke 3 dalam konfigurasi global.

```
process {
    errorStrategy = 'retry'
    maxRetries = 3
}
```

Contoh berikut menunjukkan cara mengatur `maxRetries` di bagian tugas definisi alur kerja.

```
process myTask {
    label 'my_label'
    errorStrategy 'retry'
    maxRetries 3
    
    script:
    """
    your-command-here
    """
}
```

Contoh berikut menunjukkan cara menentukan konfigurasi khusus tugas dalam file konfigurasi Nextflow, berdasarkan pemilih nama atau label.

```
process {
    withLabel: 'my_label' {
        errorStrategy = 'retry'
        maxRetries = 3
    }

    withName: 'myTask' {
        errorStrategy = 'retry'
        maxRetries = 3
    }
}
```

### Menyisih dari tugas coba lagi menggunakan `omicsRetryOn5xx`
<a name="workflow-nextflow-retry-5xx"></a>

Untuk Nextflow v23 dan v24, HealthOmics mendukung percobaan ulang tugas jika tugas gagal karena kesalahan layanan (kode status HTTP 5XX). Secara default, HealthOmics mencoba hingga dua percobaan ulang dari tugas yang gagal. 

Anda dapat mengonfigurasi `omicsRetryOn5xx` untuk memilih keluar dari percobaan ulang tugas untuk kesalahan layanan. Untuk informasi selengkapnya tentang coba lagi tugas HealthOmics, lihat[Tugas Mencoba Ulang](monitoring-runs.md#run-status-task-retries).

Contoh berikut mengkonfigurasi `omicsRetryOn5xx` dalam konfigurasi global untuk memilih keluar dari tugas coba lagi.

```
process {
    omicsRetryOn5xx = false
}
```

Contoh berikut menunjukkan cara mengkonfigurasi `omicsRetryOn5xx` di bagian tugas definisi alur kerja.

```
process myTask {
    label 'my_label'
    omicsRetryOn5xx = false
    
    script:
    """
    your-command-here
    """
}
```

Contoh berikut menunjukkan cara menyetel `omicsRetryOn5xx` konfigurasi khusus tugas dalam file konfigurasi Nextflow, berdasarkan pemilih nama atau label.

```
process {
    withLabel: 'my_label' {
        omicsRetryOn5xx = false
    }

    withName: 'myTask' {
        omicsRetryOn5xx = false
    }
}
```

### Durasi tugas menggunakan `time` direktif
<a name="time-directive-nextflow"></a>

HealthOmics menyediakan kuota yang dapat disesuaikan (lihat[HealthOmics kuota layanan](service-quotas.md)) untuk menentukan durasi maksimum untuk menjalankan. Untuk alur kerja Nextflow v23 dan v24, Anda juga dapat menentukan durasi tugas maksimum menggunakan direktif Nextflow. `time`

Selama pengembangan alur kerja baru, menyetel durasi tugas maksimum membantu Anda menangkap tugas runaway dan tugas yang berjalan lama. 

Untuk informasi selengkapnya tentang direktif waktu Nextflow, lihat direktif [waktu](https://www.nextflow.io/docs/latest/reference/process.html#process-time) di referensi Nextflow.

HealthOmics memberikan dukungan berikut untuk arahan waktu Nextflow:

1. HealthOmics mendukung granularitas 1 menit untuk arahan waktu. Anda dapat menentukan nilai antara 60 detik dan nilai durasi lari maksimum.

1. Jika Anda memasukkan nilai kurang dari 60, HealthOmics bulatkan hingga 60 detik. Untuk nilai di atas 60, HealthOmics bulatkan ke menit terdekat.

1. Jika alur kerja mendukung percobaan ulang untuk tugas, HealthOmics coba ulang tugas jika waktu habis.

1. Jika tugas habis waktu (atau waktu coba lagi terakhir habis), HealthOmics batalkan tugas. Operasi ini dapat memiliki durasi satu hingga dua menit.

1. Pada batas waktu tugas, HealthOmics menetapkan status run dan task menjadi gagal, dan membatalkan tugas lain dalam proses (untuk tugas dalam status Mulai, Pending, atau Running). HealthOmics mengekspor output dari tugas yang diselesaikan sebelum batas waktu ke lokasi output S3 yang Anda tentukan. 

1. Waktu yang dihabiskan tugas dalam status tertunda tidak dihitung terhadap durasi tugas.

1. Jika run adalah bagian dari grup run dan grup run habis lebih cepat dari pengatur waktu tugas, proses dan tugas akan beralih ke status gagal.

Tentukan durasi batas waktu menggunakan satu atau beberapa unit berikut:`ms`,,`s`, `m``h`, atau`d`.

Contoh berikut menunjukkan cara menentukan konfigurasi global dalam file konfigurasi Nextflow. Ini menetapkan batas waktu global 1 jam dan 30 menit.

```
process {
    time = '1h30m'
}
```

Contoh berikut menunjukkan cara menentukan direktif waktu di bagian tugas definisi alur kerja. Contoh ini menetapkan batas waktu 3 hari, 5 jam, dan 4 menit. Nilai ini lebih diutamakan daripada nilai global dalam file konfigurasi, tetapi tidak diutamakan daripada arahan waktu khusus tugas untuk dalam file konfigurasi. `my_label`

```
process myTask {
    label 'my_label'
    time '3d5h4m'
        
    script:
    """
    your-command-here
    """
}
```

Contoh berikut menunjukkan cara menentukan arahan waktu khusus tugas dalam file konfigurasi Nextflow, berdasarkan pemilih nama atau label. Contoh ini menetapkan nilai batas waktu tugas global 30 menit. Ini menetapkan nilai 2 jam untuk tugas `myTask` dan menetapkan nilai 3 jam untuk tugas dengan label`my_label`. Untuk tugas yang cocok dengan pemilih, nilai ini lebih diutamakan daripada nilai global dan nilai dalam definisi alur kerja.

```
process {
    time = '30m'
    
    withLabel: 'my_label' {
        time = '3h'  
    }

    withName: 'myTask' {
        time = '2h'  
    }
}
```

## Ekspor konten tugas
<a name="exporting-task-content-nextflow"></a>

Untuk alur kerja yang ditulis dalam Nextflow, tentukan direktif **PublishDir** untuk mengekspor konten tugas ke bucket Amazon S3 keluaran Anda. Seperti yang ditunjukkan pada contoh berikut, atur nilai **publishDir** ke. `/mnt/workflow/pubdir` Untuk mengekspor file ke Amazon S3, file harus ada di direktori ini.

```
 nextflow.enable.dsl=2
              
  workflow {
    CramToBamTask(params.ref_fasta, params.ref_fasta_index, params.ref_dict, params.input_cram, params.sample_name)
    ValidateSamFile(CramToBamTask.out.outputBam)
  }
  
  process CramToBamTask {
    container "<account>.dkr.ecr.us-west-2.amazonaws.com/genomes-in-the-cloud"
  
    publishDir "/mnt/workflow/pubdir"
  
    input:
        path ref_fasta
        path ref_fasta_index
        path ref_dict
        path input_cram
        val sample_name
  
    output:
        path "${sample_name}.bam", emit: outputBam
        path "${sample_name}.bai", emit: outputBai
  
    script:
    """
        set -eo pipefail
  
        samtools view -h -T $ref_fasta $input_cram |
        samtools view -b -o ${sample_name}.bam -
        samtools index -b ${sample_name}.bam
        mv ${sample_name}.bam.bai ${sample_name}.bai
    """
  }
  
  process ValidateSamFile {
    container "<account>.dkr.ecr.us-west-2.amazonaws.com/genomes-in-the-cloud"
  
    publishDir "/mnt/workflow/pubdir"
  
    input:
        file input_bam
  
    output:
        path "validation_report"
  
    script:
    """
        java -Xmx3G -jar /usr/gitc/picard.jar \
        ValidateSamFile \
        INPUT=${input_bam} \
        OUTPUT=validation_report \
        MODE=SUMMARY \
        IS_BISULFITE_SEQUENCED=false
    """
  }
```

# Spesifikasi definisi alur kerja CWL
<a name="workflow-languages-cwl"></a>

Alur kerja yang ditulis dalam Bahasa Alur Kerja Umum, atau CWL, menawarkan fungsionalitas serupa dengan alur kerja yang ditulis dalam WDL dan Alur Berikutnya. Anda dapat menggunakan Amazon S3 atau HealthOmics penyimpanan URIs sebagai parameter input. 

Jika Anda menentukan input dalam SecondaryFile dalam sub alur kerja, tambahkan definisi yang sama dalam alur kerja utama.

HealthOmics alur kerja tidak mendukung proses operasi. [Untuk mempelajari lebih lanjut tentang proses operasi dalam alur kerja CWL, lihat dokumentasi CWL.](https://www.commonwl.org/user_guide/topics/operations.html)

Praktik terbaik adalah menentukan alur kerja CWL terpisah untuk setiap wadah yang Anda gunakan. Kami menyarankan Anda untuk tidak melakukan hardcode entri DockerPull dengan URI ECR Amazon tetap.

**Topics**
+ [Mengkonversi alur kerja CWL untuk digunakan HealthOmics](#workflow-cwl-convert)
+ [Menyisih dari tugas coba lagi menggunakan `omicsRetryOn5xx`](#workflow-cwl-retry-5xx)
+ [Lingkarkan langkah alur kerja](#workflow-cwl-loop)
+ [Coba lagi tugas dengan peningkatan memori](#workflow-cwl-out-of-memory-retry)
+ [Contoh](#workflow-cwl-examples)

## Mengkonversi alur kerja CWL untuk digunakan HealthOmics
<a name="workflow-cwl-convert"></a>

Untuk mengonversi definisi alur kerja CWL yang ada untuk digunakan HealthOmics, buat perubahan berikut:
+ Ganti semua wadah Docker URIs dengan Amazon URIs ECR.
+ Pastikan bahwa semua file alur kerja dideklarasikan dalam alur kerja utama sebagai input, dan semua variabel didefinisikan secara eksplisit.
+ Pastikan bahwa semua JavaScript kode adalah keluhan mode ketat.

## Menyisih dari tugas coba lagi menggunakan `omicsRetryOn5xx`
<a name="workflow-cwl-retry-5xx"></a>

HealthOmics mendukung percobaan ulang tugas jika tugas gagal karena kesalahan layanan (kode status HTTP 5XX). Secara default, HealthOmics mencoba hingga dua percobaan ulang dari tugas yang gagal. Untuk informasi selengkapnya tentang coba lagi tugas HealthOmics, lihat[Tugas Mencoba Ulang](monitoring-runs.md#run-status-task-retries).

Untuk memilih keluar dari tugas coba lagi untuk kesalahan layanan, konfigurasikan `omicsRetryOn5xx` arahan dalam definisi alur kerja. Anda dapat menentukan arahan ini di bawah persyaratan atau petunjuk. Kami merekomendasikan menambahkan arahan sebagai petunjuk untuk portabilitas.

```
requirements:
  ResourceRequirement:
    omicsRetryOn5xx: false

hints:
  ResourceRequirement:
    omicsRetryOn5xx: false
```

Persyaratan mengesampingkan petunjuk. Jika implementasi tugas menyediakan persyaratan sumber daya dalam petunjuk yang juga disediakan oleh persyaratan dalam alur kerja terlampir, persyaratan terlampir akan diutamakan.

Jika persyaratan tugas yang sama muncul pada tingkat alur kerja yang berbeda, HealthOmics gunakan entri paling spesifik dari `requirements` (atau`hints`, jika tidak ada entri di`requirements`). Daftar berikut menunjukkan urutan prioritas yang HealthOmics digunakan untuk menerapkan pengaturan konfigurasi, dari prioritas terendah hingga tertinggi:
+ Tingkat alur kerja
+ Tingkat langkah
+ Bagian tugas dari definisi alur kerja

Contoh berikut menunjukkan cara mengkonfigurasi `omicsRetryOn5xx` direktif di berbagai tingkat alur kerja. Dalam contoh ini, persyaratan tingkat alur kerja mengesampingkan petunjuk tingkat alur kerja. Konfigurasi persyaratan pada tingkat tugas dan langkah mengesampingkan konfigurasi petunjuk.

```
class: Workflow
# Workflow-level requirement and hint
requirements:
  ResourceRequirement:
    omicsRetryOn5xx: false

hints:
  ResourceRequirement:
    omicsRetryOn5xx: false  # The value in requirements overrides this value 

steps:
  task_step:
    # Step-level requirement
    requirements:
      ResourceRequirement:
        omicsRetryOn5xx: false
    # Step-level hint
    hints:
      ResourceRequirement:
        omicsRetryOn5xx: false
    run:
      class: CommandLineTool
      # Task-level requirement
      requirements:
        ResourceRequirement:
          omicsRetryOn5xx: false
      # Task-level hint
      hints:
        ResourceRequirement:
          omicsRetryOn5xx: false
```

## Lingkarkan langkah alur kerja
<a name="workflow-cwl-loop"></a>

HealthOmics mendukung perulangan langkah alur kerja. Anda dapat menggunakan loop untuk menjalankan langkah alur kerja berulang kali hingga kondisi tertentu terpenuhi. Ini berguna untuk proses berulang di mana Anda perlu mengulangi tugas beberapa kali atau sampai hasil tertentu tercapai.

**Catatan:** Fungsionalitas loop membutuhkan CWL versi 1.2 atau yang lebih baru. Alur kerja yang menggunakan versi CWL lebih awal dari 1.2 tidak mendukung operasi loop.

Untuk menggunakan loop dalam alur kerja CWL Anda, tentukan persyaratan Loop. Contoh berikut menunjukkan konfigurasi persyaratan loop:

```
requirements:
  - class: "http://commonwl.org/cwltool#Loop"
    loopWhen: $(inputs.counter < inputs.max)
    loop:
      counter:
        loopSource: result
        valueFrom: $(self)
    outputMethod: last
```

`loopWhen`Bidang mengontrol saat loop berakhir. Dalam contoh ini, loop berlanjut selama penghitung kurang dari nilai maksimum. `loop`Bidang mendefinisikan bagaimana parameter input diperbarui antara iterasi. `loopSource`Menentukan output dari umpan iterasi sebelumnya ke iterasi berikutnya. `outputMethod`Bidang diatur untuk `last` mengembalikan hanya output iterasi akhir ini.

## Coba lagi tugas dengan peningkatan memori
<a name="workflow-cwl-out-of-memory-retry"></a>

HealthOmics mendukung percobaan ulang otomatis kegagalan out-of-memory tugas. Ketika tugas keluar dengan kode 137 (out-of-memory), HealthOmics membuat tugas baru dengan peningkatan alokasi memori berdasarkan pengganda yang ditentukan.

**catatan**  
HealthOmics mencoba kembali out-of-memory kegagalan hingga 3 kali atau sampai alokasi memori mencapai 1536 GiB, batas mana pun yang tercapai terlebih dahulu.

Contoh berikut menunjukkan cara mengkonfigurasi out-of-memory coba lagi:

```
hints:
  ResourceRequirement:
    ramMin: 4096
  http://arvados.org/cwl#OutOfMemoryRetry:
    memoryRetryMultiplier: 2.5
```

Ketika tugas gagal karena out-of-memory, HealthOmics menghitung alokasi memori coba lagi menggunakan rumus:. `previous_run_memory × memoryRetryMultiplier` Pada contoh di atas, jika tugas dengan memori 4096 MB gagal, upaya coba lagi menggunakan memori 4096 × 2,5 = 10.240 MB.

`memoryRetryMultiplier`Parameter mengontrol berapa banyak memori tambahan yang dialokasikan untuk upaya coba lagi:
+ **Nilai default:** Jika Anda tidak menentukan nilai, nilai defaultnya `2` (menggandakan memori)
+ **Rentang yang valid:** Harus angka positif lebih besar dari`1`. Nilai yang tidak valid menghasilkan kesalahan validasi 4XX
+ **Nilai efektif minimum: Nilai** antara `1` dan `1.5` secara otomatis ditingkatkan `1.5` untuk memastikan peningkatan memori yang berarti dan mencegah upaya coba lagi yang berlebihan

## Contoh
<a name="workflow-cwl-examples"></a>

Berikut ini adalah contoh alur kerja yang ditulis dalam CWL. 

```
cwlVersion: v1.2
class: Workflow

inputs:
in_file:
type: File
secondaryFiles: [.fai]

out_filename: string
docker_image: string


outputs:
copied_file:
type: File
outputSource: copy_step/copied_file

steps:
copy_step:
in:
  in_file: in_file
  out_filename: out_filename
  docker_image: docker_image
out: [copied_file]
run: copy.cwl
```

File berikut mendefinisikan `copy.cwl` tugas.

```
cwlVersion: v1.2
class: CommandLineTool
baseCommand: cp

inputs:
in_file:
type: File
secondaryFiles: [.fai]
inputBinding:
  position: 1

out_filename:
type: string
inputBinding:
  position: 2
docker_image:
type: string

outputs:
copied_file:
type: File
outputBinding:
    glob: $(inputs.out_filename)

requirements:
InlineJavascriptRequirement: {}
DockerRequirement:
dockerPull: "$(inputs.docker_image)"
```

Berikut ini adalah contoh alur kerja yang ditulis dalam CWL dengan persyaratan GPU.

```
cwlVersion: v1.2
class: CommandLineTool
baseCommand: ["/bin/bash", "docm_haplotypeCaller.sh"]
$namespaces:
cwltool: http://commonwl.org/cwltool#
requirements:
cwltool:CUDARequirement:
cudaDeviceCountMin: 1
cudaComputeCapability: "nvidia-tesla-t4" 
cudaVersionMin: "1.0"
InlineJavascriptRequirement: {}
InitialWorkDirRequirement:
listing:
- entryname: 'docm_haplotypeCaller.sh'
  entry: |
          nvidia-smi --query-gpu=gpu_name,gpu_bus_id,vbios_version --format=csv   

inputs: []
outputs: []
```

# Contoh definisi alur kerja
<a name="workflow-definition-examples"></a>

Contoh berikut menunjukkan definisi alur kerja yang sama di WDL, Nextflow, dan CWL.

------
#### [ WDL ]

```
version 1.1

task my_task {
   runtime { ... }
   inputs {
       File input_file
       String name
       Int threshold
   }
   
   command <<<
   my_tool --name ~{name} --threshold ~{threshold} ~{input_file}
   >>>
   
   output {
       File results = "results.txt"
   }
}

workflow my_workflow {
   inputs {
       File input_file
       String name
       Int threshold = 50
   }
   
   call my_task {
       input:
          input_file = input_file,
          name = name,
          threshold = threshold
   }
   outputs {
       File results = my_task.results
   }
}
```

------
#### [ Nextflow ]

```
nextflow.enable.dsl = 2

params.input_file = null
params.name = null
params.threshold = 50

process my_task {
   // <directives>
   
   input:
     path input_file
     val name
     val threshold
   
   output:
     path 'results.txt', emit: results
   
   script:
     """
     my_tool --name ${name} --threshold ${threshold} ${input_file}
     """
     
   
}

workflow MY_WORKFLOW {
   my_task(
       params.input_file,
       params.name,
       params.threshold
   )
}

workflow {
   MY_WORKFLOW()
}
```

------
#### [ CWL ]

```
cwlVersion: v1.2
class: Workflow

requirements:
    InlineJavascriptRequirement: {}

inputs:
   input_file: File
   name: string
   threshold: int

outputs:
    result:
        type: ...
        outputSource: ...

steps:
    my_task:
        run:
            class: CommandLineTool
            baseCommand: my_tool
            requirements:
                ...
            inputs:
                name:
                    type: string
                    inputBinding:
                        prefix: "--name"
                threshold:
                    type: int
                    inputBinding:
                        prefix: "--threshold"
                input_file:
                    type: File
                    inputBinding: {}
            outputs:
                results:
                    type: File
                    outputBinding:
                        glob: results.txt
```

------

# File template parameter untuk HealthOmics alur kerja
<a name="parameter-templates"></a>

Template parameter menentukan parameter input untuk alur kerja. Anda dapat menentukan parameter input untuk membuat alur kerja Anda lebih fleksibel dan serbaguna. Misalnya, Anda dapat menentukan parameter untuk lokasi Amazon S3 dari file genom referensi. Template parameter dapat disediakan melalui layanan repositori berbasis Git atau drive lokal Anda. Pengguna kemudian dapat menjalankan alur kerja menggunakan berbagai set data. 

Anda dapat membuat template parameter untuk alur kerja Anda, atau HealthOmics dapat menghasilkan template parameter untuk Anda.

Template parameter adalah file JSON. Dalam file, setiap parameter input adalah objek bernama yang harus cocok dengan nama input alur kerja. Saat Anda memulai proses, jika Anda tidak memberikan nilai untuk semua parameter yang diperlukan, proses gagal.

Objek parameter masukan mencakup atribut berikut:
+ **description**— Atribut wajib ini adalah string yang ditampilkan konsol di halaman **Mulai jalankan**. Deskripsi ini juga dipertahankan sebagai run metadata.
+ **optional**— Atribut opsional ini menunjukkan apakah parameter input adalah opsional. Jika Anda tidak menentukan **optional** bidang, parameter input diperlukan.

Contoh template parameter berikut menunjukkan bagaimana menentukan parameter masukan.

```
{
  "myRequiredParameter1": {
     "description": "this parameter is required",
  },
  "myRequiredParameter2": {
     "description": "this parameter is also required",
     "optional": false
  },
  "myOptionalParameter": {
     "description": "this parameter is optional",
     "optional": true
  }
}
```

## Menghasilkan templat parameter
<a name="parameter-parsing"></a>

HealthOmics menghasilkan template parameter dengan mengurai definisi alur kerja untuk mendeteksi parameter input. Jika Anda menyediakan file template parameter untuk alur kerja, parameter dalam file Anda akan mengganti parameter yang terdeteksi dalam definisi alur kerja.

Ada sedikit perbedaan antara logika parsing mesin CWL, WDL, dan Nextflow, seperti yang dijelaskan di bagian berikut. 

**Topics**
+ [Deteksi parameter untuk CWL](#parameter-parsing-cwl)
+ [Deteksi parameter untuk WDL](#parameter-parsing-wdl)
+ [Deteksi parameter untuk Nextflow](#parameter-parsing-nextflow)

### Deteksi parameter untuk CWL
<a name="parameter-parsing-cwl"></a>

Di mesin alur kerja CWL, logika parsing membuat asumsi berikut:
+ Tipe yang didukung nullable ditandai sebagai parameter input opsional.
+ Tipe yang didukung non-null ditandai sebagai parameter input yang diperlukan.
+ Setiap parameter dengan nilai default ditandai sebagai parameter input opsional.
+ Deskripsi diekstraksi dari `label` bagian dari definisi `main` alur kerja. Jika tidak `label` ditentukan, deskripsi akan kosong (string kosong). 

Tabel berikut menunjukkan contoh interpolasi CWL. Untuk setiap contoh, nama parameternya adalah`x`. Jika parameter diperlukan, Anda harus memberikan nilai untuk parameter. Jika parameternya opsional, Anda tidak perlu memberikan nilai.

Tabel ini menunjukkan contoh interpolasi CWL untuk tipe primitif.


| Input | Contoh input/output | Wajib | 
| --- | --- | --- | 
|  <pre>x:               <br />  type: int</pre>  | 1 atau 2 atau... | Ya | 
|  <pre>x:               <br />  type: int<br />  default: 2</pre>  | Nilai default adalah 2. Masukan yang valid adalah 1 atau 2 atau... | Tidak | 
|  <pre>x:               <br />  type: int?</pre>  | Masukan yang valid adalah None atau 1 atau 2 atau... | Tidak | 
|  <pre>x:               <br />  type: int?<br />  default: 2</pre>  | Nilai default adalah 2. Masukan yang valid adalah None atau 1 atau 2 atau... | Tidak | 

Tabel berikut menunjukkan contoh interpolasi CWL untuk tipe kompleks. Tipe kompleks adalah kumpulan tipe primitif.


| Input | Contoh input/output | Wajib | 
| --- | --- | --- | 
|  <pre>x:               <br />  type: array<br />  items: int</pre>  | [] atau [1,2,3]  | Ya | 
|  <pre>x:               <br />  type: array?<br />  items: int</pre>  | Tidak ada atau [] atau [1,2,3]  | Tidak | 
|  <pre>x:               <br />  type: array<br />  items: int?</pre>  |  [] atau [Tidak ada, 3, tidak ada]  | Ya | 
|  <pre>x:               <br />  type: array?<br />  items: int?</pre>  |  [Tidak] atau Tidak ada atau [1,2,3] atau [Tidak ada, 3] tetapi tidak []  | Tidak | 

### Deteksi parameter untuk WDL
<a name="parameter-parsing-wdl"></a>

Di mesin alur kerja WDL, logika parsing membuat asumsi berikut:
+ Tipe yang didukung nullable ditandai sebagai parameter input opsional. 
+ Untuk tipe yang didukung yang tidak dapat dibatalkan:
  + Setiap variabel input dengan penetapan literal atau ekspresi ditandai sebagai parameter opsional. Misalnya:

    ```
     Int x = 2 
    Float f0 = 1.0 + f1
    ```
  + Jika tidak ada nilai atau ekspresi yang ditetapkan ke parameter input, mereka akan ditandai sebagai parameter yang diperlukan. 
+ Deskripsi diekstraksi dari `parameter_meta` dalam definisi `main` alur kerja. Jika tidak `parameter_meta` ditentukan, deskripsi akan kosong (string kosong). Untuk informasi lebih lanjut, lihat spesifikasi WDL untuk metadata [Parameter](https://github.com/openwdl/wdl/blob/wdl-1.2/SPEC.md#metadata-sections).

Tabel berikut menunjukkan contoh interpolasi WDL. Untuk setiap contoh, nama parameternya adalah`x`. Jika parameter diperlukan, Anda harus memberikan nilai untuk parameter. Jika parameternya opsional, Anda tidak perlu memberikan nilai.

Tabel ini menunjukkan contoh interpolasi WDL untuk tipe primitif.


| Input | Contoh input/output | Wajib | 
| --- | --- | --- | 
| Int x | 1 atau 2 atau... | Ya | 
| Int x = 2 | 2 | Tidak | 
| Int x = 1\$12 | 3 | Tidak | 
| Int x = y\$1z | y\$1z | Tidak | 
| Int? x | Tidak ada atau 1 atau 2 atau... | Ya | 
| Int? x = 2 | Tidak ada atau 2 | Tidak | 
| Int? x = 1\$12 | Tidak ada atau 3 | Tidak | 
| Int? x = y\$1z | Tidak ada atau y\$1z | Tidak | 

Tabel berikut menunjukkan contoh interpolasi WDL untuk tipe kompleks. Tipe kompleks adalah kumpulan tipe primitif. 


| Input | Contoh input/output | Wajib | 
| --- | --- | --- | 
| Array [Int] x | [1,2,3] atau [] | Ya | 
| Array [Int] \$1 x | [1], tetapi tidak [] | Ya | 
| Array [Int]? x | Tidak ada atau [] atau [1,2,3] | Tidak | 
| Array [Int?] x | [] atau [Tidak ada, 3, tidak ada] | Ya | 
| Array [Int?] =? x | [Tidak] atau Tidak ada atau [1,2,3] atau [Tidak ada, 3] tetapi tidak [] | Tidak | 
| Contoh struktur \$1String a, Int y\$1 nanti di input: Contoh MySample  |  <pre>String a = mySample.a<br />   Int y = mySample.y</pre>  | Ya | 
| Contoh struktur \$1String a, Int y\$1 nanti di input: Sampel? MySample |  <pre>if (defined(mySample)) { <br />     String a = mySample.a<br />     Int y = mySample.y<br />   } </pre>  | Tidak | 

### Deteksi parameter untuk Nextflow
<a name="parameter-parsing-nextflow"></a>

Untuk Nextflow, HealthOmics buat template parameter dengan mengurai file. `nextflow_schema.json` Jika definisi alur kerja tidak menyertakan file skema, HealthOmics parsing file definisi alur kerja utama.

**Topics**
+ [Mengurai file skema](#parameter-parsing-nextflow-schema)
+ [Mengurai file utama](#parameter-parsing-nextflow-main)
+ [Parameter bersarang](#parameter-parsing-nextflow-nested)
+ [Contoh interpolasi Nextflow](#parameter-parsing-nextflow-examples)

#### Mengurai file skema
<a name="parameter-parsing-nextflow-schema"></a>

Agar parsing berfungsi dengan benar, pastikan file skema memenuhi persyaratan berikut:
+ File skema diberi nama `nextflow_schema.json` dan terletak di direktori yang sama dengan file alur kerja utama.
+ File skema adalah JSON valid seperti yang didefinisikan dalam salah satu skema berikut:
  + [skema json. org/draft/2020-12/schema](https://json-schema.org/draft/2020-12/schema).
  + [skema json. org/draft-07/schema](https://json-schema.org/draft-07/schema).

HealthOmics `nextflow_schema.json`mem-parsing file untuk menghasilkan template parameter:
+ Ekstrak semua **properties** yang didefinisikan dalam skema.
+ Termasuk properti **description** jika tersedia untuk properti.
+ Mengidentifikasi apakah setiap parameter opsional atau wajib, berdasarkan **required** bidang properti.

Contoh berikut menunjukkan file definisi dan file parameter yang dihasilkan.

```
{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "$defs": {
        "input_options": {
            "title": "Input options",
            "type": "object",
            "required": ["input_file"],
            "properties": {
                "input_file": {
                    "type": "string",
                    "format": "file-path",
                    "pattern": "^s3://[a-z0-9.-]{3,63}(?:/\\S*)?$",
                    "description": "description for input_file"
                },
                "input_num": {
                    "type": "integer",
                    "default": 42,
                    "description": "description for input_num"
                }
            }
        },
        "output_options": {
            "title": "Output options",
            "type": "object",
            "required": ["output_dir"],
            "properties": {
                "output_dir": {
                    "type": "string",
                    "format": "file-path",
                    "description": "description for output_dir",
                }
            }
        }
    },
    "properties": {
        "ungrouped_input_bool": {
            "type": "boolean",
            "default": true
        }
    },
    "required": ["ungrouped_input_bool"],
    "allOf": [
        { "$ref": "#/$defs/input_options" },
        { "$ref": "#/$defs/output_options" }
    ]
}
```

Template parameter yang dihasilkan:

```
{
    "input_file": {
        "description": "description for input_file",
        "optional": False
    },
    "input_num": {
        "description": "description for input_num",
        "optional": True
    },
    "output_dir": {
        "description": "description for output_dir",
        "optional": False
    },
    "ungrouped_input_bool": {
        "description": None,
        "optional": False
    }
}
```

#### Mengurai file utama
<a name="parameter-parsing-nextflow-main"></a>

Jika definisi alur kerja tidak menyertakan `nextflow_schema.json` file, HealthOmics parsing file definisi alur kerja utama.

HealthOmics menganalisis `params` ekspresi yang ditemukan di file definisi alur kerja utama dan dalam file. `nextflow.config` Semua `params` dengan nilai default ditandai sebagai opsional.

Agar parsing berfungsi dengan benar, perhatikan persyaratan berikut:
+ HealthOmics hanya mem-parsing file definisi alur kerja utama. Untuk memastikan semua parameter ditangkap, kami sarankan Anda menghubungkan semua **params** submodul dan alur kerja yang diimpor.
+ File konfigurasi adalah opsional. Jika Anda mendefinisikannya, beri nama `nextflow.config` dan letakkan di direktori yang sama dengan file definisi alur kerja utama.

Contoh berikut menunjukkan file definisi dan template parameter yang dihasilkan.

```
params.input_file = "default.txt"
params.threads = 4
params.memory = "8GB"

workflow {
    if (params.version) {
        println "Using version: ${params.version}"
    }
}
```

Template parameter yang dihasilkan:

```
{
    "input_file": {
        "description": None,
        "optional": True
    },
    "threads": {
        "description": None,
        "optional": True
    },
    "memory": {
        "description": None,
        "optional": True
    },
    "version": {
        "description": None,
        "optional": False
    }
}
```

Untuk nilai default yang didefinisikan dalam nextflow.config, HealthOmics mengumpulkan `params` tugas dan parameter yang dideklarasikan dalam`params {}`, seperti yang ditunjukkan pada contoh berikut. Dalam pernyataan penugasan, `params` harus muncul di sisi kiri pernyataan.

```
params.alpha = "alpha"
params.beta = "beta"

params {
    gamma = "gamma"
    delta = "delta"
}

env {
   // ignored, as this assignment isn't in the params block
   VERSION = "TEST"  
}

// ignored, as params is not on the left side
interpolated_image = "${params.cli_image}"
```

Template parameter yang dihasilkan:

```
{
    // other params in your main workflow defintion
    "alpha": {
        "description": None,
        "optional": True
    },
    "beta": {
        "description": None,
        "optional": True
    },
    "gamma": {
        "description": None,
        "optional": True
    },
    "delta": {
        "description": None,
        "optional": True
    }
}
```

#### Parameter bersarang
<a name="parameter-parsing-nextflow-nested"></a>

Keduanya `nextflow_schema.json` dan `nextflow.config` memungkinkan parameter bersarang. Namun, template HealthOmics parameter hanya membutuhkan parameter tingkat atas. Jika alur kerja Anda menggunakan parameter bersarang, Anda harus menyediakan objek JSON sebagai input untuk parameter tersebut.

##### Parameter bersarang dalam file skema
<a name="parameter-parsing-schema-nested"></a>

HealthOmics melewatkan bersarang **params** saat mengurai file. `nextflow_schema.json` Misalnya, jika Anda mendefinisikan `nextflow_schema.json` file berikut:

```
{
    "properties": {
        "input": {
            "properties": {
                "input_file": { ... },
                "input_num": { ... }
            }
        },
        "input_bool": { ... }
    }
}
```

HealthOmics mengabaikan `input_file` dan `input_num` ketika menghasilkan template parameter:

```
{
    "input": {
        "description": None,
        "optional": True
    },
    "input_bool": {
        "description": None,
        "optional": True
    }
}
```

Saat Anda menjalankan alur kerja ini, HealthOmics mengharapkan `input.json` file yang mirip dengan berikut ini:

```
{
   "input": {
       "input_file": "s3://bucket/obj",
       "input_num": 2
   },
   "input_bool": false
}
```

##### Parameter bersarang dalam file konfigurasi
<a name="parameter-parsing-config-nested"></a>

HealthOmics tidak mengumpulkan bersarang **params** dalam `nextflow.config` file, dan melewatkannya selama penguraian. Misalnya, jika Anda mendefinisikan `nextflow.config` file berikut:

```
params.alpha = "alpha"
  params.nested.beta = "beta"
  
  params {
      gamma = "gamma"
      group {
          delta = "delta"
      }
  }
```

HealthOmics mengabaikan `params.nested.beta` dan `params.group.delta` ketika menghasilkan template parameter:

```
{
    "alpha": {
        "description": None,
        "optional": True
    },
    "gamma": {
        "description": None,
        "optional": True
    }
}
```

#### Contoh interpolasi Nextflow
<a name="parameter-parsing-nextflow-examples"></a>

Tabel berikut menunjukkan contoh interpolasi Nextflow untuk params di file utama.


| Parameter | Wajib | 
| --- | --- | 
| params.input\$1file | Ya | 
| params.input\$1file = "s3://bucket/data.json” | Tidak | 
| params.nested.input\$1file | N/A | 
| params.nested.input\$1file = "s3://bucket/data.json” | N/A | 

Tabel berikut menunjukkan contoh interpolasi Nextflow untuk params dalam file. `nextflow.config`


| Parameter | Wajib | 
| --- | --- | 
|  <pre>params.input_file = "s3://bucket/data.json"</pre>  | Tidak | 
|  <pre>params {<br />   input_file = "s3://bucket/data.json"<br />}</pre>  | Tidak | 
|  <pre>params {<br />   nested {<br />     input_file = "s3://bucket/data.json"    <br />   }<br />}</pre>  | N/A | 
|  <pre>input_file = params.input_file</pre>  | N/A | 

# Gambar kontainer untuk alur kerja pribadi
<a name="workflows-ecr"></a>

HealthOmics mendukung gambar kontainer yang dihosting di repositori pribadi Amazon ECR. Anda dapat membuat gambar kontainer dan mengunggahnya ke repositori pribadi. Anda juga dapat menggunakan registri pribadi Amazon ECR Anda sebagai cache tarik 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](permissions-ecr.md#permissions-cross-account).

Sebaiknya tentukan image container Amazon ECR URIs sebagai parameter dalam alur kerja sehingga akses dapat diverifikasi sebelum proses dimulai. Ini juga mempermudah 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](permissions-resource.md)

**Topics**
+ [Sinkronisasi dengan pendaftar kontainer pihak ketiga](#ecr-pull-through)
+ [Pertimbangan umum untuk gambar kontainer Amazon ECR](#ecr-considerations)
+ [Variabel lingkungan untuk HealthOmics alur kerja](#ecr-env-vars)
+ [Menggunakan Java di gambar kontainer Amazon ECR](#ecr-java-considerations)
+ [Tambahkan input tugas ke gambar wadah Amazon ECR](#ecr-tasks)

## Sinkronisasi dengan pendaftar kontainer pihak ketiga
<a name="ecr-pull-through"></a>

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](https://docs.aws.amazon.com/AmazonECR/latest/userguide/pull-through-cache.html) 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:

1. Anda menghindari keharusan memigrasikan gambar kontainer secara manual ke Amazon ECR atau untuk menyinkronkan pembaruan dari repositori pihak ketiga. 

1. Alur kerja mengakses gambar kontainer yang disinkronkan di repositori pribadi Anda, yang lebih andal daripada mengunduh konten saat dijalankan dari registri publik.

1. 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.

**Topics**
+ [Mengkonfigurasi pull through cache](#ecr-pull-through-configure)
+ [Pemetaan registri](#ecr-pull-through-registry-mapping)
+ [Pemetaan gambar](#ecr-pull-through-mapping-format)

### Mengkonfigurasi pull through cache
<a name="ecr-pull-through-configure"></a>

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.

**Topics**
+ [Buat aturan cache tarik](#create-ecr-ptc)
+ [Izin registri untuk registri hulu](#reg-ecr-ptc)
+ [Templat pembuatan repositori](#repo-create-templates-ptc)
+ [Membuat alur kerja](#reg-mapping-ecr-ptc)

#### Buat aturan cache tarik
<a name="create-ecr-ptc"></a>

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](https://docs.aws.amazon.com/AmazonECR/latest/userguide/pull-through-cache-creating-rule.html) di *Panduan Pengguna Amazon Elastic Container Registry*.

##### Buat aturan cache tarik menggunakan konsol
<a name="create-ecr-ptc-console"></a>

Untuk mengonfigurasi cache tarik melalui, ikuti langkah-langkah ini menggunakan konsol Amazon ECR:

1. Buka konsol Amazon ECR: https://console.aws.amazon.com /ecr

1. Dari menu kiri, di bawah **Registri pribadi**, perluas **Fitur & Pengaturan**. Lalu pilih **Tarik melalui cache**.

1. Dari halaman **Tarik melalui cache**, pilih **Tambahkan aturan**.

1. **Di panel **registri Upstream, pilih registri** upstream untuk disinkronkan dengan registri pribadi Anda, lalu pilih Berikutnya.**

1. Jika registri upstream memerlukan otentikasi, konsol akan membuka halaman baru tempat Anda menentukan rahasia SageMaker AI yang berisi kredensyal Anda. Pilih **Berikutnya**.

1. 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**.

1. 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.

1. Pilih **Berikutnya**.

1. Tinjau konfigurasi dan pilih **Buat** untuk membuat aturan.

Untuk informasi selengkapnya, lihat [Membuat aturan cache tarik (AWS Management Console)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/pull-through-cache-creating-rule.html#pull-through-cache-creating-rule-console).

##### Buat aturan cache tarik melalui menggunakan CLI
<a name="create-ecr-ptc-cli"></a>

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.

##### Untuk Amazon ECR Publik
<a name="ecr-ptc-cli-public-ecr"></a>

Contoh berikut membuat aturan cache pull through untuk registri Publik Amazon ECR. Ini menentukan awalan repositori`ecr-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 \
     --region us-east-1
```

##### Untuk Registri Kontainer Kubernetes
<a name="ecr-ptc-cli-kubernetes"></a>

Contoh berikut membuat aturan pull through cache untuk registri publik Kubernetes. Ini menentukan awalan repositori`kubernetes`, 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 \
     --region us-east-1
```

##### Untuk Quay
<a name="ecr-ptc-cli-quay"></a>

Contoh berikut membuat aturan pull through cache untuk registri publik Quay. Ini menentukan awalan repositori`quay`, 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 \
     --region us-east-1
```

##### Untuk Docker Hub
<a name="ecr-ptc-cli-docker-hub"></a>

Contoh berikut membuat aturan pull through cache untuk registri Docker Hub. Ini menentukan awalan repositori`docker-hub`, yang menghasilkan setiap repositori yang dibuat menggunakan aturan pull through cache untuk memiliki skema penamaan. `docker-hub/upstream-repository-name` Anda harus menentukan Nama Sumber Daya Amazon (ARN) lengkap dari rahasia yang berisi kredenal Docker Hub Anda.

```
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 \
     --region us-east-1
```

##### Untuk Registri GitHub Kontainer
<a name="ecr-ptc-cli-public-github"></a>

Contoh berikut membuat aturan pull through cache untuk GitHub Container Registry. Ini menentukan awalan repositori`github`, yang menghasilkan setiap repositori yang dibuat menggunakan aturan pull through cache untuk memiliki skema penamaan. `github/upstream-repository-name` Anda harus menentukan Nama Sumber Daya Amazon (ARN) lengkap dari rahasia yang berisi kredensyal Registri GitHub Penampung Anda.

```
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 \
     --region us-east-1
```

##### Untuk Microsoft Azure Container Registry
<a name="ecr-ptc-cli-azure"></a>

Contoh berikut membuat aturan pull through cache untuk Microsoft Azure Container Registry. Ini menentukan awalan repositori`azure`, yang menghasilkan setiap repositori yang dibuat menggunakan aturan pull through cache untuk memiliki skema penamaan. `azure/upstream-repository-name` Anda harus menentukan Nama Sumber Daya Amazon (ARN) lengkap dari rahasia yang berisi kredensyal Microsoft Azure Container Registry Anda.

```
aws ecr create-pull-through-cache-rule \
     --ecr-repository-prefix azure \
     --upstream-registry-url myregistry.azurecr.io \
     --credential-arn arn:aws:secretsmanager:us-east-1:111122223333:secret:ecr-pullthroughcache/example1234 \
     --region us-east-1
```

##### Untuk Registri GitLab Kontainer
<a name="ecr-ptc-cli-gitlab"></a>

Contoh berikut membuat aturan pull through cache untuk GitLab Container Registry. Ini menentukan awalan repositori`gitlab`, yang menghasilkan setiap repositori yang dibuat menggunakan aturan pull through cache untuk memiliki skema penamaan. `gitlab/upstream-repository-name` Anda harus menentukan Nama Sumber Daya Amazon (ARN) lengkap dari rahasia yang berisi kredensyal Registri GitLab Penampung Anda.

```
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 \
     --region us-east-1
```

Untuk informasi selengkapnya, lihat [Membuat aturan cache tarik (CLI) di Panduan](https://docs.aws.amazon.com/AmazonECR/latest/userguide/pull-through-cache-creating-rule.html#pull-through-cache-creating-rule-cli) 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
<a name="reg-ecr-ptc"></a>

Gunakan izin registri HealthOmics untuk memungkinkan penggunaan cache pull through dan untuk menarik gambar kontainer ke dalam 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. 

1. Dari konsol Amazon ECR, buka menu kiri, di bawah **Registri pribadi**, perluas **izin Registry**. Lalu pilih **Hasilkan** pernyataan.

1. Di sisi kanan atas, pilih JSON. Masukkan kebijakan yang mirip dengan berikut ini:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowPTCinRegPermissions",
               "Effect": "Allow",
               "Principal": {
                   "Service": "omics.amazonaws.com"
               },
               "Action": [
                   "ecr:CreateRepository",
                   "ecr:BatchImportUpstreamImage"
               ],
               "Resource": [
                   "arn:aws:ecr:us-east-1:123456789012:repository/ecr-public/*",
                   "arn:aws:ecr:us-east-1:123456789012:repository/docker-hub/*"
               ] 
           }
       ]
   }
   ```

------

#### Templat pembuatan repositori
<a name="repo-create-templates-ptc"></a>

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 setelan repositori termasuk kebijakan akses berbasis sumber daya, kekekalan tag, enkripsi, dan kebijakan siklus hidup.

Untuk informasi selengkapnya, lihat [Templat pembuatan repositori](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-creation-templates.html) di *Panduan Pengguna Amazon Elastic Container Registry*.

Cara membuat template pembuatan repositori:

1. Dari konsol Amazon ECR, buka menu kiri, di bawah **Registri pribadi**, perluas **Fitur dan pengaturan**. Lalu pilih Template **pembuatan repositori**.

1. Pilih **Buat templat**.

1. Dalam **rincian Template**, pilih **Tarik melalui cache**.

1. 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.

1. Pilih **Berikutnya**.

1. Di halaman **konfigurasi pembuatan repositori**, masukkan izin **Repositori**. Gunakan salah satu contoh pernyataan kebijakan, atau masukkan yang mirip dengan contoh berikut:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "PTCRepoCreationTemplate",
               "Effect": "Allow",
               "Principal": {
                   "Service": "omics.amazonaws.com"
               },
               "Action": [
                   "ecr:BatchGetImage",
                   "ecr:GetDownloadUrlForLayer"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. 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.

1. Pilih **Berikutnya**.

1. Tinjau konfigurasi dan pilih **Berikutnya**.

#### Membuat alur kerja
<a name="reg-mapping-ecr-ptc"></a>

Saat Anda membuat alur kerja atau alur kerja baru, tinjau pemetaan registri dan perbarui jika diperlukan. Lihat perinciannya di [Buat alur kerja pribadi](create-private-workflow.md).

### Pemetaan registri
<a name="ecr-pull-through-registry-mapping"></a>

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](https://docs.aws.amazon.com/AmazonECR/latest/userguide/pull-through-cache-creating-rule.html) 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
<a name="ecr-pull-through-mapping-format"></a>

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](https://docs.aws.amazon.com/AmazonECR/latest/userguide/pull-through-cache-creating-rule.html) 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
<a name="ecr-considerations"></a>
+ Arsitektur 

  HealthOmics mendukung wadah x86\$164. Jika mesin lokal Anda berbasis ARM, seperti Apple Mac, gunakan perintah seperti berikut ini untuk membuat image container x86\$164: 

  ```
  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](fixed-quotas.md#fixed-quotas-workflows) untuk ukuran gambar kontainer maksimum.

## Variabel lingkungan untuk HealthOmics alur kerja
<a name="ecr-env-vars"></a>

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\$1REGION**  
Variabel ini adalah wilayah tempat penampung berjalan.

**AWS\$1WORKFLOW\$1JALANKAN**  
Variabel ini adalah nama run saat ini.

**AWS\$1WORKFLOW\$1RUN\$1ID**  
Variabel ini adalah pengidentifikasi run dari run saat ini.

**AWS\$1WORKFLOW\$1RUN\$1UUID**  
Variabel ini adalah UUID run dari run saat ini.

**AWS\$1WORKFLOW\$1TUGAS**  
Variabel ini adalah nama tugas saat ini.

**AWS\$1WORKFLOW\$1TASK\$1ID**  
Variabel ini adalah pengidentifikasi tugas dari tugas saat ini.

**AWS\$1WORKFLOW\$1TUGAS\$1UUID**  
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
<a name="ecr-java-considerations"></a>

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
<a name="ecr-tasks"></a>

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](fixed-quotas.md#fixed-quotas-workflows) untuk ukuran maksimum gambar kontainer yang HealthOmics mendukung.

# HealthOmics Alur kerja file README
<a name="workflows-readme"></a>

Anda dapat mengunggah file README.md yang berisi instruksi, diagram, dan informasi penting untuk alur kerja Anda. Setiap versi alur kerja mendukung satu file README, yang dapat Anda perbarui kapan saja.

**Persyaratan README meliputi:**
+ File README harus dalam format markdown (.md)
+ Ukuran file maksimal: 500 KiB

**Topics**
+ [Gunakan README yang ada](#workflows-add-readme)
+ [Kondisi rendering](#workflows-rendering-readme)

## Gunakan README yang ada
<a name="workflows-add-readme"></a>

READMEs diekspor dari repositori Git berisi tautan relatif yang biasanya tidak berfungsi di luar repositori. HealthOmics Integrasi Git secara otomatis mengonversinya menjadi tautan absolut untuk rendering yang tepat di konsol, menghilangkan kebutuhan akan pembaruan URL manual. 

Untuk READMEs diimpor dari Amazon S3 atau drive lokal, gambar dan tautan harus menggunakan publik URLs atau jalur relatifnya diperbarui untuk rendering yang tepat.

**catatan**  
Gambar harus di-host secara publik untuk ditampilkan di HealthOmics konsol. Gambar yang disimpan GitHub Enterprise Server atau GitLab Self-Managed repositori tidak dapat dirender.

## Kondisi rendering
<a name="workflows-rendering-readme"></a>

 HealthOmics Konsol menginterpolasi gambar dan tautan yang dapat diakses publik menggunakan jalur absolut. Untuk merender URLs dari repositori pribadi, pengguna harus memiliki akses ke repositori. Untuk GitHub Enterprise Server atau GitLab Self-Managed repositori, yang menggunakan domain khusus, HealthOmics tidak dapat menyelesaikan tautan relatif atau merender gambar yang disimpan di repositori pribadi ini.

Tabel berikut menunjukkan elemen penurunan harga yang didukung oleh tampilan README AWS konsol.


| Elemen | AWS konsol | 
| --- | --- | 
| Pemberitahuan | Ya, tetapi tanpa ikon | 
| Lencana | Ya | 
| Pemformatan teks dasar | Ya | 
| [Blok kode](https://www.markdownguide.org/basic-syntax/#code-blocks) | Ya, tetapi tidak memiliki [sorotan sintaks](https://www.markdownguide.org/extended-syntax/#syntax-highlighting) dan fungsi tombol salin  | 
| Bagian yang dapat dilipat | Ya | 
| [Judul](https://www.markdownguide.org/basic-syntax/#headings) | Ya | 
| [Format gambar](https://www.markdownguide.org/basic-syntax/#images-1) | Ya | 
| [Gambar (dapat diklik)](https://www.markdownguide.org/basic-syntax/#linking-images) | Ya | 
| [Jeda baris](https://www.markdownguide.org/basic-syntax/#line-breaks) | Ya | 
| Diagram putri duyung | Hanya dapat membuka grafik, memindahkan posisi grafik, dan menyalin kode | 
| Kutipan | Ya | 
| [https://www.markdownguide.org/extended-syntax/#subscript](https://www.markdownguide.org/extended-syntax/#subscript) | Ya | 
| [Tabel](https://www.markdownguide.org/extended-syntax/#tables) | Ya, tetapi tidak mendukung perataan teks | 
| Penjajaran teks | Ya | 

### Menggunakan gambar dan tautan URLs
<a name="workflows-urls-readme"></a>

Bergantung pada penyedia sumber Anda, struktur basis Anda URLs untuk halaman dan gambar dalam format berikut.
+ `{username}`: Nama pengguna tempat repositori di-host.
+ `{repo}`: Nama repositori.
+ `{ref}`: Referensi sumber (cabang, tag, dan ID komit). 
+ `{path}`: Jalur file ke halaman atau gambar di repositori. 


| Penyedia sumber | URL Halaman | URL gambar | 
| --- | --- | --- | 
| GitHub | https://github.com/\$1username\$1/\$1repo\$1/blob/\$1ref\$1/\$1path\$1 |  `https://github.com/{username}/{repo}/blob/{ref}/{path}?raw=true` `https://raw.githubusercontent.com/{username}/{repo}/{ref}/{path}`  | 
| GitLab | https://gitlab.com/\$1username\$1/\$1repo\$1/-/blob/\$1ref\$1/\$1path\$1 | https://gitlab.com/\$1username\$1/\$1repo\$1/-/raw/\$1ref\$1/\$1path\$1 | 
| Bitbucket | https://bitbucket.org/\$1username\$1/\$1repo\$1/src/\$1ref\$1/\$1path\$1 | https://bitbucket.org/\$1username\$1/\$1repo\$1/raw/\$1ref\$1/\$1path\$1 | 

GitHub,GitLab, dan Bitbucket mendukung halaman dan gambar URLs yang terhubung ke repositori publik. Tabel berikut menunjukkan dukungan masing-masing penyedia sumber untuk merender gambar dan tautan URLs untuk repositori pribadi.


| Dukungan repositori pribadi | Penyedia sumber | URL Halaman | URL gambar | 
| --- | --- | --- | --- | 
| GitHub | Hanya dengan akses ke repositori | Tidak | 
| GitLab | Hanya dengan akses ke repositori | Tidak | 
| Bitbucket | Hanya dengan akses ke repositori | Tidak | 

# Meminta lisensi Sentieon untuk alur kerja pribadi
<a name="private-workflows-subscribe"></a>

Jika alur kerja pribadi Anda menggunakan perangkat lunak Sentieon, Anda memerlukan lisensi Senieon. Ikuti langkah-langkah berikut untuk meminta dan menyiapkan lisensi untuk perangkat lunak Sentieon:
+ Minta lisensi Sentieon 
  + Kirim email ke grup dukungan Sentieon (support@sentieon.com) untuk meminta lisensi perangkat lunak.
    + Berikan ID Pengguna AWS Canonical Anda di email.
    + Temukan ID Pengguna AWS Canonical Anda dengan mengikuti petunjuk [ini](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html#FindCanonicalId).
+ Perbarui peran HealthOmics layanan Anda untuk memberinya akses ke proxy server lisensi Sentieon dan bucket Sentieon Omics di Wilayah Anda. Contoh berikut memberikan akses masuk`us-east-1`. Jika diperlukan, ganti teks ini dengan Wilayah Anda.

------
#### [ JSON ]

****  

  ```
  {
             "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "s3:GetObjectAcl",
                  "s3:GetObject"
              ],
              "Resource": [
                  "arn:aws:s3:::omics-ap-us-east-1/*",
                  "arn:aws:s3:::sentieon-omics-license-us-east-1/*"
              ]
          }
      ]
   }
  ```

------
+ Hasilkan kasus AWS dukungan untuk mendapatkan akses ke proxy server lisensi Sentieon. 
  + Untuk membuat kasus dukungan, navigasikan ke [support.console.aws.amazon.com](https://support.console.aws.amazon.com).
  + Berikan Anda Akun AWS dan Wilayah dalam kasus dukungan. Akun Anda ditambahkan ke daftar yang diizinkan untuk proxy server lisensi.
+ Bangun alur kerja pribadi Anda menggunakan wadah Sentieon dan skrip lisensi Sentieon.
  + Untuk petunjuk tambahan tentang penggunaan alat Sentieon di dalam alur kerja pribadi, lihat [Sentieon-Amazon-Omics](https://github.com/Sentieon/sentieon-amazon-omics) di. GitHub
+ Versi perangkat lunak Sentieon 202112.07 dan yang lebih tinggi mendukung proxy server lisensi. HealthOmics Untuk menggunakan versi perangkat lunak Sentieon lebih awal dari 202112.07, hubungi dukungan Sentieon.

# Linter alur kerja di HealthOmics
<a name="workflows-linter"></a>

Setelah membuat alur kerja, sebaiknya jalankan linter pada alur kerja sebelum memulai proses pertama. Linter mendeteksi kesalahan yang dapat menyebabkan run gagal. 

Untuk WDL, HealthOmics secara otomatis menjalankan linter saat Anda membuat alur kerja. Output linter tersedia di `statusMessage` bidang **get-workflow** respons. Gunakan perintah CLI berikut untuk mengambil output status (gunakan ID alur kerja dari alur kerja WDL yang Anda buat): 

```
aws omics get-workflow 
   —id 123456 
   —query 'statusMessage'
```

HealthOmics menyediakan linter yang dapat Anda jalankan pada pembelahan alur kerja sebelum Anda membuat alur kerja. Jalankan linter ini pada pipeline yang ada tempat Anda bermigrasi. HealthOmics
+ **WDL**— Gambar ECR Amazon publik untuk menjalankan linter [WDL](https://gallery.ecr.aws/aws-genomics/healthomics-linter).
+ **Nextflow**— Gambar ECR Amazon publik untuk menjalankan [aturan Linter]( https://gallery.ecr.aws/aws-genomics/linter-rules-for-nextflow) untuk Nextflow. Anda dapat mengakses kode sumber untuk linter ini dari [GitHub](https://github.com/awslabs/linter-rules-for-nextflow).
+ **CWL**— tidak tersedia

# HealthOmics operasi alur kerja
<a name="creating-private-workflows"></a>

Untuk membuat alur kerja pribadi, Anda perlu:
+  **Workflow definition file:**File definisi alur kerja yang ditulis dalamWDL,Nextflow, atauCWL. Definisi alur kerja menentukan input dan output untuk menjalankan yang menggunakan alur kerja. Ini juga mencakup spesifikasi untuk menjalankan dan menjalankan tugas untuk alur kerja Anda, termasuk persyaratan komputasi dan memori. File definisi alur kerja harus dalam `.zip` format. Untuk informasi selengkapnya, lihat [File definisi alur kerja](workflow-definition-files.md) di HealthOmics.
  + Anda dapat menggunakan [Amazon Q CLI](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/what-is.html) untuk membangun dan memvalidasi file definisi alur kerja Anda di WDL, Nextflow, dan CWL. Untuk informasi selengkapnya, lihat [Contoh prompt untuk Amazon Q CLI](getting-started.md#omics-q-prompts) dan tutorial AI [HealthOmics generatif Agentic](https://github.com/aws-samples/aws-healthomics-tutorials/tree/main/generative-ai). GitHub
+  **(Optional) Parameter template file:**File template parameter yang ditulis dalam fileJSON. Buat file untuk menentukan parameter run, atau HealthOmics buat template parameter untuk Anda. Untuk informasi selengkapnya, lihat [File templat parameter untuk HealthOmics alur kerja](parameter-templates.md). 
+ **Amazon ECR container images:**Buat repositori Amazon ECR pribadi untuk setiap kontainer yang digunakan dalam alur kerja. Buat gambar kontainer untuk alur kerja dan simpan di repositori pribadi, atau sinkronkan konten registri upstream yang didukung dengan repositori pribadi ECR Anda. 
+  **(Optional) Sentieon licenses:**Minta Sentieon lisensi untuk menggunakan Sentieon perangkat lunak dalam alur kerja pribadi.

Untuk file definisi alur kerja yang lebih besar dari 4 MiB (zip), pilih salah satu opsi ini selama pembuatan alur kerja:
+ Unggah ke folder Amazon Simple Storage Service dan tentukan lokasinya.
+ Unggah ke repositori eksternal (ukuran maksimal 1 GiB) dan tentukan detail repositori.

Setelah membuat alur kerja, Anda dapat memperbarui informasi alur kerja berikut dengan operasi: `UpdateWorkflow`
+ Nama
+ Deskripsi
+ Jenis penyimpanan default
+ Kapasitas penyimpanan default (dengan ID alur kerja)
+ Berkas README.md

Untuk mengubah informasi lain dalam alur kerja, buat alur kerja atau versi alur kerja baru.

Gunakan pembuatan versi alur kerja untuk mengatur dan menyusun alur kerja Anda. Versi juga membantu Anda mengelola pengenalan pembaruan alur kerja berulang. Untuk informasi selengkapnya tentang versi, lihat[Buat versi alur kerja](workflows-version-create.md).

**Topics**
+ [Buat alur kerja pribadi](create-private-workflow.md)
+ [Memperbarui alur kerja pribadi](update-private-workflow.md)
+ [Menghapus alur kerja pribadi](delete-private-workflow.md)
+ [Verifikasi status alur kerja](using-get-workflow.md)
+ [Mereferensikan file genom dari definisi alur kerja](create-ref-files.md)

# Buat alur kerja pribadi
<a name="create-private-workflow"></a>

Buat alur kerja menggunakan HealthOmics konsol, perintah AWS CLI, atau salah satu. AWS SDKs

**catatan**  
Jangan sertakan informasi identitas pribadi (PII) apa pun dalam nama alur kerja. Nama-nama ini terlihat di CloudWatch log.

Saat Anda membuat alur kerja, HealthOmics tetapkan pengenal unik universal (UUID) ke alur kerja. UUID alur kerja adalah Pengenal Unik Global (panduan) yang unik di seluruh alur kerja dan versi alur kerja. Untuk tujuan asal data, kami menyarankan Anda menggunakan UUID alur kerja untuk mengidentifikasi alur kerja secara unik.

Jika tugas alur kerja Anda menggunakan alat eksternal (executable, pustaka, atau skrip), Anda membuat alat ini menjadi gambar kontainer. Anda memiliki opsi berikut untuk menghosting gambar kontainer:
+ Host gambar kontainer di registri pribadi ECR. Prasyarat untuk opsi ini:
  + Buat repositori pribadi ECR, atau pilih repositori yang ada.
  + Konfigurasikan kebijakan sumber daya ECR seperti yang dijelaskan dalam[Izin Amazon ECR](permissions-ecr.md).
  + Unggah gambar kontainer Anda ke repositori pribadi. 
+ Sinkronkan gambar kontainer dengan konten registri pihak ketiga yang didukung. Prasyarat untuk opsi ini:
  + Dalam registri pribadi ECR, konfigurasikan aturan pull through cache untuk setiap registri upstream. Untuk informasi selengkapnya, lihat [Pemetaan gambar](workflows-ecr.md#ecr-pull-through-mapping-format).
  + Konfigurasikan kebijakan sumber daya ECR seperti yang dijelaskan dalam[Izin Amazon ECR](permissions-ecr.md).
  + Buat template pembuatan repositori. Template menentukan pengaturan saat Amazon ECR membuat repositori pribadi untuk registri upstream.
  + Buat pemetaan awalan untuk memetakan ulang referensi gambar kontainer dalam definisi alur kerja ke ruang nama cache ECR.

Saat membuat alur kerja, Anda memberikan definisi alur kerja yang berisi informasi tentang alur kerja, proses, dan tugas. HealthOmics dapat mengambil definisi alur kerja sebagai arsip.zip yang disimpan secara lokal atau di bucket Amazon S3, atau dari repositori berbasis Git yang didukung. 

**Topics**
+ [Membuat alur kerja menggunakan konsol](#console-create-workflows)
+ [Membuat alur kerja menggunakan CLI](#api-create-workflows)
+ [Membuat alur kerja menggunakan SDK](#sdk-create-workflows)

## Membuat alur kerja menggunakan konsol
<a name="console-create-workflows"></a>

**Langkah-langkah untuk membuat alur kerja**

1. Buka [konsol HealthOmics ](https://console.aws.amazon.com/omics/).

1.  Jika diperlukan, buka panel navigasi kiri (≡). Pilih **Alur kerja pribadi**.

1. Pada halaman **alur kerja pribadi**, pilih **Buat alur kerja**.

1. Pada halaman **Tentukan alur kerja**, berikan informasi berikut:

   1. **Nama alur kerja: Nama** khas untuk alur kerja ini. Sebaiknya setel nama alur kerja untuk mengatur proses Anda di AWS HealthOmics konsol dan CloudWatch log.

   1. **Deskripsi** (opsional): Deskripsi alur kerja ini.

1. Di panel **definisi Alur Kerja**, berikan informasi berikut:

   1. **Bahasa alur kerja** (opsional): Pilih bahasa spesifikasi alur kerja. Jika tidak, HealthOmics tentukan bahasa dari definisi alur kerja.

   1. Untuk **sumber definisi Alur Kerja**, pilih untuk mengimpor folder definisi dari repositori berbasis Git, lokasi Amazon S3, atau dari drive lokal.

      1. Untuk **Impor dari layanan repositori**:
**catatan**  
HealthOmics mendukung repositori publik dan pribadi untukGitHub,,, GitLabBitbucket,GitHub self-managed. GitLab self-managed

         1. Pilih **Koneksi** untuk menghubungkan AWS sumber daya Anda ke repositori eksternal. Untuk membuat koneksi, lihat[Connect dengan repositori kode eksternal](setting-up-new.md#setting-up-omics-repository).
**catatan**  
Pelanggan di TLV wilayah tersebut perlu membuat koneksi di wilayah IAD (us-east-1) untuk membuat alur kerja. 

         1. Dalam ID **repositori lengkap, masukkan ID repositori** Anda sebagai nama pengguna/repo-nama. Verifikasi bahwa Anda memiliki akses ke file di repositori ini.

         1. Dalam **referensi Sumber** (opsional), masukkan referensi sumber repositori (cabang, tag, atau ID komit). HealthOmics menggunakan cabang default jika tidak ada referensi sumber yang ditentukan.

         1. Di **Kecualikan pola file**, masukkan pola file untuk mengecualikan folder, file, atau ekstensi tertentu. Ini membantu mengelola ukuran data saat mengimpor file repositori. Ada maksimal 50 pola, dan pola harus mengikuti sintaks [pola glob](https://fossil-scm.org/home/doc/tip/www/globs.md). Contoh: 

            1. `tests/`

            1. `*.jpeg`

            1. `large_data.zip`

      1. Untuk **Pilih folder definisi dari S3**:

         1. Masukkan lokasi Amazon S3 yang berisi folder definisi alur kerja zip. Bucket Amazon S3 harus berada di wilayah yang sama dengan alur kerja.

         1. Jika akun Anda tidak memiliki bucket Amazon S3, masukkan ID akun pemilik bucket di ID AWS akun **pemilik bucket S3**. Informasi ini diperlukan agar HealthOmics dapat memverifikasi kepemilikan bucket.

      1. Untuk **Pilih folder definisi dari sumber lokal**:

         1. Masukkan lokasi drive lokal dari folder definisi alur kerja zip.

   1. **Jalur file definisi alur kerja utama** (opsional): Masukkan jalur file dari folder definisi alur kerja zip atau repositori ke file. `main` Parameter ini tidak diperlukan jika hanya ada satu file di folder definisi alur kerja, atau jika file utama diberi nama “main”.

1. Di panel **file README** (opsional), pilih **Sumber file README** dan berikan informasi berikut:
   + Untuk **Impor dari layanan repositori**, di **jalur file README, masukkan path** ke file README dalam repositori.
   + Untuk **Pilih file dari S3**, dalam **file README di S3**, masukkan URI Amazon S3 untuk file README.
   + Untuk **Pilih file dari sumber lokal**: di **README - opsional**, **pilih Pilih file untuk memilih file** penurunan harga (.md) yang akan diunggah.

1. Di panel **konfigurasi penyimpanan run default**, berikan tipe penyimpanan run default dan kapasitas untuk menjalankan yang menggunakan alur kerja ini:

   1. **Jalankan jenis penyimpanan**: Pilih apakah akan menggunakan penyimpanan statis atau dinamis sebagai default untuk penyimpanan berjalan sementara. Defaultnya adalah penyimpanan statis.

   1. **Jalankan kapasitas penyimpanan** (opsional): Untuk jenis penyimpanan run statis, Anda dapat memasukkan jumlah default penyimpanan run yang diperlukan untuk alur kerja ini. Nilai default untuk parameter ini adalah 1200 GiB. Anda dapat mengganti nilai default ini saat memulai proses.

1. **Tag** (opsional): Anda dapat mengaitkan hingga 50 tag dengan alur kerja ini.

1. Pilih **Berikutnya**.

1. Pada halaman **Tambahkan parameter alur kerja** (opsional), pilih **sumber Parameter:**

   1. Untuk **Parse dari file definisi alur kerja**, secara otomatis HealthOmics akan mengurai parameter alur kerja dari file definisi alur kerja.

   1. Untuk **menyediakan template parameter dari repositori** Git, gunakan path ke file template parameter dari repositori Anda.

   1. Untuk **Pilih file JSON dari sumber lokal**, unggah JSON file dari sumber lokal yang menentukan parameter.

   1. Untuk **Masukkan parameter alur kerja secara** manual, masukkan nama dan deskripsi parameter secara manual.

1. Di panel **pratinjau Parameter**, Anda dapat meninjau atau mengubah parameter untuk versi alur kerja ini. Jika Anda mengembalikan JSON file, Anda kehilangan perubahan lokal yang Anda buat.

1. Pilih **Berikutnya**.

1. Pada halaman **pemetaan ulang URI Container**, di panel **aturan Pemetaan, Anda dapat menentukan aturan** pemetaan URI untuk alur kerja Anda.

   Untuk **Sumber file pemetaan**, pilih salah satu opsi berikut:
   + **Tidak ada** - Tidak ada aturan pemetaan yang diperlukan.
   + **Pilih file JSON dari S3** - Tentukan lokasi S3 untuk file pemetaan. 
   + **Pilih file JSON dari sumber lokal** - Tentukan lokasi file pemetaan di perangkat lokal Anda.
   + **Masukkan pemetaan secara manual** **- masukkan pemetaan registri dan pemetaan gambar di panel Pemetaan.**

1.  Konsol menampilkan panel **Pemetaan.** Jika Anda memilih file sumber pemetaan, konsol menampilkan nilai dari file.

   1. Dalam **pemetaan Registry**, Anda dapat mengedit pemetaan atau menambahkan pemetaan (maksimum 20 pemetaan registri).

      Setiap pemetaan registri berisi bidang-bidang berikut:
      + **URL registri hulu** — URI dari registri hulu.
      + **Awalan repositori ECR - Awalan** repositori untuk digunakan dalam repositori pribadi Amazon ECR.
      + (Opsional) **Awalan repositori hulu - Awalan** repositori di registri hulu.
      + (Opsional) **ID akun ECR** — ID akun akun yang memiliki gambar kontainer hulu.

   1. Dalam **pemetaan Gambar**, Anda dapat mengedit pemetaan gambar atau menambahkan pemetaan (maksimum 100 pemetaan gambar).

      Setiap pemetaan gambar berisi bidang-bidang berikut:
      + **Gambar sumber** - Menentukan URI gambar sumber di registri hulu.
      + **Gambar tujuan** - Menentukan URI gambar yang sesuai di registri ECR Amazon pribadi.

1. Pilih **Berikutnya**.

1. Tinjau konfigurasi alur kerja, lalu pilih **Buat alur kerja**.

## Membuat alur kerja menggunakan CLI
<a name="api-create-workflows"></a>

Jika file alur kerja Anda dan file template parameter ada di mesin lokal Anda, Anda dapat membuat alur kerja menggunakan perintah CLI berikut. 

```
aws omics create-workflow  \
  --name "my_workflow"   \
  --definition-zip fileb://my-definition.zip \
  --parameter-template file://my-parameter-template.json
```

`create-workflow`Operasi mengembalikan respon berikut:

```
{
  "arn": "arn:aws:omics:us-west-2:....",
  "id": "1234567",
  "status": "CREATING",
  "tags": {
      "resourceArn": "arn:aws:omics:us-west-2:...."
  },
  "uuid": "64c9a39e-8302-cc45-0262-2ea7116d854f"
}
```

### Parameter opsional untuk digunakan saat membuat alur kerja
<a name="other-create-parameters"></a>

Anda dapat menentukan salah satu parameter opsional saat membuat alur kerja. Untuk detail sintaks, lihat [CreateWorkflow](https://docs.aws.amazon.com/omics/latest/api/API_CreateWorkflow.html)di AWS HealthOmics API Referensi. 

**Topics**
+ [Tentukan definisi alur kerja lokasi Amazon S3](#create-defn-uri-parameter)
+ [Menggunakan definisi alur kerja dari repositori berbasis Git](#create-defn-uri-git)
+ [Tentukan file Readme](#specify-readme-file)
+ [Tentukan file **main** definisi](#create-main-parameter)
+ [Tentukan jenis penyimpanan run](#create-run-storage-parameter)
+ [Tentukan konfigurasi GPU](#create-accelerator-parameter)
+ [Konfigurasikan parameter pemetaan cache pull through](#create-prefix-mapping-parameters)

#### Tentukan definisi alur kerja lokasi Amazon S3
<a name="create-defn-uri-parameter"></a>

Jika file definisi alur kerja Anda terletak di folder Amazon S3, tentukan lokasi menggunakan parameter, seperti `definition-uri` yang ditunjukkan pada contoh berikut. Jika akun Anda tidak memiliki bucket Amazon S3, berikan ID pemiliknya. Akun AWS 

```
aws omics create-workflow  \
  --name Test  \
  --definition-uri s3://omics-bucket/workflow-definition/  \
  --owner-id  123456789012 
    ...
```

#### Menggunakan definisi alur kerja dari repositori berbasis Git
<a name="create-defn-uri-git"></a>

Untuk menggunakan definisi alur kerja dari repositori berbasis Git yang didukung, gunakan parameter dalam `definition-repository` permintaan Anda. Jangan berikan `definition` parameter lain, karena permintaan gagal jika menyertakan lebih dari satu sumber input.

`definition-respository`Parameter berisi bidang-bidang berikut:
+ **connectionArn**— ARN dari Koneksi Kode yang menghubungkan sumber daya AWS Anda ke repositori eksternal.
+ **fullRepositoryId**— Masukkan ID repositori sebagai. `owner-name/repo-name` Verifikasi bahwa Anda memiliki akses ke file di repositori ini.
+ **sourceReference**(Opsional) — Masukkan tipe referensi repositori (BRANCH, TAG, atau COMMIT) dan nilai.

  HealthOmics menggunakan komit terbaru di cabang default jika Anda tidak menentukan referensi sumber.
+ **excludeFilePatterns**(Opsional) - Masukkan pola file untuk mengecualikan folder, file, atau ekstensi tertentu. Ini membantu mengelola ukuran data saat mengimpor file repositori. Berikan maksimal 50 pola. pola harus mengikuti sintaks pola [glob](https://fossil-scm.org/home/doc/tip/www/globs.md). Contoh:
  + `tests/`
  + `*.jpeg`
  + `large_data.zip`

Saat Anda menentukan definisi alur kerja dari repositori berbasis Git, gunakan `parameter-template-path` untuk menentukan file template parameter. Jika Anda tidak memberikan parameter ini, HealthOmics buat alur kerja tanpa templat parameter.

Contoh berikut menunjukkan parameter yang terkait dengan konten dari repositori pribadi berbasis Git: 

```
aws omics create-workflow \
    --name custom-variant \
    --description "Custom variant calling pipeline" \
    --engine "WDL" \
    --definition-repository '{
            "connectionArn": "arn:aws:codeconnections:us-east-1:123456789012:connection/abcd1234-5678-90ab-cdef-1234567890ab",
            "fullRepositoryId": "myorg/my-genomics-workflows",
            "sourceReference": {
                "type": "BRANCH",            
                "value": "main"        
            },        
            "excludeFilePatterns": ["tests/**", "*.log"]   
      }' \
    --main "workflows/variant-calling/main.wdl" \
    --parameter-template-path "parameters/variant-calling-params.json" \
    --readme-path "docs/variant-calling-README.md" \
    --storage-type "DYNAMIC" \
```

Untuk contoh lainnya, lihat posting blog [Cara Membuat HealthOmics Alur Kerja AWS dari Konten di Git](https://repost.aws/articles/ARCEN7AjhaRSmteczRoc_QsA/how-to-create-an-aws-healthomics-workflows-from-content-in-git).

#### Tentukan file Readme
<a name="specify-readme-file"></a>

Anda dapat menentukan lokasi file README menggunakan salah satu parameter berikut:
+ **readme-markdown**— Input string atau file di mesin lokal Anda. 
+ **readme-uri**— URI file yang disimpan di S3. 
+ **readme-path **— Jalur ke file README di repositori. 

**Gunakan readme-path hanya dalam hubungannya dengan definition-respositori.** Jika Anda tidak menentukan parameter README apa pun, HealthOmics impor file README.md tingkat root di repositori (jika ada).

Contoh berikut menunjukkan bagaimana menentukan lokasi file README menggunakan readme-path dan readme-uri.

```
# Using README from repository
aws omics create-workflow \
    --name "documented-workflow" \
    --definition-repository '...' \
    --readme-path "docs/workflow-guide.md"

# Using README from S3
aws omics create-workflow \
    --name "s3-readme-workflow" \
    --definition-repository '...' \
    --readme-uri "s3://my-bucket/workflow-docs/readme.md"
```

Untuk informasi selengkapnya, lihat [HealthOmics Alur kerja file README](workflows-readme.md).

#### Tentukan file **main** definisi
<a name="create-main-parameter"></a>

Jika Anda menyertakan beberapa file definisi alur kerja, gunakan `main` parameter untuk menentukan file definisi utama untuk alur kerja Anda.

```
aws omics create-workflow  \
  --name Test  \
  --main multi_workflow/workflow2.wdl  \
    ...
```

#### Tentukan jenis penyimpanan run
<a name="create-run-storage-parameter"></a>

Anda dapat menentukan jenis penyimpanan run default (DYNAMIC atau STATIC) dan menjalankan kapasitas penyimpanan (diperlukan untuk penyimpanan statis). Untuk informasi selengkapnya tentang menjalankan jenis penyimpanan, lihat[Jalankan jenis penyimpanan dalam HealthOmics alur kerja](workflows-run-types.md).

```
aws omics create-workflow  \
  --name my_workflow   \
  --definition-zip fileb://my-definition.zip \
  --parameter-template file://my-parameter-template.json   \
  --storage-type 'STATIC'  \
  --storage-capacity 1200  \
```

#### Tentukan konfigurasi GPU
<a name="create-accelerator-parameter"></a>

Gunakan parameter akselerator untuk membuat alur kerja yang berjalan pada instance komputasi yang dipercepat. Contoh berikut menunjukkan bagaimana menggunakan `accelerators` parameter. Anda menentukan konfigurasi GPU dalam definisi alur kerja. Lihat [Instans komputasi yang dipercepat](memory-and-compute-tasks.md#workflow-task-accelerated-computing-instances).

```
aws omics create-workflow --name workflow name \
   --definition-uri s3://amzn-s3-demo-bucket1/GPUWorkflow.zip \
   --accelerators GPU
```

#### Konfigurasikan parameter pemetaan cache pull through
<a name="create-prefix-mapping-parameters"></a>

Jika Anda menggunakan fitur pemetaan cache Amazon ECR pull through, Anda dapat mengganti pemetaan default. Untuk informasi selengkapnya tentang parameter penyiapan kontainer, lihat[Gambar kontainer untuk alur kerja pribadi](workflows-ecr.md).

Dalam contoh berikut, file `mappings.json` berisi konten ini:

```
{
    "registryMappings": [
        {
            "upstreamRegistryUrl": "registry-1.docker.io",
            "ecrRepositoryPrefix": "docker-hub"
        },
        {
            "upstreamRegistryUrl": "quay.io",
            "ecrRepositoryPrefix": "quay",
            "accountId": "123412341234"
        },
        {

            "upstreamRegistryUrl": "public.ecr.aws",
            "ecrRepositoryPrefix": "ecr-public"
        }
    ],
    "imageMappings": [{
            "sourceImage": "docker.io/library/ubuntu:latest",
            "destinationImage": "healthomics-docker-2/custom/ubuntu:latest",
            "accountId": "123412341234"
        },
        {
            "sourceImage": "nvcr.io/nvidia/k8s/dcgm-exporter",
            "destinationImage": "healthomics-nvidia/k8s/dcgm-exporter"
        }
    ]
}
```

Tentukan parameter pemetaan dalam perintah create-workflow:

```
aws omics create-workflow  \
     ...
--container-registry-map-file file://mappings.json
    ...
```

Anda juga dapat menentukan lokasi S3 dari file parameter pemetaan:

```
aws omics create-workflow  \
     ...
--container-registry-map-uri s3://amzn-s3-demo-bucket1/test.zip
    ...
```

## Membuat alur kerja menggunakan SDK
<a name="sdk-create-workflows"></a>

Anda dapat membuat alur kerja menggunakan salah satu. SDKs Contoh berikut menunjukkan cara membuat alur kerja menggunakan Python SDK

```
import boto3

omics = boto3.client('omics')

with open('definition.zip', 'rb') as f:
   definition = f.read()

response = omics.create_workflow(
   name='my_workflow',
   definitionZip=definition,
   parameterTemplate={ ... }
)
```

# Memperbarui alur kerja pribadi
<a name="update-private-workflow"></a>

Anda dapat memperbarui alur kerja menggunakan HealthOmics konsol, perintah AWS CLI, atau salah satu. AWS SDKs

**catatan**  
Jangan sertakan informasi identitas pribadi (PII) apa pun dalam nama alur kerja. Nama-nama ini terlihat di CloudWatch log.

**Topics**
+ [Memperbarui alur kerja menggunakan konsol](#console-update-workflows)
+ [Memperbarui alur kerja menggunakan CLI](#api-update-workflows)
+ [Memperbarui alur kerja menggunakan SDK](#sdk-update-workflows)

## Memperbarui alur kerja menggunakan konsol
<a name="console-update-workflows"></a>

**Langkah-langkah untuk memperbarui alur kerja**

1. Buka [konsol HealthOmics ](https://console.aws.amazon.com/omics/).

1.  Jika diperlukan, buka panel navigasi kiri (≡). Pilih **Alur kerja pribadi**.

1. Pada halaman **Alur kerja pribadi**, pilih alur kerja yang akan diperbarui.

1. Pada halaman **Workflow**:
   + Jika alur kerja memiliki versi, pastikan Anda memilih **versi Default**.
   + Pilih **Edit yang dipilih** dari daftar **Tindakan**. 

1. Pada halaman **Edit alur kerja**, Anda dapat mengubah salah satu nilai berikut:
   + **Nama alur kerja**.
   + **Deskripsi alur kerja**.
   + **Jenis penyimpanan Jalankan** default untuk alur kerja.
   + **Kapasitas penyimpanan Jalankan** default (jika jenis penyimpanan run adalah penyimpanan statis). Untuk informasi selengkapnya tentang konfigurasi penyimpanan run default, lihat[Membuat alur kerja menggunakan konsol](create-private-workflow.md#console-create-workflows).

1. Pilih **Simpan perubahan** untuk menerapkan perubahan.

## Memperbarui alur kerja menggunakan CLI
<a name="api-update-workflows"></a>

Seperti yang ditunjukkan pada contoh berikut, Anda dapat memperbarui nama alur kerja dan deskripsi. Anda juga dapat mengubah jenis penyimpanan run default (STATIC atau DYNAMIC) dan menjalankan kapasitas penyimpanan (untuk tipe penyimpanan statis). Untuk informasi selengkapnya tentang menjalankan jenis penyimpanan, lihat[Jalankan jenis penyimpanan dalam HealthOmics alur kerja](workflows-run-types.md).

```
aws omics update-workflow    \
  --id 1234567    \
  --name my_workflow      \
  --description "updated workflow"    \
  --storage-type 'STATIC'    \
  --storage-capacity 1200
```

Anda tidak menerima tanggapan atas `update-workflow` permintaan tersebut.

## Memperbarui alur kerja menggunakan SDK
<a name="sdk-update-workflows"></a>

Anda dapat memperbarui alur kerja menggunakan salah satu file. SDKs

Contoh berikut menunjukkan cara memperbarui alur kerja menggunakan Python SDK

```
import boto3

omics = boto3.client('omics')

response = omics.update_workflow(
   name='my_workflow',
   description='updated workflow'
)
```

# Menghapus alur kerja pribadi
<a name="delete-private-workflow"></a>

Ketika Anda tidak lagi membutuhkan alur kerja, Anda dapat menghapusnya menggunakan HealthOmics konsol, perintah AWS CLI, atau salah satu. AWS SDKs Anda dapat menghapus alur kerja yang memenuhi kriteria berikut:
+ Statusnya AKTIF atau GAGAL.
+ Tidak memiliki saham aktif. 
+ Anda telah menghapus semua versi alur kerja.

Menghapus alur kerja tidak memengaruhi proses yang sedang berlangsung yang menggunakan alur kerja.

**Topics**
+ [Menghapus alur kerja menggunakan konsol](#console-delete-workflows)
+ [Menghapus alur kerja menggunakan CLI](#api-delete-workflows)
+ [Menghapus alur kerja menggunakan SDK](#sdk-delete-workflows)

## Menghapus alur kerja menggunakan konsol
<a name="console-delete-workflows"></a>

**Untuk menghapus alur kerja**

1. Buka [konsol HealthOmics ](https://console.aws.amazon.com/omics/).

1.  Jika diperlukan, buka panel navigasi kiri (≡). Pilih **Alur kerja pribadi**.

1. Pada halaman **alur kerja pribadi**, pilih alur kerja yang akan dihapus.

1. Pada halaman **Alur Kerja**, pilih **Hapus yang dipilih** dari daftar **Tindakan**.

1. Dalam modal **Hapus alur kerja**, masukkan “konfirmasi” untuk mengonfirmasi penghapusan.

1. Pilih **Hapus**.

## Menghapus alur kerja menggunakan CLI
<a name="api-delete-workflows"></a>

Contoh berikut menunjukkan bagaimana Anda dapat menggunakan AWS CLI perintah untuk menghapus alur kerja. Untuk menjalankan contoh, ganti `workflow id` dengan ID alur kerja yang ingin Anda hapus. 

```
aws omics delete-workflow 
  --id workflow id
```

HealthOmics tidak mengirimkan tanggapan atas `delete-workflow` permintaan tersebut. 

## Menghapus alur kerja menggunakan SDK
<a name="sdk-delete-workflows"></a>

Anda dapat menghapus alur kerja menggunakan salah satu file. SDKs

Contoh berikut menunjukkan cara menghapus alur kerja menggunakan Python SDK.

```
import boto3

omics = boto3.client('omics')

response = omics.delete_workflow(
   id='1234567'
)
```

# Verifikasi status alur kerja
<a name="using-get-workflow"></a>

Setelah membuat alur kerja, Anda dapat memverifikasi status dan melihat detail alur kerja lainnya menggunakan **get-workflow**, seperti yang ditunjukkan.

```
aws omics get-workflow --id 1234567 
```

Respons mencakup detail alur kerja, termasuk status, seperti yang ditunjukkan.

```
{
    "arn": "arn:aws:omics:us-west-2:....",
    "creationTime": "2022-07-06T00:27:05.542459" 
    "id": "1234567",
    "engine": "WDL",
    "status": "ACTIVE",
    "type": "PRIVATE",
    "main": "workflow-crambam.wdl",
    "name": "workflow_name",
    "storageType": "STATIC",
    "storageCapacity": "1200",
    "uuid": "64c9a39e-8302-cc45-0262-2ea7116d854f"   
  }
```

Anda dapat memulai proses menggunakan alur kerja ini setelah transisi status ke. `ACTIVE`

# Mereferensikan file genom dari definisi alur kerja
<a name="create-ref-files"></a>

Objek penyimpanan HealthOmics referensi dapat dirujuk dengan URI seperti berikut ini. Gunakan milik Anda sendiri`account ID`,`reference store ID`, dan `reference ID` di mana ditunjukkan.

```
omics://account ID.storage.us-west-2.amazonaws.com/reference store id/reference/id            
```

Beberapa alur kerja akan memerlukan `INDEX` file `SOURCE` dan file untuk genom referensi. URI sebelumnya adalah bentuk pendek default dan akan default ke file SOURCE. Untuk menentukan salah satu file, Anda dapat menggunakan formulir URI panjang, sebagai berikut.

```
omics://account ID.storage.us-west-2.amazonaws.com/reference store id/reference/id/source
omics://account ID.storage.us-west-2.amazonaws.com/reference store id/reference/id/index
```

Menggunakan set baca urutan akan memiliki pola yang sama, seperti yang ditunjukkan.

```
aws omics create-workflow \
     --name workflow name \
     --main sample workflow.wdl \
     --definition-uri omics://account ID.storage.us-west-2.amazonaws.com/sequence_store_id/readSet/id \
     --parameter-template file://parameters_sample_description.json
```

Beberapa set baca, seperti yang didasarkan pada FASTQ, dapat berisi pembacaan berpasangan. Dalam contoh berikut, mereka disebut sebagai SOURCE1 dan SOURCE2. Format seperti BAM dan CRAM hanya akan memiliki SOURCE1 file. Beberapa set baca akan berisi file INDEX seperti `bai` atau `crai` file. URI sebelumnya adalah bentuk pendek default dan akan default ke file. SOURCE1 Untuk menentukan file atau indeks yang tepat, Anda dapat menggunakan formulir URI panjang, sebagai berikut.

```
omics://123456789012.storage.us-west-2.amazonaws.com/<sequence_store_id>/readSet/<id>/source1
omics://123456789012.storage.us-west-2.amazonaws.com/<sequence_store_id>/readSet/<id>/source2
omics://123456789012.storage.us-west-2.amazonaws.com/<sequence_store_id>/readSet/<id>/index
```

Berikut ini adalah contoh file JSON input yang menggunakan dua Omics Storage. URIs

```
{
   "input_fasta": "omics://123456789012.storage.us-west-2.amazonaws.com/<reference_store_id>/reference/<id>",
   "input_cram": "omics://123456789012.storage.us-west-2.amazonaws.com/<sequence_store_id>/readSet/<id>"
}
```

Referensikan file JSON input di AWS CLI dengan menambahkan permintaan `--inputs file://<input_file.json>` **start-run** Anda. 