创建私有工作流程 - 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、GitLabBitbucket、GitHub self-managed的公有和私有存储库GitLab self-managed。

        1. 选择一个连接,将您的 AWS 资源连接到外部存储库。要创建连接,请参阅Connect 连接外部代码存储库

          注意

          该TLV地区的客户需要在 IAD (us-east-1) 区域创建连接才能创建工作流程。

        2. 完整存储库 ID 中,输入您的存储库 ID 作为用户名/存储库名称。确认您有权访问此存储库中的文件。

        3. 源引用(可选)中,输入存储库源引用(分支、标签或提交 ID)。 HealthOmics 如果未指定源引用,则使用默认分支。

        4. 排除文件模式中,输入文件模式以排除特定的文件夹、文件或扩展名。这有助于在导入存储库文件时管理数据大小。最多有 50 个模式,并且模式必须遵循全局模式语法。例如:

          1. tests/

          2. *.jpeg

          3. large_data.zip

      2. 对于从 S3 中选择定义文件夹

        1. 输入包含压缩工作流程定义文件夹的 Amazon S3 位置。Amazon S3 存储桶必须与工作流程位于同一区域。

        2. 如果您的账户不拥有 Amazon S3 存储桶,请在 S3 存储桶拥有者的 AWS 账户 ID 中输入存储桶拥有者的账户 ID。为了验证存储桶所有权 HealthOmics ,必须提供此信息。

      3. 对于从本地来源选择定义文件夹

        1. 输入压缩的工作流程定义文件夹的本地驱动器位置。

    3. 工作流定义文件主路径(可选):输入从压缩的工作流定义文件夹或存储库到该main文件的文件路径。如果工作流定义文件夹中只有一个文件,或者主文件名为 “main”,则不需要此参数。

  6. 自述文件(可选)面板中,选择自述文件来源并提供以下信息:

    • 对于从存储库服务导入,在自述文件路径中,输入存储库中自述文件的路径。

    • 对于从 S3 中选择文件,在 S3 的自述文件中,输入自述文件的 Amazon S3 URI。

    • 对于 “从本地来源选择文件:在自述文件-可选” 中,选择 “选择文件” 以选择要上传的 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" } ] }

在创建工作流命令中指定映射参数:

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

使用运行存储参数

您可以指定默认的运行存储类型(动态或静态)和运行存储容量(静态存储所必需的)。有关运行存储类型的更多信息,请参阅在 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 参数创建在加速计算实例上运行的工作流程。以下示例说明如何使用该accelerators参数。您可以在工作流程定义中指定 GPU 配置。请参阅加速计算实例

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

使用 SDK 创建工作流程

您可以使用其中一个来创建工作流程 SDKs。以下示例展示了如何使用 Python 开发工具包创建工作流程

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={ ... } )