

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在工作流程创建期间添加私有或第三方容器
<a name="containers-workflow-creation"></a>

创建新工作流程时，您可以定义工作流程所需的注册表和映像映射。有关更多信息，请参阅 [创建私有工作流程](create-private-workflow.md)。您还可以在创建新的工作流程版本时更新注册表和映像映射。有关更多信息，请参阅 [创建工作流程版本](workflows-version-create.md)。

以下各节描述注册表映射和映像映射。

## 注册表映射
<a name="ecr-pull-through-registry-mapping"></a>

您可以定义注册表映射以映射您的私有 Amazon ECR 注册表中的前缀和上游注册表名称。一个注册表映射可以包含拉入式缓存映射和注册表的映射 HealthOmics 的副本。

以下示例通过拉取缓存映射 Docker Hub、Quay 和 Amazon ECR Public，并映射 Seqera 容器 (`community.wave.seqera.io`) 有凭证这样 HealthOmics 复制其图像。

```
{
    "registryMappings": [
        {
            "upstreamRegistryUrl": "registry-1.docker.io",
            "ecrRepositoryPrefix": "docker-hub"
        },
        {
            "upstreamRegistryUrl": "quay.io",
            "ecrRepositoryPrefix": "quay"
        },
        {
            "upstreamRegistryUrl": "public.ecr.aws",
            "ecrRepositoryPrefix": "ecr-public"
        },
        {
            "upstreamRegistryUrl": "community.wave.seqera.io",
            "ecrRepositoryPrefix": "wave-seqera",
            "credentialArn": "arn:aws:secretsmanager:us-east-1:111122223333:secret:omics-registry/seqera-EXAMPLE"
        }
    ]
}
```

以下规则适用于注册表映射：
+ `upstreamRegistryUrl` 必须与映像 URI 开头的注册表主机完全匹配。例如，映射为 `wave.seqera.io` 不覆盖上面的图片 `community.wave.seqera.io`。
+ 工作流程引用的每个上游注册表主机都需要映射。您通过其私有 Amazon ECR URI 引用的图像不需要图片。
+ 拉取缓存映射不使用 `credentialArn`。如果你添加 `credentialArn` 到直通缓存映射， HealthOmics 忽略了它。
+ 注册表的映射是 HealthOmics 来自的副本必须包括 `credentialArn`。如果其中一个映射没有 `credentialArn`，工作流程因命名注册表的错误而失败。
+ 保持 `upstreamRepositoryPrefix` Wave () 未设置`wave.seqera.io`）。

`CreateWorkflow` 和 `CreateWorkflowVersion` 是异步的。如果状态是 `FAILED`，错误出现在 `statusMessage` 在 `GetWorkflow` 对工作流程的响应，或 `GetWorkflowVersion` 工作流程版本的响应。

提供内联地图 `containerRegistryMap`，或者作为 Amazon S3 URI `containerRegistryMapUri`，不是两者兼而有之。有关 CLI 示例，请参阅 [配置拉入式缓存映射参数](create-private-workflow.md#create-prefix-mapping-parameters) 和 [配置非拉取式缓存映射参数](create-private-workflow.md#create-non-ptc-mapping-parameters)。

运行使用您运行的工作流程或工作流程版本的注册表映射，因此您无需向其中添加任何内容 `StartRun`。

## 镜像映射
<a name="ecr-pull-through-mapping-format"></a>

您可以定义映像映射，以便在私有 Amazon ECR 工作流程中定义的图像名称和上游注册表中的图像名称之间进行映射。

您可以将映像映射与 Amazon ECR 拉取缓存支持的注册表（例如 Quay）和不支持提取缓存的注册表（例如 Seqera）一起使用映像。 HealthOmics 不会为映像映射复制图像，因此您可以自己保持私有存储库与上游注册表同步。

**注意**  
映像映射优先于注册表映射。

以下示例显示了从私有 Amazon ECR 图像到公共基因组学图像和最新的 Ubuntu 映像的映射。

```
{
    "imageMappings": [
        {
            "sourceImage": "public.ecr.aws/aws-genomics/broadinstitute/gatk:4.6.0.2",
            "destinationImage": "111122223333.dkr.ecr.us-east-1.amazonaws.com/broadinstitute/gatk:4.6.0.2"
        },
        {
            "sourceImage": "ubuntu:latest",
            "destinationImage": "111122223333.dkr.ecr.us-east-1.amazonaws.com/custom/ubuntu:latest"
        }
    ]
}
```

有关在创建工作流程时使用注册表和映像映射的更多信息，请参阅 [配置拉入式缓存映射参数](create-private-workflow.md#create-prefix-mapping-parameters)。