View a markdown version of this page

将 HealthOmics 工作流程连接到 VPC - AWS HealthOmics

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

将 HealthOmics 工作流程连接到 VPC

借助 Amazon Virtual Private Cloud(亚马逊 VPC),您可以在您定义的私有虚拟网络中启动 AWS 资源。您可以将运行配置为使用 VPC 联网模式,从而允许您的 HealthOmics 工作流程访问您的 VPC 中的资源。启用 VPC 联网后,如果您的 VPC 配置了互联网访问权限,则您的运行可以访问您的 VPC 内的资源并通过公共互联网连接到外部资源。

注意

每个 HealthOmics 工作流程运行都在 HealthOmics 服务拥有和管理的 VPC 内执行。这些 VPCs是自动维护的,买家看不见。将您的运行配置为访问您的 Amazon VPC 中的资源对 HealthOmics托管的 VPC 没有影响。

何时使用 VPC 网络

当您的运行需要时,请使用 VPC 联网:

  • 通过互联网访问公开可用的数据集(例如,美国国立卫生研究院数据集、学术存储库)

  • Connect 连接到第三方许可服务器或外部许可服务器 APIs

  • 从其他 AWS 区域的 Amazon S3 存储桶读取或写入数据

  • 访问私有网络中的本地资源

  • 连接到您的 VPC 中的 AWS 资源

注意

当您将运行连接到 VPC 时,它只能访问该 VPC 内的可用资源。要允许您的运行访问互联网,您还必须将 VPC 配置为可以访问互联网。有关更多信息,请参阅 为 VPC 连接的工作流程提供互联网接入

联网模式

HealthOmics 工作流支持两种联网模式。默认情况下,工作流程运行在 “受限” 模式下运行。在启动工作流程运行时,您可以按运行启用 VPC 联网。

受限(默认)

跑步只能访问同一 AWS 区域内的 Amazon S3 和 Amazon ECR 资源。跑步无法访问其他 AWS 服务、跨 AWS 区域的资源或公共互联网。

VPC

运行流量通过您的 VPC 子网 HealthOmics 中配置的弹性网络接口 (ENIs) 进行路由。您可以通过 NAT 网关控制网络路由 ACLs、安全组、网络和互联网访问。此模式允许访问:

  • 公共互联网资源(需要配置 NAT 网关)

  • AWS 其他地区的服务

  • 您的 VPC 中的私有资源

  • 访问私有网络中的本地资源

在启动工作流程运行时,您可以使用 StartRun API 中的networkingMode参数指定联网模式。

开始使用

本节将指导您首次为 HealthOmics 工作流程设置 VPC 网络。

先决条件

在为 HealthOmics 工作流程配置 VPC 网络之前,请确保您具备以下条件:

  • 具有相应子网和安全组的现有 VPC。VPC 必须与您的工作流程位于同一区域。

  • 在您所在地区 HealthOmics 运营的可用区中至少有一个子网。

  • 创建和管理 HealthOmics 配置的适当的 IAM 权限。

  • 了解 VPC 网络概念(子网、安全组、路由表)。

  • 您的 AWS 账户中有足够的 ENI 容量。 HealthOmics 使用服务相关角色在您的 VPC 中扩展和管理 ENI。所需的 ENI 数量取决于您的工作负载。在 Amazon EC2 控制台中监控您的 ENI 使用情况,确保您有足够的容量。

重要

您的 VPC 配置必须包含在您所在地区 HealthOmics运行的可用区中的至少一个子网,以支持工作流程任务放置。使用 VPC 联网模式时,您有责任确定跨 AWS 区域传输或使用数据是否安全合规。

步骤 1:创建或配置您的 VPC

创建包含私有子网、安全组和 NAT 网关的 VPC(如果需要访问互联网)。有关详细 step-by-step说明,请参阅为 VPC 连接的工作流程提供互联网接入

步骤 2:配置安全组

创建一个安全组,允许出站流量到达您的运行需要访问的目的地。按照最低权限原则,将安全组配置为仅允许所需的最低出站流量。

有关配置示例和详细指南,请参阅中的安全组部分为 VPC 连接的工作流程提供互联网接入

步骤 3:验证路由表

确保您的私有子网有通往 NAT 网关的路由,以便访问互联网。有关路由表配置的示例,请参阅中的路由表部分为 VPC 连接的工作流程提供互联网接入

注意

将运行连接到公有子网不会为其提供互联网访问权限或公有 IP 地址。对于需要互联网连接的跑步,请务必使用带有 NAT 网关路由的私有子网。

步骤 4:创建配置资源

创建用于定义您的 VPC 网络设置的 HealthOmics 配置资源:

aws omics create-configuration \ --name my-vpc-config \ --description "VPC configuration for genomics workflows" \ --run-configurations '{ "vpcConfig": { "securityGroupIds": ["sg-0123456789abcdef0"], "subnetIds": [ "subnet-0a1b2c3d4e5f6g7h8", "subnet-1a2b3c4d5e6f7g8h9" ] } }' \ --region us-west-2

配置网络资源后,配置将从ACTIVE状态CREATING转换为状态。这最多需要 15 分钟。

步骤 5:开始使用 VPC 网络运行工作流程

配置完成后ACTIVE,在启用 VPC 联网的情况下启动工作流程运行:

aws omics start-run \ --workflow-id 1234567 \ --role-arn arn:aws:iam::123456789012:role/OmicsWorkflowRole \ --output-uri s3://my-bucket/outputs/ \ --networking-mode VPC \ --configuration-name my-vpc-config \ --region us-west-2

步骤 6:验证连通性

监控您的工作流程运行情况,以验证其是否可以访问所需的外部资源。在 “日志” 中查看工作流程 CloudWatch 日志,了解连接成功或失败的消息。有关测试连接的详细指南,请参阅测试 VPC 连接

VPC 要求

您的 VPC 必须满足以下要求:

子网要求

  • 最低限度:在 HealthOmics 运行的可用区中至少有一个子网

  • 最大:每个配置 16 个子网

  • 限制:每个可用区最多有一个子网

  • 建议:对于需要互联网访问的跑步,使用带有 NAT 网关路由的私有子网。虽然您可以指定单个子网,但我们建议在不同的可用区中使用多个子网以提高可用性。

安全组要求

  • 最少:1 个安全组

  • 最多:每个配置 5 个安全组

  • 要求:所有安全组必须与子网属于同一 VPC

安全组控制您跑步的入站和出站流量。

注意

所有子网和安全组必须属于同一 VPC。

网络接口要求

HealthOmics 在您的 VPC 中配置弹性网络接口 (ENIs) 以将运行连接到您的网络。确保您的 AWS 账户有足够的 ENI 容量(默认限制: ENIs 每个区域 5,000)。

ENIs 创建者使用 HealthOmics 以下标签进行标记:

"TagSet": [ { "Key": "Service", "Value": "HealthOmics" }, { "Key": "eniType", "Value": "CUSTOMER" } ]
重要

请勿修改或删除由 ENIs 创建的 HealthOmics。修改这些网络接口可能会导致服务延迟或工作流程运行中断。

配置 APIs

HealthOmics APIs 用于创建、管理和删除 VPC 配置。您可以在多个工作流程运行中重复使用配置。

CreateConfiguration

使用 VPC 网络设置创建新的配置资源。有关示 step-by-step例,请参阅步骤 4:创建配置资源

请求语法:

aws omics create-configuration \ --name configuration-name \ --description description \ --run-configurations '{"vpcConfig":{"securityGroupIds":["security-group-id"],"subnetIds":["subnet-id"]}}' \ --tags Key=key,Value=value \ --region region

参数:

  • 名称(必填)-配置的唯一名称(最多 50 个字符)。

  • 描述(可选)-配置的描述。

  • 运行配置(可选)— VPC 配置设置:

    • vpcConfig.securityGroupIds— 1—5 个安全组的列表。 IDs

    • vpcConfig.subnetIds— 1—16 个子网的列表。 IDs

  • 标签(可选)-资源标签。

响应:

{ "arn": "arn:aws:omics:region:account-id:configuration/configuration-name", "uuid": "configuration-uuid", "name": "configuration-name", "runConfigurations": { "vpcConfig": { "securityGroupIds": ["security-group-id"], "subnetIds": ["subnet-id"], "vpcId": "vpc-id" } }, "status": "CREATING", "creationTime": "timestamp", "tags": {} }

配置状态值:

  • 正在@@ 创建-正在创建配置并配置网络资源(最长 15 分钟)。

  • 激活-配置已准备就绪,可以使用。

  • 正在@@ 删除-正在删除配置。

  • 已删除-配置已删除。

GetConfiguration

检索特定配置的详细信息。

请求语法:

aws omics get-configuration \ --name configuration-name \ --region region

响应:

{ "arn": "arn:aws:omics:region:account-id:configuration/configuration-name", "uuid": "configuration-uuid", "name": "configuration-name", "runConfigurations": { "vpcConfig": { "securityGroupIds": ["security-group-id"], "subnetIds": ["subnet-id"], "vpcId": "vpc-id" } }, "status": "ACTIVE", "creationTime": "timestamp", "tags": {} }

ListConfigurations

列出您账户中的所有配置。

请求语法:

aws omics list-configurations \ --region region

响应:

{ "items": [ { "arn": "arn:aws:omics:region:account-id:configuration/configuration-name", "name": "configuration-name", "description": "description", "status": "ACTIVE", "creationTime": "timestamp" } ] }

DeleteConfiguration

删除配置。您无法删除当前由活动工作流程运行使用的配置。

请求语法:

aws omics delete-configuration \ --name configuration-name \ --region region
注意

清理网络资源时,配置状态更改为 DELETING,然后在该过程完成后更改为 DELETED。

使用 VPC 网络运行工作流程

开始使用 VPC 网络进行跑步

要在工作流程运行中使用 VPC 联网,请指定networking-mode参数和configuration-name

aws omics start-run \ --workflow-id 1234567 \ --role-arn arn:aws:iam::123456789012:role/OmicsWorkflowRole \ --output-uri s3://my-bucket/outputs/ \ --networking-mode VPC \ --configuration-name my-vpc-config \ --region us-west-2

参数:

  • 网络模式-设置为VPC以启用 VPC 联网。默认值为 RESTRICTED

  • 配置名称(必填)-要使用的配置的名称。

查看运行网络配置

GetRun用于查看运行的网络配置:

aws omics get-run \ --id run-id \ --region region

响应包括联网模式、配置详细信息和 VPC 配置。以下示例显示了响应中与 VPC 相关的字段:

{ "arn": "arn:aws:omics:region:account-id:run/run-id", "id": "run-id", "status": "status", "workflowId": "workflow-id", "networkingMode": "VPC", "configuration": { "name": "configuration-name", "arn": "arn:aws:omics:region:account-id:configuration/configuration-name", "uuid": "configuration-uuid" }, "vpcConfig": { "subnets": ["subnet-id-1", "subnet-id-2"], "securityGroupIds": ["security-group-id"], "vpcId": "vpc-id" } }

配置不可变性

工作流使用运行开始时存在的配置快照。您可以在运行执行期间安全地修改或删除配置,而不会影响活动运行。

呼叫缓存注意事项

将 VPC 联网与呼叫缓存配合使用时,请确保正确配置您的工作流程引擎。有关每个引擎的呼叫缓存的详细指导,请参阅特定于引擎的缓存功能

重要

连接到非确定性资源或动态资源(例如,公共 Internet 上的第三方数据库)时,请考虑在工作流程中使用缓存任务选择退出功能,以避免缓存可能影响运行输出的动态数据集。

最佳实践

安全性

  1. 使用权限最低的安全组。仅允许所需的最低出站流量。如果可能,请使用特定的目标 CIDR 块代替 0.0.0.0/0。记录每条安全组规则的用途。

  2. 按环境分开配置。为开发、暂存和生产创建单独的配置。为每个环境使用不同的 VPCs 或子网。为组织配置应用适当的标签。

  3. 实施网络监控。启用 VPC 流日志进行安全分析。为异常交通模式设置 CloudWatch 警报。定期查看 CloudTrail 日志以了解配置更改。

  4. 使用 VPC 终端节点提供 AWS 服务。为 Amazon S3、亚马逊 ECR 和其他 AWS 服务配置 VPC 终端节点。这降低了 NAT 网关成本,提高了性能,并通过将流量保持在 AWS 网络内来提供额外的安全性。

性能

  1. 规划网络扩展。网络吞吐量起始于 10 Gbps,随着时间的推移可扩展到 100 Gbps。对于即时的高吞吐量需求,请提前计划并要求预热。监控网络指标以了解您的工作流程要求。

  2. 按可用区部署 NAT 网关。每个可用区使用一个 NAT 网关来处理生产工作负载。这提高了弹性和吞吐量,并降低了跨可用区的数据传输成本。

  3. 重复使用配置。创建可在多个工作流程之间共享的配置。这减少了配置管理开销并确保了网络设置的一致性。

  4. 在生产使用之前测试配置。使用测试工作流程验证网络连接。验证安全组规则是否允许所需的流量。使用多可用区配置测试故障转移方案。

成本优化

  1. 使用 VPC 终端节点代替 NAT 网关。要访问 AWS 服务,请使用 VPC 终端节点(不收取数据处理费用)。Amazon S3 网关终端节点不收取额外费用。接口终端节点按小时收费,但可能比 NAT 网关更具成本效益。

  2. 监控数据传输成本。数据传输不收费。将数据传输到互联网会产生标准 AWS 的数据传输速率。跨区域数据传输的速率更高。使用 Cost Explorer 跟踪与 VPC 相关 AWS 的成本。

  3. 大小合适的 NAT 网关部署。要进行开发,请为所有人使用一个 NAT 网关 AZs。对于生产,请为每个可用区使用一个 NAT 网关以实现弹性。监控 NAT 网关利用率以避免过度配置。

  4. 删除未使用的配置。定期检查并删除不再使用的配置。使用标签来标识配置的所有权和用途。

正常运行

  1. 使用描述性配置名称。在名称中包括环境、目的和团队(例如prod-genomics-vpcdev-clinical-trials-vpc)。

  2. 标记所有配置。对所有资源使用一致的标记策略。包括 “环境”、“所有者” 和 “用途” 的标签。 CostCenter

  3. 记录网络要求。记录每个配置访问哪些外部服务。维护安全组规则及其用途的地图。与您的团队共享网络架构图。

VPC 网络配额

下表列出了 VPC 网络配置的配额:

资源 默认限制 可调整
每个账户的最大配置数 10
每个配置的最大安全组数 5
每个配置的最大子网数 16
每个可用区的最大子网数 1
CreateConfiguration API TPS 1
每个区域的弹性网络接口(客户 VPC) 5000

要申请增加配额,请打开 S ervice Quotas 控制台 AWS HealthOmics,选择AWS 服务,搜索,选择要增加的配额,然后选择请求增加配额。配额增加请求通常在 1-2 个工作日内处理。