建立私有工作流程 - AWS HealthOmics

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

建立私有工作流程

使用 HealthOmics 主控台、 AWS CLI 命令或其中一個 AWS SDKs建立工作流程。

注意

請勿在工作流程名稱中包含任何個人身分識別資訊 (PII)。這些名稱會顯示在 CloudWatch 日誌中。

當您建立工作流程時,HealthOmics 會將通用唯一識別碼 (UUID) 指派給工作流程。工作流程 UUID 是全域唯一識別符 (guid),在工作流程和工作流程版本中是唯一的。基於資料來源目的,我們建議您使用工作流程 UUID 來唯一識別工作流程。

如果您的工作流程任務使用任何外部工具 (可執行檔、程式庫或指令碼),您可以將這些工具建置到容器映像中。您可以使用下列選項來託管容器映像:

  • 在 ECR 私有登錄檔中託管容器映像。此選項的先決條件:

    • 建立 ECR 私有儲存庫,或選擇現有的儲存庫。

    • 如中所述設定 ECR 資源政策Amazon ECR 許可

    • 將您的容器映像上傳至私有儲存庫。

  • 同步容器映像與支援的第三方登錄檔的內容。此選項的先決條件:

    • 在 ECR 私有登錄檔中,為每個上游登錄檔設定提取快取規則。如需詳細資訊,請參閱影像映射

    • 如中所述設定 ECR 資源政策Amazon ECR 許可

    • 建立儲存庫建立範本。範本定義 Amazon ECR 為上游登錄檔建立私有儲存庫時的 設定。

    • 建立字首映射,將工作流程定義中的容器映像參考重新映射至 ECR 快取命名空間。

使用主控台建立工作流程

建立工作流程的步驟
  1. 開啟 HealthOmics 主控台

  2. 如有需要,請開啟左側導覽窗格 (≡)。選擇私有工作流程

  3. 私有工作流程頁面上,選擇建立工作流程

  4. 定義工作流程頁面上,提供下列資訊:

    1. 工作流程名稱:此工作流程的獨特名稱。建議您設定工作流程名稱,以在 AWS HealthOmics 主控台和 CloudWatch 日誌中組織您的執行。

    2. 描述 (選用):此工作流程的描述。

  5. 工作流程定義面板中,提供下列資訊:

    1. 工作流程語言 (選用):選取工作流程的規格語言。否則,HealthOmics 會從工作流程定義中決定語言。

    2. 對於工作流程定義來源,選擇從 Git 型儲存庫、Amazon S3 位置或從本機磁碟機匯入定義資料夾。

      1. 對於從儲存庫服務匯入

        注意

        HealthOmics 支援 GitHub、、GitLab、Bitbucket、 的公有和私有儲存庫GitHub self-managedGitLab self-managed。

        1. 選擇連線,將您的 AWS 資源連線至外部儲存庫。若要建立連線,請參閱 與外部程式碼儲存庫連線

          注意

          TLV 區域中的客戶需要在 IAD(us-east-1) 區域中建立連線,才能建立工作流程。

        2. 完整儲存庫 ID 中,將您的儲存庫 ID 輸入為 user-name/repo-name。確認您有權存取此儲存庫中的檔案。

        3. 來源參考 (選用) 中,輸入儲存庫來源參考 (分支、標籤或遞交 ID)。如果未指定來源參考,HealthOmics 會使用預設分支。

        4. 排除檔案模式中,輸入檔案模式以排除特定資料夾、檔案或副檔名。這有助於在匯入儲存庫檔案時管理資料大小。最多有 50 種模式,而且 patter 必須遵循 glob 模式語法。例如:

          1. tests/

          2. *.jpeg

          3. large_data.zip

      2. 對於從 S3 選取定義資料夾

        1. 輸入包含壓縮工作流程定義資料夾的 Amazon S3 位置。Amazon S3 儲存貯體必須與工作流程位於相同的區域。

        2. 如果您的帳戶沒有 Amazon S3 儲存貯體,請在 S3 儲存貯體擁有者 AWS 的帳戶 ID 中輸入儲存貯體擁有者的帳戶 ID。 S3 需要此資訊,以便 HealthOmics 可以驗證儲存貯體擁有權。

      3. 對於從本機來源選取定義資料夾

        1. 輸入壓縮工作流程定義資料夾的本機磁碟機位置。

    3. 主要工作流程定義檔案路徑 (選用):輸入從壓縮工作流程定義資料夾或儲存庫到main檔案的檔案路徑。如果工作流程定義資料夾中只有一個檔案,或主要檔案名為「主要」,則不需要此參數。

  6. README 檔案 (選用) 面板中,選取 README 檔案的來源,並提供下列資訊:

    • 對於從儲存庫服務匯入,在 README 檔案路徑中,輸入儲存庫中 README 檔案的路徑。

    • 針對從 S3 選取檔案,在 S3 的 README 檔案中,輸入 README 檔案的 Amazon S3 URI。

    • 對於從本機來源選取檔案:在 README - 選用中,選擇選擇檔案以選取要上傳的 Markdown (.md) 檔案。

  7. 預設執行儲存組態面板中,為使用此工作流程的執行提供預設執行儲存類型和容量:

    1. 執行儲存體類型:選擇是否使用靜態或動態儲存體做為暫時執行儲存體的預設值。預設為靜態儲存。

    2. 執行儲存容量 (選用):對於靜態執行儲存類型,您可以輸入此工作流程所需的預設執行儲存量。此參數的預設值為 1200 GiB。您可以在開始執行時覆寫這些預設值。

  8. 標籤 (選用):您最多可以將 50 個標籤與此工作流程建立關聯。

  9. 選擇下一步

  10. 新增工作流程參數 (選用) 頁面上,選取參數來源

    1. 對於從工作流程定義檔案剖析,HealthOmics 會自動從工作流程定義檔案剖析工作流程參數。

    2. 對於從 Git 儲存庫提供參數範本,請使用從儲存庫到參數範本檔案的路徑。

    3. 對於從本機來源選取 JSON 檔案,請從指定參數的本機來源上傳JSON檔案。

    4. 對於手動輸入工作流程參數,請手動輸入參數名稱和描述。

  11. 參數預覽面板中,您可以檢閱或變更此工作流程版本的參數。如果您還原JSON檔案,則會遺失您所做的任何本機變更。

  12. 選擇下一步

  13. 容器 URI 重新映射頁面上的映射規則面板中,您可以定義工作流程的 URI 映射規則。

    針對映射檔案的來源,選取下列其中一個選項:

    • – 不需要映射規則。

    • 從 S3 選取 JSON 檔案 – 指定映射檔案的 S3 位置。

    • 從本機來源選取 JSON 檔案 – 在本機裝置上指定映射檔案位置。

    • 手動輸入映射 – 在映射面板中輸入登錄映射和映像映射

  14. 主控台會顯示映射面板。如果您選擇映射來源檔案,主控台會顯示檔案中的值。

    1. 登錄檔映射中,您可以編輯映射或新增映射 (最多 20 個登錄檔映射)。

      每個登錄檔映射都包含下列欄位:

      • 上游登錄檔 URL – 上游登錄檔的 URI。

      • ECR 儲存庫字首 – 要在 Amazon ECR 私有儲存庫中使用的儲存庫字首。

      • (選用) 上游儲存庫字首 – 上游登錄檔中儲存庫的字首。

      • (選用) ECR 帳戶 ID – 擁有上游容器映像之帳戶的帳戶 ID。

    2. 映像映射中,您可以編輯映像映射或新增映射 (最多 100 個映像映射)。

      每個影像映射都包含下列欄位:

      • 來源映像 – 指定上游登錄檔中來源映像的 URI。

      • 目的地映像 – 指定私有 Amazon ECR 登錄檔中對應映像的 URI。

  15. 選擇下一步

  16. 檢閱工作流程組態,然後選擇建立工作流程

使用 CLI 建立工作流程

定義工作流程和參數之後,您可以使用 CLI 建立工作流程,如下所示。

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

如果您的工作流程定義檔案位於 Amazon S3 資料夾中,請使用 definition-uri 參數輸入位置,而非 definition-zip。如需詳細資訊,請參閱 AWS HealthOmics API 參考中的 CreateWorkflow

create-workflow 請求會以下列方式回應:

{ "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" }

建立工作流程時要使用的選用參數

您可以在建立工作流程時指定任何選用參數。如需語法詳細資訊,請參閱 AWS HealthOmics API 參考中的 CreateWorkflow

設定提取快取映射參數

如果您使用 Amazon ECR 提取快取映射功能,您可以覆寫預設映射。如需容器設定參數的詳細資訊,請參閱 私有工作流程的容器映像

在下列範例中, 檔案mappings.json包含此內容:

{ "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" } ] }

在 create-workflow 命令中指定映射參數:

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

您也可以指定映射參數檔案的 S3 位置:

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

指定 definition-uri 參數

如果您包含多個工作流程定義檔案,請使用 main 參數來指定哪個檔案是工作流程的主要定義檔案。

如果您將工作流程定義檔案上傳到 Amazon S3 資料夾,請使用 definition-uri 參數指定位置,如下列範例所示。如果您的帳戶未擁有 Amazon S3 儲存貯體,請提供擁有者的 AWS 帳戶 ID。

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

指定main定義檔案

如果您要包含多個工作流程定義檔案,請使用 main 參數來指定工作流程的主要定義檔案。

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

使用執行儲存參數

您可以指定預設執行儲存類型 (DYNAMIC 或 STATIC),並執行儲存容量 (靜態儲存需要)。如需執行儲存類型的詳細資訊,請參閱 在 HealthOmics 工作流程中執行儲存類型

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 \

使用 accelerators 參數。

使用 加速器參數來建立在加速運算執行個體上執行的工作流程。下列範例示範如何使用 accelerators 參數。您可以在工作流程定義中指定 GPU 組態。請參閱 加速運算執行個體

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

使用 SDK 建立工作流程

您可以使用其中一個 SDKs建立工作流程。下列範例示範如何使用 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={ ... } )