

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

# 封裝和提供 HealthOmics 工作流程定義
<a name="workflow-defn-packaging"></a>

當您建立工作流程或工作流程版本時，您只從一個來源提供定義：隨請求傳送的 ZIP 封存、Amazon S3 中的 ZIP 封存，或 Git 型儲存庫。包含多個定義來源的請求失敗。本主題中的參數同時適用於 `CreateWorkflow`和 `CreateWorkflowVersion`操作。如需完整程序，請參閱 [建立私有工作流程](create-private-workflow.md)和 [建立工作流程版本](workflows-version-create.md)。

**注意**  
HealthOmics 會在您建立工作流程時排列一些工作流程定義。針對哪些引擎傾斜、問題清單是否封鎖工作流程，以及如何讀取它們，請參閱 [HealthOmics 中的工作流程文字](workflows-linter.md)。

## 選擇工作流程定義來源
<a name="workflow-defn-source-selection"></a>


| 使用此來源 | API 參數 | 大小上限 | AWS CLI 旗標 | 
| --- | --- | --- | --- | 
| 本機電腦上的 ZIP 封存。 | definitionZip | 4.4 MB | --definition-zip fileb://my-definition.zip | 
| Amazon S3 儲存貯體中的 ZIP 封存。儲存貯體必須與工作流程位於相同的 AWS 區域。 | definitionUri | 100 MB | --definition-uri s3://amzn-s3-demo-bucket1/my-definition.zip | 
| 透過 AWS CodeConnections 連線支援的 Git 型儲存庫。 | definitionRepository | 1 GiB 儲存庫，每個檔案 100 MiB  | --definition-repository 具有 JSON 值 | 

其他考量：
+ 這些大小配額無法增加。如需詳細資訊，請參閱[HealthOmics 工作流程固定大小配額](fixed-quotas.md#fixed-quotas-workflows)。
+ 如果您的帳戶未擁有擁有 定義的 Amazon S3 儲存貯體，請在 `workflowBucketOwnerId`() 中提供儲存貯體擁有者的 AWS 帳戶 ID`--workflow-bucket-owner-id`。
+ 透過 `definitionRepository`，HealthOmics 會從儲存庫讀取定義檔案，而 `parameterTemplatePath`、 `main`和 `readmePath`是儲存庫中的路徑，而不是封存中的路徑。如需`definitionRepository`欄位的詳細資訊，請參閱 [使用 Git 型儲存庫中的工作流程定義](create-private-workflow.md#create-defn-uri-git)。如需連線設定和支援提供者的詳細資訊，請參閱 [HealthOmics 工作流程與 Git 型儲存庫整合](workflows-git-integration.md)。

## ZIP 封存配置和主要定義檔案
<a name="workflow-defn-zip-layout"></a>

包含主要定義匯入的每個檔案，例如子工作流程`nextflow.config`、 和任何`bin`指令碼。

定義檔案是副檔名符合支援引擎的檔案，例如 `.wdl`、 `.nf`或 `.cwl`。如果您省略 `main`，HealthOmics 會從最接近封存根目錄的定義檔案中進行選擇。它會忽略隱藏的檔案和資料夾，並忽略封存中更深的定義檔案。自動選擇也需要單一引擎，因為封存會保留一個引擎的定義檔案，或因為您設定了 `engine`。在該最接近層級的檔案中：
+ 如果只有一個定義檔案，則 HealthOmics 會使用它，無論它的名稱為何。
+ 如果有數個，HealthOmics 會使用名為 `main.wdl`、 `main.nf`或 的 `main.cwl`。

在兩種情況下HealthOmics 無法解析封存。請求本身成功，工作流程或工作流程版本在 中啟動`CREATING`，但接著移至 `FAILED`，且其狀態訊息提供原因：
+ `Zip file contains multiple workflow definition types` – 封存會保留多個引擎的定義檔案，而您未設定 `engine`。無論您是否設定 ，這都適用`main`。設定 `engine`或移除其他引擎的檔案。當兩個案例都適用時，HealthOmics 會先報告此原因。
+ `Zip file contains multiple top-level workflow definition files` – 您省略了 `main`，數個定義檔案位於最接近的關卡，並非只有一個會命名為 `main.wdl`、 `main.nf`或 `main.cwl`。`main` 設定為您想要的路徑。

若要自行選擇主要定義檔案，請將 `main`(`--main`) 設定為相對於封存根目錄的路徑。路徑最多可達 128 個字元。

例如，對於主要定義檔案為 的封存`workflow-definition/main-file.wdl`：

```
--main workflow-definition/main-file.wdl
```

設定 `engine`(`--engine`) 自行命名引擎，以解析包含多個引擎定義檔案的封存，或使用 WDL 寬鬆引擎。

考慮本機電腦上具有下列配置的工作流程資料夾：

```
my-workflow/
    main.wdl
    tasks/align.wdl
    tasks/call-variants.wdl
```

從該資料夾內部建立封存，讓 `main.wdl`和 `tasks` 資料夾位於封存的根目錄。下列命令也會新增隱藏的檔案和資料夾，例如複製儲存庫中的`.git`資料夾。這些會計入定義大小，因此排除您不需要的定義大小，例如，使用 `-x '.*' -x '*/.*'`：

```
cd my-workflow
zip -r ../my-definition.zip .
cd ..
```

`main.wdl` 現在是封存根目錄的唯一定義檔案，因此您可以省略 `main`：

```
main.wdl
tasks/align.wdl
tasks/call-variants.wdl
```

## 內嵌或透過 Amazon S3 傳送封存
<a name="workflow-defn-zip-handoff"></a>

`definitionZip` 是二進位參數。當您使用 時 AWS CLI， 會使用 `fileb://`字首傳遞封存， 會 AWS CLI 讀取檔案並為您編碼。 AWS SDKs 會為您執行編碼。如果您直接透過 HTTP 呼叫 API，請以 base64 編碼字串傳送封存。

下列範例中的參數範本是選用的。如果您省略它，HealthOmics 會從工作流程定義中衍生執行參數。如需詳細資訊，請參閱[HealthOmics 工作流程的參數範本檔案](parameter-templates.md)。

下列 AWS CLI 範例會透過傳送 ZIP 封存與 請求來建立工作流程。取代每個斜體值：

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

對於大於 中`definitionZip`限制的封存[選擇工作流程定義來源](#workflow-defn-source-selection)，請將其上傳到與工作流程相同區域中的 Amazon S3 儲存貯體，並`definitionUri`改用 。以斜體取代每個值，並以您自己的值取代儲存貯體：

```
aws s3 cp {{my-definition.zip}} s3://amzn-s3-demo-bucket1/my-definition.zip

aws omics create-workflow \
  --name {{my-workflow-name}} \
  --definition-uri s3://amzn-s3-demo-bucket1/my-definition.zip \
  --parameter-template file://{{my-parameter-template.json}}
```

## 設定預設執行儲存體
<a name="workflow-defn-storage-pairing"></a>

我們建議大多數工作流程使用動態執行儲存。在下列任一情況下選擇靜態執行儲存：
+ 工作流程使用超過 9.6 TiB 的資料，其任務受益於高持續 I/O。
+ 一次從共用執行儲存體讀取超過 100 個分散的任務。

如需每個執行儲存類型的詳細資訊，包括其輸送量特性，以及如何調整靜態執行儲存的大小，請參閱 [在 HealthOmics 工作流程中執行儲存類型](workflows-run-types.md)和 [私有 HealthOmics 工作流程的執行最佳化](workflows-run-optimize.md)。

`storageType` (`--storage-type`) 和 `storageCapacity`(`--storage-capacity`) 參數會為使用工作流程的執行設定預設值。您可以在執行時間覆寫兩者，如中所述[在 HealthOmics 中開始執行](starting-a-run.md)。如下所示進行配對：
+ `storageType` 的 `DYNAMIC` – HealthOmics 會根據檔案系統使用率來擴展和縮減執行儲存。請勿設定 `storageCapacity`。如果您這麼做，請求會失敗： 會`CreateWorkflow`報告 `You cannot set the storage capacity for workflows that use DYNAMIC run storage type`，而 會`CreateWorkflowVersion`報告 `You cannot set the storage capacity for workflow version that use DYNAMIC run storage type`。
+ `storageType` 的 `STATIC` – HealthOmics 配置固定數量的執行儲存，因此也以 GiB `storageCapacity`設定 。如果工作流程和執行都未指定容量，則執行會使用 1，200 GiB。上限為每個帳戶的限制。HealthOmics 僅會將靜態執行儲存佈建為 1，200 GiB 或 2，400 GiB 的倍數，並將任何其他值四捨五入至下一個支援的大小。例如，HealthOmics 為低於 1，200 GiB 的容量佈建 1，200 GiB。

下列範例會將預設執行儲存設定為 1，200 GiB 的靜態儲存：

```
aws omics create-workflow \
  --name {{my-workflow-name}} \
  --definition-zip fileb://{{my-definition.zip}} \
  --storage-type STATIC \
  --storage-capacity 1200
```