

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# VPC 接続ワークフローのインターネットアクセス
<a name="workflows-vpc-internet"></a>

 AWS HealthOmics 実行を VPC に接続すると、実行はその VPC 内で利用可能なリソースにのみアクセスできます。実行に VPC 外のパブリックインターネットまたは AWS サービスへのアクセスを許可するには、適切なネットワークリソースを使用して VPC を設定する必要があります。

このトピックでは、VPC 接続実行の サービスへの AWS インターネットアクセスと効率的な接続を提供するように VPC を設定する方法について説明します。実行を VPC に接続する方法については、「」を参照してください[HealthOmics ワークフローを VPC に接続する](workflows-vpc-networking.md)。

**重要**  
実行をパブリックサブネットに接続しても、インターネットアクセスやパブリック IP アドレスは付与されません。インターネット接続を必要とする実行には、NAT Gateway ルートで常にプライベートサブネットを使用してください。

**Topics**
+ [インターネットアクセスを使用した VPC のセットアップ](#vpc-internet-setup)
+ [AWS サービスの VPC エンドポイント](#vpc-endpoints)
+ [セキュリティグループの構成](#vpc-internet-security-groups)
+ [ルートテーブルの設定](#vpc-internet-route-tables)
+ [VPC 接続のテスト](#vpc-testing-connectivity)
+ [例](#vpc-internet-examples)
+ [ベストプラクティス](#vpc-internet-best-practices)

## インターネットアクセスを使用した VPC のセットアップ
<a name="vpc-internet-setup"></a>

VPC に接続された実行にインターネットへのアクセスを許可するには、NAT ゲートウェイを介してアウトバウンドトラフィックをルーティングするプライベートサブネットを持つ VPC を作成します。

この設定では、以下が提供されます。
+ HealthOmics ワークフロータスクのプライベートサブネット
+ アウトバウンドインターネットアクセス用の NAT ゲートウェイを持つパブリックサブネット

### サポートされるリージョンとアベイラビリティーゾーン
<a name="vpc-internet-regions-azs"></a>

HealthOmics ワークフローは、次のリージョンとアベイラビリティーゾーンで動作します。VPC を作成するときは、サブネットがこれらのアベイラビリティーゾーンの 1 つ以上にあることを確認します。



- **us-west-2**
  - **アベイラビリティーゾーン名:** us-west-2a / **アベイラビリティーゾーン ID:** usw2-az2
  - **アベイラビリティーゾーン名:** us-west-2b / **アベイラビリティーゾーン ID:** usw2-az1
  - **アベイラビリティーゾーン名:** us-west-2c / **アベイラビリティーゾーン ID:** usw2-az3

- **us-east-1**
  - **アベイラビリティーゾーン名:** us-east-1a / **アベイラビリティーゾーン ID:** use1-az4
  - **アベイラビリティーゾーン名:** us-east-1b / **アベイラビリティーゾーン ID:** use1-az6
  - **アベイラビリティーゾーン名:** us-east-1c / **アベイラビリティーゾーン ID:** use1-az1
  - **アベイラビリティーゾーン名:** us-east-1d / **アベイラビリティーゾーン ID:** use1-az2

- **eu-west-1**
  - **アベイラビリティーゾーン名:** eu-west-1a / **アベイラビリティーゾーン ID:** euw1-az2
  - **アベイラビリティーゾーン名:** eu-west-1b / **アベイラビリティーゾーン ID:** euw1-az3
  - **アベイラビリティーゾーン名:** eu-west-1c / **アベイラビリティーゾーン ID:** euw1-az1

- **eu-central-1**
  - **アベイラビリティーゾーン名:** eu-central-1a / **アベイラビリティーゾーン ID:** euc1-az2
  - **アベイラビリティーゾーン名:** eu-central-1b / **アベイラビリティーゾーン ID:** euc1-az3
  - **アベイラビリティーゾーン名:** eu-central-1c / **アベイラビリティーゾーン ID:** euc1-az1

- **eu-west-2**
  - **アベイラビリティーゾーン名:** eu-west-2a / **アベイラビリティーゾーン ID:** euw2-az2
  - **アベイラビリティーゾーン名:** eu-west-2b / **アベイラビリティーゾーン ID:** euw2-az3
  - **アベイラビリティーゾーン名:** eu-west-2c / **アベイラビリティーゾーン ID:** euw2-az1

- **ap-southeast-1**
  - **アベイラビリティーゾーン名:** ap-southeast-1a / **アベイラビリティーゾーン ID:** apse1-az2
  - **アベイラビリティーゾーン名:** ap-southeast-1b / **アベイラビリティーゾーン ID:** apse1-az1
  - **アベイラビリティーゾーン名:** ap-southeast-1c / **アベイラビリティーゾーン ID:** apse1-az3

- **il-central-1**
  - **アベイラビリティーゾーン名:** il-central-1a / **アベイラビリティーゾーン ID:** ilc1-az1
  - **アベイラビリティーゾーン名:** il-central-1b / **アベイラビリティーゾーン ID:** ilc1-az2
  - **アベイラビリティーゾーン名:** il-central-1c / **アベイラビリティーゾーン ID:** ilc1-az3

- **ap-northeast-2**
  - **アベイラビリティーゾーン名:** ap-northeast-2a / **アベイラビリティーゾーン ID:** apne2-az1
  - **アベイラビリティーゾーン名:** ap-northeast-2b / **アベイラビリティーゾーン ID:** apne2-az2
  - **アベイラビリティーゾーン名:** ap-northeast-2c / **アベイラビリティーゾーン ID:** apne2-az3



1. Amazon VPC コンソールで、**VPC の作成**を選択します。

1. **VPC など**を選択すると、パブリックサブネットとプライベートサブネットを持つ VPC が自動的に作成されます。

1. 次の設定を行います。
   + **アベイラビリティーゾーンの数**: 2 つ以上
   + **パブリックサブネットの数**: AZ ごとに 1 つ。この例では、2
   + **プライベートサブネットの数**: AZ ごとに 1 つ。この例では、2
   + **NAT ゲートウェイ**: AZ あたり 1 (本番稼働用) または 1 (開発/テスト用)
   + **VPC エンドポイント**: S3 Gateway エンドポイント (オプション — リージョン内の Amazon S3 トラフィックは、デフォルトで HealthOmics サービス VPC を介してルーティングされます)

HealthOmics VPC 設定を作成するときは、プライベートサブネットを指定します。実行では、パブリックサブネットの NAT ゲートウェイを使用してインターネットにアクセスします。

## AWS サービスの VPC エンドポイント
<a name="vpc-endpoints"></a>

VPC エンドポイントを設定して、パブリックインターネットを経由せずに が AWS サービスにアクセスできるようにします。これにより、セキュリティが向上し、データ転送コストを削減できます。

**注記**  
リージョン内 Amazon S3 トラフィックは、デフォルトで HealthOmics サービス VPC を介してルーティングされます。Amazon S3 インターフェイスエンドポイントを設定すると、トラフィックは代わりに VPC 経由でルーティングされます。パフォーマンスとコストを最適化するには、Amazon S3 ゲートウェイエンドポイントを使用することをお勧めします。詳細については、*AWS 「 PrivateLink ガイド*」の[Amazon S3のゲートウェイエンドポイント](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html)」を参照してください。

次の表に、HealthOmics の実行によく使用される VPC エンドポイントを示します。


| サービス | エンドポイントタイプ | エンドポイント名 | 
| --- | --- | --- | 
| 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 ゲートウェイの要件
<a name="vpc-nat-gateway-requirements"></a>

パブリックインターネットアクセスを必要とする実行の場合:
+ NAT ゲートウェイはパブリックサブネットにデプロイする必要があります
+ パブリックサブネットにはインターネットゲートウェイへのルートが必要です
+ プライベートサブネット ( が実行される場所) には NAT ゲートウェイへのルートが必要です

**注記**  
NAT ゲートウェイには時間単位の料金とデータ処理料金が発生します。コストを最適化するには、NAT Gateway 経由でルーティングするのではなく、 AWS サービスアクセスに VPC エンドポイントを使用することを検討してください。

## セキュリティグループの構成
<a name="vpc-internet-security-groups"></a>

実行がアクセスする必要がある送信先へのアウトバウンドトラフィックを許可するようにセキュリティグループを設定します。
+ **パブリックインターネットアクセス** — アウトバウンド HTTPS (ポート 443) トラフィックを許可します。必要に応じて、HTTP (ポート 80) など、他のプロトコルのルールを追加します。
+ **特定のサービス** — 要件に基づいてルールを設定します。
+ **オンプレミスリソース** — VPN または CIDR 範囲へのトラフィックを許可します。

次の例は、パブリックインターネットアクセスのセキュリティグループルールを示しています。


| タイプ | プロトコル | ポート範囲 | 宛先 | 説明 | 
| --- | --- | --- | --- | --- | 
| HTTPS | TCP | 443 | 0.0.0.0/0 | インターネットに HTTPS を許可する | 

## ルートテーブルの設定
<a name="vpc-internet-route-tables"></a>

プライベートサブネットに、インターネットにバインドされたトラフィックを NAT ゲートウェイに送信するルートテーブルエントリがあることを確認します。


| ルーティング先 | ターゲット | 
| --- | --- | 
| 10.0.0.0/16 | ローカル | 
| 0.0.0.0/0 | nat-xxxxxxxxx | 

オンプレミスリソースにアクセスするには、仮想プライベートゲートウェイまたはゲートウェイへのルートを設定します。

## VPC 接続のテスト
<a name="vpc-testing-connectivity"></a>

本番稼働用ワークフローを実行する前に、VPC 設定で必要な外部サービスへの接続が許可されていることを確認します。

### テストワークフローを作成する
<a name="vpc-test-workflow"></a>

外部サービスへの接続をテストするシンプルなワークフローを作成します。たとえば、ターゲットサービスエンドポイントへの TCP 接続を試みるワークフローを作成します。

### テストを実行する
<a name="vpc-run-test"></a>

```
aws omics start-run \
  --workflow-id {{test-workflow-id}} \
  --role-arn {{role-arn}} \
  --output-uri s3://{{bucket-name}}/test-outputs/ \
  --networking-mode VPC \
  --configuration-name {{configuration-name}} \
  --parameters file://test-parameters.json
```

### 結果の確認
<a name="vpc-verify-results"></a>

ワークフロー出力をチェックして、正常な接続を確認します。

```
{
  "connectivity_test.result": "Testing connection to external service...\nSUCCESS: Connection successful!\nTest completed"
}
```

テストが失敗した場合は、以下を確認します。
+ セキュリティグループルールは、必要なポートと送信先へのアウトバウンドトラフィックを許可します。
+ ルートテーブルは、インターネットアクセスのためにトラフィックを NAT ゲートウェイに転送します。
+ 外部サービスはネットワークからアクセスできます。
+ 十分な ENIs がアカウントで利用できます。
+ NAT ゲートウェイは、インターネットゲートウェイへのルートを持つパブリックサブネットにあります。

**注記**  
ネットワークスループットは ENI あたり 10 Gbps から始まり、持続的なトラフィックで 60 分間で最大 100 Gbps までスケールします。即時の高スループット要件があるワークフローについては、 サポートにお問い合わせください AWS 。

## 例
<a name="vpc-internet-examples"></a>

### API 認証による NCBI データへのアクセス
<a name="vpc-example-ncbi"></a>

この例では、認証を使用して NCBI Datasets API を使用して NCBI データにアクセスする方法を示します。

**NCBI リソースにアクセスするためのベストプラクティス**  
お客様は、可能な限り REST API を使用し、NCBI が提供する API キーを使用する必要があります。パブリックデータの HTTP リクエストや FTP リクエストなど、NCBI リソースへのアクセスリクエストは HealthOmics から送信され、NCBI によって設定されたサードパーティーのレートでスロットリングされます。ピーク時の使用時にスロットリングエラーにより、実行が失敗することがあります。ユーザーは独自の NCBI API キーを取得し、特殊な APIs を使用して、より高い同時実行性と開発エクスペリエンスを実現することをお勧めします。

NCBI API キーを取得するには、[NCBI API キーのドキュメント](https://www.ncbi.nlm.nih.gov/datasets/docs/v2/api/api-keys/)を参照してください。

**ワークフロー定義の例:**

```
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 ドキュメント](https://www.ncbi.nlm.nih.gov/datasets/docs/v2/api/api-keys/)を参照してください。

## ベストプラクティス
<a name="vpc-internet-best-practices"></a>

1. ** AWS サービスに VPC エンドポイントを使用します。**Amazon S3、Amazon ECR、およびその他の AWS サービスの VPC エンドポイントを設定して、NAT ゲートウェイのコストを削減し、パフォーマンスを向上させます。詳細については、「[AWS サービスの VPC エンドポイント](#vpc-endpoints)」を参照してください。

1. **ネットワークコストをモニタリングします。**VPC ネットワークでは、NAT ゲートウェイ、データ転送、ENIs のコストが発生します。 AWS Cost Explorerーで使用状況をモニタリングします。

1. **アベイラビリティーゾーンを計画します。**ワークフロー配置をサポートするために HealthOmics が動作するアベイラビリティーゾーンにサブネットがあることを確認します。

1. **各 AZ で NAT ゲートウェイを使用します。**本番ワークロードでは、冗長性を確保するために、各アベイラビリティーゾーンに NAT ゲートウェイをデプロイします。