翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
VPC 接続ワークフローのインターネットアクセス
AWS HealthOmics 実行を VPC に接続すると、実行はその VPC 内で利用可能なリソースにのみアクセスできます。実行に VPC 外のパブリックインターネットまたは AWS サービスへのアクセスを許可するには、適切なネットワークリソースを使用して VPC を設定する必要があります。
このトピックでは、VPC 接続実行の サービスへの AWS インターネットアクセスと効率的な接続を提供するように VPC を設定する方法について説明します。実行を VPC に接続する方法については、「」を参照してくださいHealthOmics ワークフローを VPC に接続する。
重要
実行をパブリックサブネットに接続しても、インターネットアクセスやパブリック IP アドレスは付与されません。インターネット接続を必要とする実行には、NAT Gateway ルートで常にプライベートサブネットを使用してください。
トピック
インターネットアクセスを使用した VPC のセットアップ
VPC に接続された実行にインターネットへのアクセスを許可するには、NAT ゲートウェイを介してアウトバウンドトラフィックをルーティングするプライベートサブネットを持つ VPC を作成します。
この設定では、以下が提供されます。
HealthOmics ワークフロータスクのプライベートサブネット
アウトバウンドインターネットアクセス用の NAT ゲートウェイを持つパブリックサブネット
サポートされるリージョンとアベイラビリティーゾーン
HealthOmics ワークフローは、次のリージョンとアベイラビリティーゾーンで動作します。VPC を作成するときは、サブネットがこれらのアベイラビリティーゾーンの 1 つ以上にあることを確認します。
| リージョン | アベイラビリティーゾーン名 | アベイラビリティーゾーン ID |
|---|---|---|
| us-west-2 | us-west-2a | usw2-az2 |
| us-west-2b | usw2-az1 | |
| us-west-2c | usw2-az3 | |
| us-west-2d | usw2-az4 | |
| us-east-1 | us-east-1a | use1-az4 |
| us-east-1b | use1-az6 | |
| us-east-1c | use1-az1 | |
| us-east-1d | use1-az2 | |
| us-east-1f | use1-az5 | |
| 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 ごとに 1 つ。この例では、2
プライベートサブネットの数: AZ ごとに 1 つ。この例では、2
NAT ゲートウェイ: AZ あたり 1 (本番稼働用) または 1 (開発/テスト用)
VPC エンドポイント: S3 Gateway エンドポイント (オプション — リージョン内の Amazon S3 トラフィックは、デフォルトで HealthOmics サービス VPC を介してルーティングされます)
HealthOmics VPC 設定を作成するときは、プライベートサブネットを指定します。実行では、パブリックサブネットの NAT ゲートウェイを使用してインターネットにアクセスします。
AWS サービスの VPC エンドポイント
VPC エンドポイントを設定して、パブリックインターネットを経由せずに が AWS サービスにアクセスできるようにします。これにより、セキュリティが向上し、データ転送コストを削減できます。
重要
ワークフロー定義が AWS サービス (Amazon Athena クエリ、Amazon DynamoDB オペレーション、またはその他の API コールなど) にアクセスする必要がある場合は、必要な VPC エンドポイントが VPC に設定されていることを確認する必要があります。適切なエンドポイントがないと、ワークフローが認証エラーまたは接続エラーで失敗する可能性があります。
注記
リージョン内 Amazon S3 トラフィックは、デフォルトで HealthOmics サービス VPC を介してルーティングされます。Amazon S3 インターフェイスエンドポイントを設定すると、トラフィックは代わりに VPC 経由でルーティングされます。パフォーマンスとコストを最適化するには、Amazon S3 ゲートウェイエンドポイントを使用することをお勧めします。詳細については、AWS 「 PrivateLink ガイド」のAmazon S3のゲートウェイエンドポイント」を参照してください。
次の表に、HealthOmics の実行によく使用される VPC エンドポイントを示します。
| サービス | エンドポイントタイプ | エンドポイント名 |
|---|---|---|
| Amazon S3 | ゲートウェイ | com.amazonaws.region.s3 |
| Amazon S3 Tables | インターフェイス | com.amazonaws.region.s3tables |
| 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 |
| Amazon Athena | インターフェイス | com.amazonaws.region.athena |
AWS PrivateLink エンドポイントを介してアクセスできるサービスの完全なリストは、AWSAWS PrivateLink と統合されているサービスにあります。エンドポイントのセットアップ手順の詳細については、「 AWS PrivateLink ガイド」の「PrivateLink を介して AWS サービスにアクセスする」を参照してください。 AWS PrivateLink
NAT ゲートウェイの要件
パブリックインターネットアクセスを必要とする実行の場合:
NAT ゲートウェイはパブリックサブネットにデプロイする必要があります
パブリックサブネットにはインターネットゲートウェイへのルートが必要です
プライベートサブネット ( が実行される場所) には NAT ゲートウェイへのルートが必要です
注記
NAT ゲートウェイには時間単位の料金とデータ処理料金が発生します。コストを最適化するには、NAT Gateway 経由でルーティングするのではなく、 AWS サービスアクセスに VPC エンドポイントを使用することを検討してください。
セキュリティグループの設定
実行がアクセスする必要がある送信先へのアウトバウンドトラフィックを許可するようにセキュリティグループを設定します。
パブリックインターネットアクセス — アウトバウンド HTTPS (ポート 443) トラフィックを許可します。必要に応じて、HTTP (ポート 80) など、他のプロトコルのルールを追加します。
特定のサービス — 要件に基づいてルールを設定します。
オンプレミスリソース — VPN または CIDR 範囲へのトラフィックを許可します。
次の例は、パブリックインターネットアクセスのセキュリティグループルールを示しています。
| タイプ | プロトコル | ポート範囲 | 宛先 | 説明 |
|---|---|---|---|---|
| HTTPS | TCP | 443 | 0.0.0.0/0 | インターネットに HTTPS を許可する |
ルートテーブルの設定
プライベートサブネットに、インターネットにバインドされたトラフィックを NAT ゲートウェイに送信するルートテーブルエントリがあることを確認します。
| ルーティング先 | ターゲット |
|---|---|
| 10.0.0.0/16 | ローカル |
| 0.0.0.0/0 | nat-xxxxxxxxx |
オンプレミスリソースにアクセスするには、仮想プライベートゲートウェイまたはゲートウェイへのルートを設定します。
AWS サービスの IAM アクセス許可
ワークフロータスクが VPC ネットワークモードで Amazon Athena、 AWS Glue、Amazon DynamoDB などの AWS サービスにアクセスする場合は、StartRunAPI に渡すサービスロールに必要なアクセス許可を追加する必要があります。これらのアクセス許可がないと、ワークフロータスクは AccessDeniedExceptionまたは UnauthorizedException エラーで失敗します。
重要
サービスロールのアクセス許可は、VPC ネットワーク設定とは別のものです。適切に設定された VPC エンドポイントとセキュリティグループであっても、サービスロールに必要な IAM アクセス許可がない場合、ワークフローは失敗します。
ワークフローがアクセス許可エラーで失敗した場合、ワークフロー実行の CloudWatch Logs ログを確認します。一般的なエラーメッセージには、 AccessDeniedException: You are not authorized to perform: action on the resource (サービスロールに必要な IAM アクセス許可がない) または UnrecognizedClientException: The security token included in the request is invalid (サービスロールの信頼ポリシーが正しく設定されていないか、渡されたロール ARN が正しくない可能性があります) StartRun が含まれます。
一般的なサービスアクセス許可
次の例は、VPC モードワークフローで一般的に使用される AWS サービスの IAM アクセス許可を示しています。ワークフローがアクセスするサービスに基づいて、これらのアクセス許可をサービスロールポリシーに追加します。
例アクセス許可
クエリを実行するワークフローの場合:
{ "Effect": "Allow", "Action": [ "athena:StartQueryExecution", "athena:GetQueryExecution", "athena:GetQueryResults", "athena:StopQueryExecution" ], "Resource": "arn:aws:athena:region:account-id:workgroup/workgroup-name" }
例 AWS Glue データカタログのアクセス許可
AWS Glue データベースとテーブルにアクセスするワークフロー (Amazon Athena で一般的に使用):
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetTable", "glue:GetPartitions", "glue:CreateTable", "glue:UpdateTable" ], "Resource": [ "arn:aws:glue:region:account-id:catalog", "arn:aws:glue:region:account-id:database/database-name", "arn:aws:glue:region:account-id:table/database-name/*" ] }
注記
AWS Lake Formation を使用して AWS Glue データカタログのアクセス許可を管理する場合は、適切な Lake Formation アクセス許可も付与する必要があります。詳細については、「 AWS Lake Formation デベロッパーガイド」の「Lake Formation のアクセス許可」を参照してください。
例 DynamoDB のアクセス許可
DynamoDB テーブルとの間で読み取りまたは書き込みを行うワークフローの場合:
{ "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:Query", "dynamodb:Scan" ], "Resource": "arn:aws:dynamodb:region:account-id:table/table-name" }
例 Amazon S3 Tables のアクセス許可
Amazon S3 Tables との間で読み取りまたは書き込みを行うワークフローの場合:
{ "Effect": "Allow", "Action": [ "s3tables:GetTableData", "s3tables:PutTableData" ], "Resource": "arn:aws:s3tables:region:account-id:bucket/bucket-name/table/table-id" }
注記
Amazon S3 Tables は、Amazon S3 とは異なるエンドポイントを使用します。Amazon S3 Tables の VPC エンドポイントを設定し、セキュリティグループが Amazon S3 Tables サービスへのアウトバウンド HTTPS トラフィック (ポート 443) を許可していることを確認する必要があります。
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 。
例
API 認証による NCBI データへのアクセス
この例では、認証で NCBI Datasets API を使用して NCBI データにアクセスする方法を示します。
NCBI リソースにアクセスするためのベストプラクティス
お客様は、可能な限り REST API を使用し、NCBI が提供する API キーを使用する必要があります。パブリックデータの HTTP リクエストや FTP リクエストなど、NCBI リソースへのアクセスリクエストは 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" } }
キーポイント:
を実際の NCBI API キー
<YOUR_API_KEY>に置き換えます。ワークフローは HTTPS を使用して NCBI Datasets API にアクセスします。
API キーは URL パラメータとして渡されます
このアプローチでは、認証されていないアクセス (1 秒あたり 5 リクエスト) と比較して、レート制限 (1 秒あたり 10 リクエスト) が高くなります。
NCBI API キーとレート制限の詳細については、NCBI データセット API ドキュメント
ベストプラクティス
AWS サービスに VPC エンドポイントを使用します。Amazon S3、Amazon ECR、およびその他の AWS サービスの VPC エンドポイントを設定して、NAT ゲートウェイのコストを削減し、パフォーマンスを向上させます。詳細については、「AWS サービスの VPC エンドポイント」を参照してください。
ネットワークコストをモニタリングします。VPC ネットワークでは、NAT ゲートウェイ、データ転送、ENIsのコストが発生します。 AWS Cost Explorerーで使用状況をモニタリングします。
アベイラビリティーゾーンを計画します。ワークフロー配置をサポートするために HealthOmics が動作するアベイラビリティーゾーンにサブネットがあることを確認します。
各 AZ で NAT ゲートウェイを使用します。本番ワークロードでは、冗長性を確保するために、各アベイラビリティーゾーンに NAT ゲートウェイをデプロイします。