本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
VPC 連線工作流程的網際網路存取
當您將 AWS HealthOmics 執行連線到 VPC 時,執行只能存取該 VPC 中可用的資源。若要授予公有網際網路或 VPC 外部 AWS 服務的執行存取權,您必須使用適當的聯網資源來設定 VPC。
本主題說明如何設定 VPC,為 VPC 連線的執行提供網際網路存取和有效的 服務連線 AWS 。如需將執行連接到 VPC 的資訊,請參閱 將 HealthOmics 工作流程連線至 VPC。
重要
將執行連線到公有子網路並不會授予其網際網路存取或公有 IP 地址。對於需要網際網路連線的執行,一律使用具有 NAT Gateway 路由的私有子網路。
設定具有網際網路存取的 VPC
若要讓您的 VPC 連線執行存取網際網路,請建立具有私有子網路的 VPC,透過 NAT 閘道路由傳出流量。
此組態提供:
HealthOmics 工作流程任務的私有子網路
具有 NAT 閘道的公有子網路用於傳出網際網路存取
支援的區域和可用區域
HealthOmics Workflows 會在下列區域和可用區域中運作。建立 VPC 時,請確定子網路位於一或多個可用區域。
| 區域 | 可用區域名稱 | 可用區域 ID |
|---|---|---|
| us-west-2 | us-west-2a | usw2-az2 |
| us-west-2b | usw2-az1 | |
| us-west-2c | usw2-az3 | |
| us-east-1 | us-east-1a | use1-az4 |
| us-east-1b | use1-az6 | |
| us-east-1c | use1-az1 | |
| us-east-1d | use1-az2 | |
| eu-west-1 | eu-west-1a | euw1-az2 |
| eu-west-1b | euw1-az3 | |
| eu-west-1c | euw1-az1 | |
| eu-central-1 | eu-central-1a | euc1-az2 |
| eu-central-1b | euc1-az3 | |
| eu-central-1c | euc1-az1 | |
| eu-west-2 | eu-west-2a | euw2-az2 |
| eu-west-2b | euw2-az3 | |
| eu-west-2c | euw2-az1 | |
| ap-southeast-1 | ap-southeast-1a | apse1-az2 |
| ap-southeast-1b | apse1-az1 | |
| ap-southeast-1c | apse1-az3 | |
| il-central-1 | il-central-1a | ilc1-az1 |
| il-central-1b | ilc1-az2 | |
| il-central-1c | ilc1-az3 | |
| ap-northeast-2 | ap-northeast-2a | apne2-az1 |
| ap-northeast-2b | apne2-az2 | |
| ap-northeast-2c | apne2-az3 |
-
在 Amazon VPC 主控台中,選擇建立 VPC。
-
選取 VPC 等以自動建立具有公有和私有子網路的 VPC。
-
進行下列設定:
可用區域數量:2 個或更多
公有子網路數量:每個 AZ 一個。在此範例中,2
私有子網路數量:每個 AZ 一個。在此範例中,2
NAT 閘道:每個可用區域 1 個 (用於生產) 或 1 個 (用於開發/測試)
VPC 端點:S3 Gateway 端點 (選用 — 根據預設,區域 Amazon S3 流量會透過 HealthOmics 服務 VPC 路由)
當您建立 HealthOmics VPC 組態時,請指定私有子網路。執行會使用公有子網路中的 NAT 閘道來連接網際網路。
AWS 服務的 VPC 端點
您可以設定 VPC 端點以允許執行存取 AWS 服務,而無需周遊公有網際網路。這可提高安全性並降低資料傳輸成本。
注意
根據預設,區域 Amazon S3 流量會透過 HealthOmics 服務 VPC 路由。如果您設定 Amazon S3 介面端點,流量會改為透過 VPC 路由。建議使用 Amazon S3 閘道端點以獲得最佳效能和成本最佳化。如需詳細資訊,請參閱 AWS PrivateLink 指南中的 Amazon S3 閘道端點。
下表列出 HealthOmics 執行的常用 VPC 端點:
| 服務 | 端點類型 | Endpoint name (端點名稱) |
|---|---|---|
| Amazon S3 | 閘道 | com.amazonaws.region.s3 |
| Amazon ECR (API) | 介面 | com.amazonaws.region.ecr.api |
| Amazon ECR (Docker) | 介面 | com.amazonaws.region.ecr.dkr |
| SSM | 介面 | com.amazonaws.region.ssm |
| CloudWatch Logs | 介面 | com.amazonaws.region.logs |
NAT Gateway 需求
對於需要公有網際網路存取的執行:
NAT Gateway 必須部署在公有子網路中
公有子網路必須具有網際網路閘道的路由
私有子網路 (其中執行) 必須具有 NAT Gateway 的路由
注意
NAT Gateway 會產生每小時費用和資料處理費用。如需成本最佳化,請考慮使用 VPC 端點進行 AWS 服務存取,而不是透過 NAT Gateway 路由。
安全群組組態
設定您的安全群組,以允許傳出流量傳送到您的執行需要存取的目的地:
公有網際網路存取 — 允許傳出 HTTPS (連接埠 443) 流量。視需要新增其他通訊協定的規則,例如 HTTP (連接埠 80)。
特定服務 — 根據您的需求設定規則。
內部部署資源 — 允許流量流向 VPN 或 CIDR 範圍。
下列範例顯示公有網際網路存取的安全群組規則:
| Type | 通訊協定 | 連接埠範圍 | 目標 | Description |
|---|---|---|---|---|
| HTTPS | TCP | 443 | 0.0.0.0/0 | 允許 HTTPS 到網際網路 |
路由表組態
確保您的私有子網路具有路由表項目,可將網際網路流量導向 NAT 閘道:
| 目標 | 目標 |
|---|---|
| 10.0.0.0/16 | 區域 |
| 0.0.0.0/0 | nat-xxxxxxxxx |
若要存取內部部署資源,請設定虛擬私有閘道或閘道的路由。
測試 VPC 連線
在執行生產工作流程之前,請確認您的 VPC 組態允許連線至所需的外部服務。
建立測試工作流程
建立簡單的工作流程,以測試與外部服務的連線。例如,建立嘗試 TCP 連線至目標服務端點的工作流程。
執行測試
aws omics start-run \ --workflow-idtest-workflow-id\ --role-arnrole-arn\ --output-uri s3://bucket-name/test-outputs/ \ --networking-mode VPC \ --configuration-nameconfiguration-name\ --parameters file://test-parameters.json
驗證結果
檢查工作流程輸出以確認連線成功:
{ "connectivity_test.result": "Testing connection to external service...\nSUCCESS: Connection successful!\nTest completed" }
如果測試失敗,請確認下列事項:
安全群組規則允許傳出流量到所需的連接埠和目的地。
路由表會將流量導向至 NAT 閘道以進行網際網路存取。
外部服務可從您的網路存取。
您的帳戶提供足夠的 ENIs。
NAT 閘道位於具有網際網路閘道路由的公有子網路中。
注意
網路輸送量從每個 ENI 的 10 Gbps 開始,並在 60 分鐘的期間內擴展至高達 100 Gbps 的持續流量。如需具有立即高輸送量需求的工作流程,請聯絡 AWS Support。
範例
使用 API 身分驗證存取 NCBI 資料
此範例示範如何使用具有身分驗證的 NCBI 資料集 API 存取 NCBI 資料。
存取 NCBI 資源的最佳實務
客戶應盡可能使用 REST API,並使用 NCBI 提供的 API 金鑰。存取 NCBI 資源的請求,例如公有資料的 HTTP 和 FTP 請求,將來自 HealthOmics,並將按照 NCBI 設定的第三方費率進行調節。在尖峰用量期間,由於調節錯誤,您可能會遇到執行失敗。我們鼓勵使用者取得自己的 NCBI API 金鑰,並利用專用 APIs 來允許更高的並行和更好的開發體驗。
若要取得 NCBI API 金鑰,請造訪 NCBI API 金鑰文件
工作流程定義範例:
version 1.0 #WORKFLOW DEFINITION # Meant to be used as integration test for public internet access via VPC tunnel workflow TestFlow { input { String ncbi_api_url = "https://api.ncbi.nlm.nih.gov/datasets/v2/gene/accession/NM_021803.4?api_key=<YOUR_API_KEY>" } call DataProcessTask{ input: ncbi_api_url = ncbi_api_url, } output { File output_file = DataProcessTask.output_file } } #Task Definitions task DataProcessTask { input { String ncbi_api_url } command <<< set -eu # Download file from NCBI Datasets API with API key curl -fsSL "~{ncbi_api_url}" -o gene_data.json # Add data processing task here cat gene_data.json > processed_data.json # Echo the content to output file cat processed_data.json > outfile.txt >>> output { File output_file = "outfile.txt" } }
重點:
<YOUR_API_KEY>將 取代為您實際的 NCBI API 金鑰工作流程使用 HTTPS 存取 NCBI 資料集 API
API 金鑰會以 URL 參數傳遞
相較於未驗證的存取 (每秒 5 個請求),此方法提供更高的速率限制 (每秒 10 個請求)
如需 NCBI API 金鑰和速率限制的詳細資訊,請參閱 NCBI 資料集 API 文件
最佳實務
將 VPC 端點用於 AWS 服務。為 Amazon S3、Amazon ECR 和其他 AWS 服務設定 VPC 端點,以降低 NAT 閘道成本並改善效能。如需詳細資訊,請參閱AWS 服務的 VPC 端點。
監控網路成本。VPC 聯網會產生 NAT 閘道、資料傳輸和 ENIs的成本。使用 AWS Cost Explorer 監控您的用量。
規劃可用區域。確保您的子網路跨越 HealthOmics 操作以支援工作流程放置的可用區域。
在每個 AZ 中使用 NAT 閘道。對於生產工作負載,在每個可用區域中部署 NAT 閘道以提供備援。