

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

# 工作流程版本控制在 HealthOmics
<a name="workflow-versions"></a>

如果您需要对工作流程进行更改，可以创建新的工作流程或新的工作流程版本。版本是不可变的，但允许的配置更改除外，这些更改不会影响执行逻辑。

工作流程版本具有以下优点：
+ 版本构成了相关工作流程的逻辑组。您可以为每个工作流程版本添加用户定义的名称，以便更轻松地对其进行管理（特别是对于具有大量版本的工作流程）。
+ 您可以同时运行工作流程的多个版本。
+ 工作流程的所有版本共享相同的工作流程 ID 和基本 ARN，这可以简化您修改工作流程后的管道管理。
+ 工作流程版本提供的数据来源级别与工作流程相同。版本是不可变的，并且 HealthOmics会为每个工作流程版本创建唯一的 ARN。版本 ARN 包括工作流程 ID 和版本名称，如以下示例所示：

  `arn:aws:omics:us-west-2:123456789012:workflow/1234567/version/myUniqueVersionName`
+ 如果您拥有共享的工作流程，则可以在不中断订阅者的情况下更新工作流程（订阅者可以继续使用以前的版本）。订阅者可以访问所有工作流程版本。如果您创建了新版本，则无需重新共享工作流程。
+ 启动工作流程运行时，可以指定工作流程版本。
  + 用户可以选择保持稳定版本进行生产运行，也可以试用最新版本进行试运行。
  + 如果用户在新版本中遇到问题，他们可以恢复到工作流程的先前版本。
  + 共享工作流程的订阅者可以选择要使用的版本。

**Topics**
+ [默认工作流程版本](workflows-default-version.md)
+ [创建工作流程版本](workflows-version-create.md)
+ [更新工作流程版本](workflows-version-update.md)
+ [删除工作流程版本](workflows-version-delete.md)

# 默认工作流程版本
<a name="workflows-default-version"></a>

创建工作流程的一个或多个版本后， HealthOmics 会将原始工作流程视为默认版本。开始运行时，您可以选择为运行指定工作流程版本。如果您在开始运行时未指定版本，则 HealthOmics 使用默认版本。

在控制台中，使用**默认版本**标签 HealthOmics 表示原始工作流程。只有在您创建了一个或多个工作流程版本之后，控制台才会使用此标签。原始工作流程始终保持默认版本。您不能将任何其他版本指定为默认版本。

如果有其他版本与工作流程相关联，则无法删除该工作流程的默认版本。有关更多信息，请参阅 [删除私有工作流程](delete-private-workflow.md)。

# 创建工作流程版本
<a name="workflows-version-create"></a>

创建工作流程的新版本时，需要为新版本指定配置值。它不会从工作流程继承任何配置值。

创建版本时，请提供此工作流程中唯一的版本名称。 HealthOmics 创建版本后，您无法更改名称。

版本名称必须以字母或数字开头，可以包括大写和小写字母、数字、连字符、句点和下划线。最大长度为 64 个字符。例如，您可以使用简单的命名方案，例如版本 1、版本 2、版本 3。您还可以将工作流程版本与自己的内部版本控制约定（例如 2.7.0、2.7.1、2.7.2）进行匹配。

或者，使用版本描述字段添加有关此版本的注释。例如：**Fix for syntax error in workflow definition**。

**注意**  
不要在版本名称中包含任何个人身份信息 (PII)。版本名称显示在工作流程版本 ARN 中。

HealthOmics 为工作流程版本分配唯一的 ARN。根据工作流程 ID 和版本名称的组合，ARN 是唯一的。

**警告**  
删除工作流程版本后， HealthOmics 允许您为其他工作流程版本重复使用该版本的版本名称。最佳做法是不要重复使用版本名称。如果您确实重复使用了名称，则工作流程和每个版本都有一个唯一的 UUID，您可以将其用作来源。

**Topics**
+ [使用控制台创建工作流程版本](#workflow-versions-console-create)
+ [使用 CLI 创建工作流程版本](#workflow-versions-api-create)
+ [使用 SDK 创建工作流程版本](#workflow-versions-sdk)
+ [验证工作流程版本的状态](#using-get-workflow)

## 使用控制台创建工作流程版本
<a name="workflow-versions-console-create"></a>

**创建工作流程版本的步骤**

1. 打开 [HealthOmics 管理控制台](https://console.aws.amazon.com/omics/)。

1.  如果需要，请打开左侧导航窗格 (►)。选择**私有工作流程**。

1. 在**私有工作流程**页面上，选择新版本的工作流程。

1. 在**工作流程详细信息**页面上，选择**创建新版本**。

1. 在**创建版本**页面上，提供以下信息：

   1. **版本名称**：输入工作流程版本的名称，该名称在整个工作流程中是唯一的。

   1. **版本描述**（可选）：您可以使用描述字段添加有关此版本的注释。

1. 在 “**工作流定义**” 面板中，提供以下信息：

   1. **工作流语言**（可选）：选择工作流程版本的规范语言。否则， HealthOmics 根据工作流程定义确定语言。

   1. 对于**工作流定义源**，请选择从基于 Git 的存储库、Amazon S3 位置或本地驱动器导入定义文件夹。

      1. 对于**从存储库服务导入**：
**注意**  
HealthOmics 支持、、GitHub、GitLabBitbucket、GitHub self-managed的公有和私有存储库GitLab self-managed。

         1. 选择一个**连接**，将您的 AWS 资源连接到外部存储库。要创建连接，请参阅[Connect 连接外部代码存储库](setting-up-new.md#setting-up-omics-repository)。
**注意**  
该TLV地区的客户需要在 IAD (us-east-1) 区域创建连接才能创建工作流程。

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

         1. 在**源引用**（可选）中，输入存储库源引用（分支、标签或提交 ID）。 HealthOmics 如果未指定源引用，则使用默认分支。

         1. 在**排除文件模式**中，输入文件模式以排除特定的文件夹、文件或扩展名。这有助于在导入存储库文件时管理数据大小。最多有 50 个模式，并且模式必须遵循[全局模式语法](https://fossil-scm.org/home/doc/tip/www/globs.md)。例如：

            1. `tests/`

            1. `*.jpeg`

            1. `large_data.zip`

      1. 对于**从 S3 中选择定义文件夹**：

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

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

      1. 对于**从本地来源选择定义文件夹**：

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

   1. **工作流定义文件主路径**（可选）：输入从压缩的工作流定义文件夹或存储库到该`main`文件的文件路径。如果工作流定义文件夹中只有一个文件，或者主文件名为 “main”，则不需要此参数。

1. 在**自述文件**（可选）面板中，选择**自述文件来源**并提供以下信息：
   + 对于**从存储库服务导入**，在**自述文件路径**中，输入存储库中自述文件的路径。
   + 对于**从 S3 中选择文件**，在 S3 的**自述文件中**，输入自述文件的 Amazon S3 URI。
   + 对于 **“从本地来源选择文件**：在**自述文件-可选**” 中，选择 “选择**文件” 以选择**要上传的 markdown (.md) 文件。

1. 在**默认运行存储配置**面板中，为使用此工作流程的运行提供默认的运行存储类型和容量：

   1. **运行存储类型**：选择使用静态存储还是动态存储作为临时运行存储的默认值。默认为静态存储。

   1. **运行存储容量**（可选）：对于静态运行存储类型，您可以输入此工作流程所需的默认运行存储量。此参数的默认值为 1200 GiB。开始运行时，您可以覆盖这些默认值。

1. **标签**（可选）：您最多可以将 50 个标签与该工作流程版本相关联。

1. 选择**下一步**。

1. 在**添加工作流程参数**（可选）页面上，选择**参数来源**：

   1. 对于**从工作流定义文件解析**， HealthOmics 将自动解析工作流定义文件中的工作流参数。

   1. 对于**从 Git 存储库提供参数模板**，请使用仓库中参数模板文件的路径。

   1. 对于**从本地源选择 JSON JSON 文件**，请从本地源上传指定参数的文件。

   1. 对于**手动输入工作流参数**，请手动输入参数名称和描述。

1. 在**参数预览**面板中，您可以查看或更改此工作流程版本的参数。如果恢复该JSON文件，则您所做的任何本地更改都将丢失。

1. 在**容器 URI 重新映射**页面的**映射规则**面板中，您可以为工作流程定义 URI 映射规则。

   在 “**映射文件来源**” 中，选择以下选项之一：
   + **无**-无需映射规则。
   + **从 S3 中选择 JSON 文件**-指定映射文件的 S3 位置。
   + **从本地源选择 JSON 文件**-指定本地设备上的映射文件位置。
   + **手动输入映射** **-在 “映射” 面板中输入注册表映射和图像映射。**

1.  控制台将显示 “**映射**” 面板。如果您选择了映射源文件，则控制台会显示该文件中的值。

   1. 在**注册表映射**中，您可以编辑映射或添加映射（最多 20 个注册表映射）。

      每个注册表映射都包含以下字段：
      + **上游注册表 URL**-上游注册表的 URI。
      + **ECR 存储库前缀** — Amazon ECR 私有存储库中使用的存储库前缀。
      + （可选）**上游存储库前**缀-上游注册表中存储库的前缀。
      + （可选）**ECR 账户 ID**-拥有上游容器映像的账户的账户 ID。

   1. 在**图像映射**中，您可以编辑图像映射或添加映射（最多 100 个图像映射）。

      每个图像映射都包含以下字段：
      + **源图像**-指定上游注册表中源图像的 URI。
      + **目标图片**-指定私有 Amazon ECR 注册表中相应图像的 URI。

1. 选择**下一步**。

1. 查看版本配置，然后选择**创建版本**。

创建版本后，控制台会返回到工作流程详细信息页面，并在工作**流程和版本表中显示新版本**。

## 使用 CLI 创建工作流程版本
<a name="workflow-versions-api-create"></a>

您可以使用 `CreateWorkflowVersion` API 操作创建工作流程版本。对于可选参数， HealthOmics 使用以下默认值：


| 参数 | 默认值 | 
| --- | --- | 
| Engine | 根据工作流程定义确定 | 
| 存储类型 | STATIC | 
| 存储容量（用于静态存储） | 1200 GiB | 
| Main  | 根据工作流定义文件夹的内容确定。有关更多信息，请参阅 [HealthOmics 工作流程定义要求](workflow-defn-requirements.md)。 | 
| 加速器 | none | 
| 标记 | none | 

以下 CLI 示例创建了使用静态存储作为默认运行存储的工作流程版本：

```
aws omics create-workflow-version \
--workflow-id 1234567  \
--version-name "my_version" \
--engine WDL \
--definition-zip fileb://workflow-crambam.zip \
--description "my version description" \
--main file://workflow-params.json \
--parameter-template file://workflow-params.json \
--storage-type='STATIC'   \
--storage-capacity 1200   \
--tags example123=string  \
--accelerators GPU
```

如果您的工作流程定义文件位于 Amazon S3 文件夹中，请改用`definition-uri`参数输入该位置`definition-zip`。有关更多信息，请参阅 AWS HealthOmics API 参考[CreateWorkflowVersion](https://docs.aws.amazon.com/omics/latest/api/API_CreateWorkflowVersion.html)中的。

您会收到以下对`create-workflow-version`请求的回复。

```
{
  "workflowId": "1234567",
  "versionName": "my_version",
  "arn": "arn:aws:omics:us-west-2:123456789012:workflow/1234567/version/3",
  "status": "ACTIVE",
  "tags": {
    "environment": "production",
    "owner": "team-alpha"
  },
  "uuid": "0ac9a563-355c-fc7a-1b47-a115167af8a2"
}
```

## 使用 SDK 创建工作流程版本
<a name="workflow-versions-sdk"></a>

您可以使用其中一个来创建工作流程 SDKs。

以下示例说明如何使用 Python SDK 创建工作流程版本

```
import boto3

omics = boto3.client('omics')

with open('definition.zip', 'rb') as f:
   definition = f.read()

response = omics.create_workflow_version(
   workflowId='1234567',
   versionName='my_version',
   requestId='my_request_1'
   definitionZip=definition,
   parameterTemplate={ ... }
)
```

## 验证工作流程版本的状态
<a name="using-get-workflow"></a>

创建工作流程版本后，您可以使用验证状态并查看工作流程的其他详细信息 **get-workflow-version**，如图所示。

```
aws omics get-workflow-version 
--workflow-id 9876543
--version-name "my_version"
```

如图所示，响应会为您提供工作流程的详细信息，包括状态。

```
{
  "workflowId": "1234567",
  "versionName": "3.0.0",
  "arn": "arn:aws:omics:us-west-2:123456789012:workflow/1234567/version/3.0.0",
  "status": "ACTIVE",
  "description": ...
  "uuid": "0ac9a563-355c-fc7a-1b47-a115167af8a2"
}
```

必须先将状态转换为，然后才能使用此工作流程版本开始运行`ACTIVE`。

# 更新工作流程版本
<a name="workflows-version-update"></a>

您可以更新私有工作流程版本的描述和默认运行存储配置。要更改工作流程版本中的任何其他信息，请创建一个新版本。

**Topics**
+ [使用控制台更新工作流程版本](#workflow-versions-console-update)
+ [使用 CLI 更新工作流程版本](#workflow-versions-api-update)
+ [使用 SDK 更新工作流程版本](#workflow-versions-sdk-update)

## 使用控制台更新工作流程版本
<a name="workflow-versions-console-update"></a>

**更新工作流程版本**

1. 打开 [HealthOmics 控制台](https://console.aws.amazon.com/omics/)。

1.  如果需要，请打开左侧导航窗格 (►)。选择 “**私有工作流程**”。

1. 在**私有工作流程**页面上，选择工作流程。

1. 在 “**工作流程**” 页面上，选择要更新的工作流程版本，然后从 “**操作**” 列表中**选择 “编辑”**。
   + 如果您选择默认版本，则控制台将打开 **“编辑工作流程**” 页面。有关更多信息，请参阅 [更新私有工作流程](update-private-workflow.md)。
   + 如果您选择用户定义的版本，则控制台将打开 **“编辑版本**” 页面。

1. 在 **“编辑版本**” 页面上，提供以下信息
   + **版本描述**（可选）-此版本的描述。

1. 在**默认运行存储配置**面板中，为使用此工作流程版本的运行提供以下默认值。当你开始运行时，你可以覆盖默认值：
   + 对于 “**运行存储类型**”，选择 “**静态**” 或 “**动态**”。
   + 对于静态运行存储，请为使用此工作流程版本的**运行选择默认的运行存储容量**。此参数的默认值为 1200 GiB。

1. 选择**保存更改**。

控制台返回工作流程详细信息页面，并显示带有更新工作流程版本的页面横幅。

## 使用 CLI 更新工作流程版本
<a name="workflow-versions-api-update"></a>

您可以使用以下 CLI 命令更新工作流程版本的参数。工作流程 ID 和版本名称的组合可唯一标识版本。

```
aws omics update-workflow-version
--workflow-id 1234567
--version-name "my_version"
--storage-type 'STATIC' 
--storage-capacity 2400
--description "version description"
```

您未收到对`update-workflow-version`请求的回应。

## 使用 SDK 更新工作流程版本
<a name="workflow-versions-sdk-update"></a>

您可以使用其中一个来更新工作流程版本 SDKs。以下 python SDK 示例展示了如何更新工作流程版本的存储类型和描述。

```
import boto3

omics = boto3.client('omics')

response = omics.update_workflow_version(
   workflowID=1234567,
   versionName='3.0.0',
   storageType='DYNAMIC',
   description='new version description'
)
```

# 删除工作流程版本
<a name="workflows-version-delete"></a>

您可以使用控制台、CLI 或其中一个来删除用户定义的工作流程版本 SDKs。删除工作流程版本不会影响正在使用该工作流程版本的任何正在进行的运行。

您无法删除[默认工作流程版本](workflows-default-version.md)。删除所有用户定义的版本，然后删除工作流程。

**Topics**
+ [使用控制台删除工作流程版本](#workflow-versions-console-delete)
+ [使用 CLI 删除工作流程版本](#workflow-versions-api-delete)
+ [使用 SDK 删除工作流程版本](#workflow-versions-sdk-delete)

## 使用控制台删除工作流程版本
<a name="workflow-versions-console-delete"></a>

**删除工作流程版本**

1. 打开 [HealthOmics 控制台](https://console.aws.amazon.com/omics/)。

1.  如果需要，请打开左侧导航窗格 (►)。选择**私有工作流程**。

1. 在**私有工作流程**页面上，选择工作流程。

1. 在 “**工作流程**” 页面上，选择要删除的工作流程版本，然后从 “**操作**” 列表中选择 “**删除**”。

1. 在**删除工作流程版本**模式中，输入 “确认” 以确认删除。

1. 选择**删除**。

控制台会显示带有已删除工作流程版本的页面横幅。

## 使用 CLI 删除工作流程版本
<a name="workflow-versions-api-delete"></a>

您可以使用以下 CLI 命令删除用户定义的工作流程版本。工作流程 ID 和版本名称的组合可唯一标识版本。

```
aws omics delete-workflow-version
--workflow-id 9876543
--version-name "my_version"
```

您未收到对`delete-workflow-version`请求的回应。

## 使用 SDK 删除工作流程版本
<a name="workflow-versions-sdk-delete"></a>

您可以使用其中一个来删除工作流程 SDKs。

以下示例说明如何使用 Python 开发工具包删除工作流程。

```
import boto3

omics = boto3.client('omics')

response = omics.delete_workflow_version(
   workflowID=1234567,
   versionName='3.0.0'
)
```