View a markdown version of this page

HealthOmics 中的工作流程文字 - AWS HealthOmics

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

HealthOmics 中的工作流程文字

HealthOmics 會在建立期間自動繫結 WDL 和 Nextflow DSL2 工作流程。內建 linter 會偵測工作流程定義檔案中可能導致執行失敗的錯誤。Lint 問題清單會出現在GetWorkflow回應的 statusMessage 欄位中。

對於 WDL 工作流程,lint 調查結果正在封鎖 — 如果偵測到錯誤,工作流程不會轉換為 ACTIVE。對於 Nextflow DSL2 工作流程,lint 調查結果為非封鎖 — 無論調查結果為何,工作流程都會轉換為 ACTIVE。

HealthOmics 也提供外部 linter,您可以在建立工作流程之前於本機執行。這些字彙可以包含其他 HealthOmics 特定規則。

內建 linter

當您呼叫 CreateWorkflow或 時,HealthOmics 會在伺服器端執行內建 lintersCreateWorkflowVersion。

WDL 內建 linting

對於 WDL,HealthOmics 會在您建立工作流程時自動執行 linter。WDL linting 正在封鎖 - 如果 linter 偵測到錯誤,工作流程不會轉換為 ACTIVE。您可以在GetWorkflow回應的 statusMessage 欄位中找到 linter 輸出。使用下列 CLI 命令擷取狀態輸出 (使用您建立之 WDL 工作流程的工作流程 ID):

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

Nextflow 內建 linting

HealthOmics 會在所有支援的 Nextflow DSL2 版本期間CreateWorkflow自動執行 Nextflow 內建嚴格 DSL2 linter CreateWorkflowVersion (nf-lang/v2):

  • Nextflow v22.04 (僅限 DSL2)

  • Nextflow 23.10 版

  • Nextflow 24.10 版

  • Nextflow 25.10 版

  • Nextflow 26.04 版

注意

內建 linter 僅適用於 DSL2 工作流程。DSL1 工作流程不會內嵌。

Nextflow linter 以非封鎖模式運作。調查結果不會阻止工作流程成為 ACTIVE。您可以隨時檢閱問題清單,而不會中斷工作流程建立程序。

注意

內建的 Nextflow linter 會在建立時驗證您的工作流程定義語法。它不同於 Nextflow v26.04 可用的嚴格語法剖析器,其由 控制engineSettings.syntaxVersion並影響執行時間行為。無論工作流程在執行時間使用哪個剖析器,linter 都會在所有 DSL2 版本中於建立時間執行。

擷取 Nextflow lint 輸出

Lint 調查結果會在GetWorkflow回應的 statusMessage 欄位中顯示為結構化 JSON。使用下列 CLI 命令來擷取 lint 輸出:

aws omics get-workflow --id 1234567 --query 'statusMessage'

下列範例顯示來自 Nextflow linter 的 JSON 輸出:

{ "advisory": "Linting findings are from the strict Nextflow DSL2 (nf-lang/v2) linter and reflect the syntax that will be required in Nextflow 25/26 strict mode. On Nextflow 23/24 (legacy grammar) findings are advisory only.", "summary": { "errors": 2, "filesWithErrors": 1, "filesWithoutErrors": 0, "filesFormatted": 0, "warnings": 0, "filesWithWarnings": 0, "filesWithoutWarnings": 2 }, "errors": [ { "filename": "nextflow-lint-legacy.nf", "startLine": 24, "startColumn": 5, "message": "`for` loops are no longer supported" }, { "filename": "nextflow-lint-legacy.nf", "startLine": 24, "startColumn": 10, "message": "`i` is not defined" } ], "warnings": [] }

Lint 輸出欄位

JSON 輸出包含下列欄位:

  • advisory – 說明問題清單的版本特定適用性。在 Nextflow v22.04、v23.10 和 v24.10 (舊版文法) 上,調查結果僅為諮詢。在 Nextflow v25.10 和 v26.04 上,調查結果反映嚴格的模式語法要求。

  • summary – 包含工作流程中所有檔案的錯誤和警告彙總計數。

  • errors – 錯誤物件的陣列。每個錯誤都包含 filename、startColumn、 startLine和 message。

  • warnings – 警告物件的陣列。每個警告都包含與錯誤物件相同的欄位。

  • truncated – 當 lint 輸出超過欄位大小限制時出現的條件式旗標。發生截斷時,會先捨棄警告。工作流程會保持 ACTIVE,並具有有效的裁剪報告。

建議

我們建議以下工作流程來處理 lint 問題清單:

  1. 檢閱 statusMessage 欄位中的 lint 調查結果。

  2. 修正工作流程定義檔案中的錯誤。

  3. 重新建立工作流程以產生乾淨的 lint 報告。

外部文字

可使用下列外部 linter:

  • WDL – 在 Amazon ECR Public Gallery 上執行 WDL linter 的公有 Amazon ECR 映像。

  • Nextflow – 在 Amazon ECR Public Gallery 上執行 Nextflow Linter 規則的公有 Amazon ECR 映像。您可以從 GitHub 上的 linter-rules-for-nextflow 儲存庫存取原始碼。

  • CWL – 無法使用。

以下清單說明內建和外部 linter 之間的差異:

  • 內建 linter:在 CreateWorkflow和 期間執行伺服器端CreateWorkflowVersion。對於 WDL,問題清單會封鎖。對於 Nextflow DSL2,問題清單為非封鎖。僅適用於 WDL 和 Nextflow DSL2 工作流程。

  • 外部文字 – 在建立工作流程之前於本機執行。可以包含其他 HealthOmics 特定的相容性規則。可做為公有 Amazon ECR 映像。