

# API Gateway での REST API のプライベート統合
<a name="private-integration"></a>

プライベートな統合を使用して、VPC 内にある HTTP/HTTPS リソースを公開し、VPC 外のクライアントがアクセスできるようにします。これにより、プライベート VPC リソースへのアクセスが VPC の境界を超えて拡張されます。API Gateway がサポートするいずれかの[認可方法](apigateway-control-access-to-api.md)を使用して、API へのアクセスを制御できます。

プライベート統合を作成するには、まず VPC リンクを作成する必要があります。API Gateway は、REST API 用の VPC リンク V2 をサポートしています。VPC リンク V2 を使用すると、Network Load Balancer を使用せずに REST API を Application Load Balancer に接続するプライベート統合を作成できます。Application Load Balancer を使用すると、Amazon ECS コンテナベースのアプリケーションやその他の多くのバックエンドに接続できます。VPC リンク V1 はレガシー統合タイプと見なされます。API Gateway でサポートされていますが、新しい VPC リンク V1 を作成しないことをお勧めします。

## 考慮事項
<a name="private-integrations-considerations"></a>

以下の考慮事項は、プライベート統合の使用に影響する可能性があります。
+ すべてのリソースは、同じ AWS アカウントによって所有されている必要があります。これには、ロードバランサー、VPC リンク、REST API が含まれます。
+ デフォルトでは、プライベート統合トラフィックは HTTP プロトコルを使用します。HTTPS を使用するには、`https://example.com:443/test` などの安全なサーバー名を含む [https://docs.aws.amazon.com/apigateway/latest/api/API_PutIntegration.html#apigw-PutIntegration-request-uri](https://docs.aws.amazon.com/apigateway/latest/api/API_PutIntegration.html#apigw-PutIntegration-request-uri) を指定します。
+ プライベート統合では、API Gateway はバックエンドリソースへのリクエストに API エンドポイントの[ステージ](set-up-stages.md)部分を含めます。例えば、API の `test` ステージをリクエストすると、API Gateway はプライベート統合へのリクエストに `test/path` を含めます。バックエンドリソースへのリクエストからステージ名を削除するには、[パラメータのマッピング](rest-api-parameter-mapping.md)を使用して、`$context.requestOverride.path` 変数の上書きを作成します。
+ AWS Cloud Map とのプライベート統合はサポートされていません。

**Topics**
+ [考慮事項](#private-integrations-considerations)
+ [API Gateway で VPC リンク V2 を設定する](apigateway-vpc-links-v2.md)
+ [プライベート統合の設定](set-up-private-integration.md)
+ [VPC リンク V1 を使用したプライベート統合 (レガシー)](vpc-links-v1.md)

# API Gateway で VPC リンク V2 を設定する
<a name="apigateway-vpc-links-v2"></a>

VPC リンクを使用すると、Application Load Balancer または Amazon ECS コンテナベースのアプリケーションなどの、API ルートを VPC 内のプライベートリソースに接続するプライベート統合を作成できます。プライベート統合は、VPC リンク V2 を使用して、API Gateway と、対象となる VPC リソース間の接続をカプセル化します。異なるリソースと API 間で VPC リンクを再利用できます。

VPC リンクを作成すると、API Gateway はアカウントの VPC リンク V2 用の [Elastic Network Interface](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html) を作成および管理します。このプロセスには数分かかることがあります。VPC リンク V2 を使用する準備ができたら、状態は `PENDING` から `AVAILABLE` に移行します。

**注記**  
VPC リンク経由で 60 日間トラフィックが送信されない場合は、`INACTIVE` になります。VPC リンクが `INACTIVE` 状態の場合、API Gateway は VPC リンクのネットワークインターフェイスをすべて削除します。これにより、VPC リンクに依存する API リクエストが失敗します。API リクエストが再開すると、API Gateway はネットワークインターフェイスを再プロビジョニングします。ネットワークインターフェイスを作成し、VPC リンクを再度アクティブ化するには、数分かかることがあります。VPC リンクステータスを使用して、VPC リンクの状態を監視できます。

## AWS CLI を使用して VPC リンク V2 を作成する
<a name="apigateway-vpc-links-v2-create"></a>

VPC リンク V2 を作成するには、関連するすべてのリソースが同じ AWS アカウントによって所有されている必要があります。次の [create-vpc-link](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-vpc-link.html) コマンドは、VPC リンクを作成します。

```
aws apigatewayv2 create-vpc-link --name MyVpcLink \
    --subnet-ids subnet-aaaa subnet-bbbb \
    --security-group-ids sg1234 sg5678
```

**注記**  
VPC リンク V2 は変更できません。VPC リンク V2 を作成した後は、そのサブネットやセキュリティグループを変更することはできません。

## AWS CLI を使用して VPC リンク V2 を削除する
<a name="apigateway-vpc-links-v2-delete"></a>

次の [delete-vpc-link](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/delete-vpc-link.html) コマンドは、VPC リンクを削除します。

```
aws apigatewayv2 delete-vpc-link --vpc-link-id abcd123
```

## リージョン別の利用可能性
<a name="apigateway-vpc-links-v2-availability"></a>

VPC リンク V2 は、次のリージョンとアベイラビリティーゾーンでサポートされています。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/apigateway-vpc-links-v2.html)

# プライベート統合の設定
<a name="set-up-private-integration"></a>

Application Load Balancer または Network Load Balancer とのプライベート統合を作成するには、HTTP プロキシ統合を作成し、使用する [VPC リンク V2](apigateway-vpc-links-v2.md) を指定して、Network Load Balancer または Application Load Balancer の ARN を指定します。デフォルトでは、プライベート統合トラフィックは HTTP プロトコルを使用します。HTTPS を使用するには、`https://example.com:443/test` などの安全なサーバー名を含む [https://docs.aws.amazon.com/apigateway/latest/api/API_PutIntegration.html#apigw-PutIntegration-request-uri](https://docs.aws.amazon.com/apigateway/latest/api/API_PutIntegration.html#apigw-PutIntegration-request-uri) を指定します。プライベート統合で REST API を作成する方法の完全なチュートリアルについては、「[チュートリアル: プライベート統合を使用して REST API を作成する](getting-started-with-private-integration.md)」を参照してください。

## プライベート統合の作成
<a name="set-up-private-integration-create"></a>

以下の手順は、VPC リンク V2 を使用してロードバランサーに接続するプライベート統合を作成する方法を示しています。

------
#### [ AWS マネジメントコンソール ]

プライベート統合を作成する方法のチュートリアルについては、「[チュートリアル: プライベート統合を使用して REST API を作成する](getting-started-with-private-integration.md)」を参照してください。

------
#### [ AWS CLI ]

次の [put-integration](https://docs.aws.amazon.com/cli/latest/reference/latest/api/API_PutIntegration.html) コマンドは、VPC リンク V2 を使用してロードバランサーに接続するプライベート統合を作成します。

```
aws apigateway put-integration \
    --rest-api-id abcdef123 \
    --resource-id aaa000 \
    --integration-target 'arn:aws:elasticloadbalancing:us-east-2:111122223333:loadbalancer/app/myLoadBalancerName/1234567891011' \
    --uri 'https://example.com:443/path' \
    --http-method GET \
    --type HTTP_PROXY \
    --integration-http-method GET \
    --connection-type VPC_LINK \
    --connection-id bbb111
```

接続 ID を直接指定する代わりに、ステージ変数を使用できます。API をステージにデプロイするときは、VPC リンク V2 ID を設定します。次の [put-integration](https://docs.aws.amazon.com/cli/latest/reference/latest/api/API_PutIntegration.html) コマンドは、VPC リンク V2 ID のステージ変数を使用してプライベート統合を作成します。

```
aws apigateway put-integration \
    --rest-api-id abcdef123 \
    --resource-id aaa000 \
    --integration-target 'arn:aws:elasticloadbalancing:us-east-2:111122223333:loadbalancer/app/myLoadBalancerName/1234567891011' \
    --uri 'https://example.com:443/path' \
    --http-method GET \
    --type HTTP_PROXY \
    --integration-http-method GET \
    --connection-type VPC_LINK \
    --connection-id "\${stageVariables.vpcLinkV2Id}"
```

ステージ変数表現 (\$1\$1stageVariables.vpcLinkV2Id\$1) を二重引用符で囲み、\$1 文字をエスケープします。

------
#### [ OpenAPI ]

API の OpenAPI ファイルをインポートすることで、プライベート統合を使用して API を設定することができます。これらの設定は、HTTP 統合を使用する API の OpenAPI 定義と似ていますが、次のような例外があります。
+ `connectionType` を明示的に `VPC_LINK` に設定する必要があります。
+ `connectionId` を `VpcLinkV2` の ID または `VpcLinkV2` の ID を参照するステージ変数に明示的に設定する必要があります。
+ プライベート統合の `uri` パラメータは、VPC 内の HTTP/HTTPS エンドポイントを指しますが、代わりに統合リクエストの `Host` ヘッダーを設定するために使用されます。
+ VPC 内の HTTPS エンドポイントとのプライベート統合における `uri` パラメータは、記載されているドメイン名を VPC エンドポイントにインストールされている証明書内のドメイン名と照合するために使用されます。

 ステージ変数を使用して `VpcLinkV2` ID を参照することができます。または、ID 値を `connectionId` に直接割り当てることもできます。

次の JSON 形式の OpenAPI ファイルは、ステージ変数 (`${stageVariables.vpcLinkIdV2}`) によって参照された VPC リンクが設定された API の例を示しています。

```
{
  "swagger": "2.0",
  "info": {
    "version": "2017-11-17T04:40:23Z",
    "title": "MyApiWithVpcLinkV2"
  },
  "host": "abcdef123.execute-api.us-west-2.amazonaws.com",
  "basePath": "/test",
  "schemes": [
    "https"
  ],
  "paths": {
    "/": {
      "get": {
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/Empty"
            }
          }
        },
        "x-amazon-apigateway-integration": {
          "responses": {
            "default": {
              "statusCode": "200"
            }
          },
          "uri": "https://example.com:443/path",
          "passthroughBehavior": "when_no_match",
          "connectionType": "VPC_LINK",
          "connectionId": "${stageVariables.vpcLinkV2Id}",
          "integration-target": "arn:aws:elasticloadbalancing:us-east-2:111122223333:loadbalancer/app/myLoadBalancerName/1234567891011",
          "httpMethod": "GET",
          "type": "http_proxy"
        }
      }
    }
  },
  "definitions": {
    "Empty": {
      "type": "object",
      "title": "Empty Schema"
    }
  }
}
```

------

## プライベート統合の更新
<a name="set-up-private-integration-update"></a>

次の例では、プライベート統合の VPC リンク V2 を更新します。

------
#### [ AWS マネジメントコンソール ]

**プライベート統合を更新するには**

1. [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway) で API Gateway コンソールにサインインします。

1. プライベート統合で REST API を選択します。

1. プライベート統合を使用するリソースとメソッドを選択します。

1. **[統合リクエスト]** タブの **[統合リクエストの設定]** で、**[編集]** を選択します。

1. プライベート統合の設定を編集できます。現在 VPC リンク V1 を使用している場合は、VPC リンクを VPC リンク V2 に変更できます。

1. **[保存]** を選択します。

1. 変更を有効にするには、API を再デプロイします。

------
#### [ AWS CLI ]

次の [update-integration](https://docs.aws.amazon.com/cli/latest/reference/latest/api/API_PutIntegration.html) コマンドは、VPC リンク V2 を使用するようにプライベート統合を更新します。

```
aws apigateway update-integration \
    --rest-api-id a1b2c3d4e5 \
    --resource-id a1b2c3 \
    --http-method GET \
    --patch-operations "[{\"op\":\"replace\",\"path\":\"/connectionId\",\"value\":\"pk0000\"}, {\"op\":\"replace\",\"path\":\"/uri\",\"value\":\"http://example.com\"}, {\"op\":\"replace\",\"path\":\"/integrationTarget\",\"value\":\"arn:aws:elasticloadbalancing:us-east-2:111122223333:loadbalancer/app/myLoadBalancerName/1234567891011\"}]"
```

------

# VPC リンク V1 を使用したプライベート統合 (レガシー)
<a name="vpc-links-v1"></a>

**注記**  
プライベート統合の次の実装では、VPC リンク V1 を使用します。VPC リンク V1 はレガシーリソースです。[REST API には VPC リンク V2](apigateway-vpc-links-v2.md) を使用することをお勧めします。

プライベート統合を作成するには、まず Network Load Balancer を作成する必要があります。Network Load Balancer には、VPC 内のリソースにリクエストをルーティングする[リスナー](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-listeners.html)が必要です。API の可用性を高めるには、Network Load Balancer が、AWS リージョン内の複数のアベイラビリティーゾーンにあるリソースにトラフィックをルーティングするようにします。その後、API と Network Load Balancer を接続するために使用する VPC リンクを作成します。VPC リンクを作成したら、プライベート統合を作成して、VPC リンクと Network Load Balancer を介して API から VPC 内のリソースにトラフィックをルーティングします。Network Load Balancer と API は、同じ AWS アカウントによって所有されている必要があります。

**Topics**
+ [API Gateway のプライベート統合の Network Load Balancer を設定する (レガシー)](set-up-nlb-for-vpclink-using-console.md)
+ [VPC リンクを作成するためのアクセス許可を API Gateway に付与する (レガシー)](grant-permissions-to-create-vpclink.md)
+ [AWS CLI を使用してプライベート統合で API Gateway API をセットアップする (レガシー)](set-up-api-with-vpclink-cli.md)
+ [プライベート統合用の API Gateway アカウント (レガシー)](set-up-api-with-vpclink-accounts.md)

# API Gateway のプライベート統合の Network Load Balancer を設定する (レガシー)
<a name="set-up-nlb-for-vpclink-using-console"></a>

**注記**  
プライベート統合の次の実装では、VPC リンク V1 を使用します。VPC リンク V1 はレガシーリソースです。[REST API には VPC リンク V2](apigateway-vpc-links-v2.md) を使用することをお勧めします。

 次の手順では、Amazon EC2 コンソールを使用して API Gateway のプライベート統合用に Network Load Balancer (NLB) を設定するステップを説明し、各ステップの詳細な手順の参照を提供します。

各 VPC にリソースがあり、1 つの NLB と 1 つ VPCLink 設定するだけで済みます。NLB は、NLB あたり複数の[リスナー](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-listeners.html)と[ターゲットグループ](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html)をサポートしています。各サービスを NLB の特定のリスナーとして設定でき、単一の VPCLink を使用して NLB に接続できます。API Gateway でプライベート統合を作成するときに、各サービスに割り当てられた特定のポートを使用して、各サービスを定義します。詳細については、「[チュートリアル: プライベート統合を使用して REST API を作成する](getting-started-with-private-integration.md)」を参照してください。Network Load Balancer と API は、同じ AWS アカウントによって所有されている必要があります。

**API Gateway コンソールを使用してプライベート統合用の Network Load Balancer を作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. Amazon EC2 インスタンスでウェブサーバーを設定します。設定例については、「[Amazon Linux 2 への LAMP ウェブサーバーのインストール](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-lamp-amazon-linux-2.html)」を参照してください。

1. Network Load Balancer を作成し、ターゲットグループに EC2 インスタンスを登録し、ターゲットグループを Network Load Balancer のリスナーに追加します。詳細については、「[Network Load Balancer の使用開始](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancer-getting-started.html)」の手順に従います。

1. Network Load Balancer を作成したら、次の操作を行います。

   1.  Network Load Balancer の ARN をメモします。API を Network Load Balancer の背後にある VPC リソースと統合するために、API Gateway に VPC リンクを作成する際にそれが必要になります。

   1.  PrivateLink のセキュリティグループ評価をオフにします。
      + コンソールを使用して PrivateLink トラフィックのセキュリティグループ評価をオフにするには、**[セキュリティ]** タブ、**[編集]** の順に選択します。**[セキュリティ設定]** で、**[PrivateLink トラフィックにインバウンドルールを適用する]** をオフにします。
      + 次の [set-security-groups](https://docs.aws.amazon.com/cli/latest/reference/elbv2/set-security-groups.html) コマンドを使用して、PrivateLink トラフィックのセキュリティグループの評価をオフにします。

        ```
        aws elbv2 set-security-groups --load-balancer-arn arn:aws:elasticloadbalancing:us-east-2:111122223333:loadbalancer/net/my-loadbalancer/abc12345 \
          --security-groups sg-123345a --enforce-security-group-inbound-rules-on-private-link-traffic off
        ```

**注記**  
API Gateway CIDR は予告なしに変更されることがありますので、依存関係を追加しないでください。

# VPC リンクを作成するためのアクセス許可を API Gateway に付与する (レガシー)
<a name="grant-permissions-to-create-vpclink"></a>

**注記**  
プライベート統合の次の実装では、VPC リンク V1 を使用します。VPC リンク V1 はレガシーリソースです。[REST API には VPC リンク V2](apigateway-vpc-links-v2.md) を使用することをお勧めします。

VPC リンクを作成および維持するためのアカウント内のユーザーは、VPC エンドポイントサービス設定の作成、削除、および表示、VPC エンドポイントサービスのアクセス許可の変更、およびロードバランサーの検証の権限を持っている必要があります。このような権限を付与するには、次のステップを使用します。

**VPC リンクを作成、更新、削除するためのアクセス許可を付与するには**

1. 次のような IAM ポリシーを作成します。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "apigateway:POST",
                   "apigateway:GET",
                   "apigateway:PATCH",
                   "apigateway:DELETE"
               ],
               "Resource": [
                   "arn:aws:apigateway:us-east-1::/vpclinks",
                   "arn:aws:apigateway:us-east-1::/vpclinks/*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "elasticloadbalancing:DescribeLoadBalancers"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:CreateVpcEndpointServiceConfiguration",
                   "ec2:DeleteVpcEndpointServiceConfigurations",
                   "ec2:DescribeVpcEndpointServiceConfigurations",
                   "ec2:ModifyVpcEndpointServicePermissions"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

   VPC リンクのタグ付けを有効にする場合は、タグ付けオペレーションを許可してください。詳細については、「[タグ付けオペレーションを許可する](apigateway-tagging-iam-policy.md#allow-tagging)」を参照してください。

1. IAM ロールを作成または選択し、前述のポリシーをロールにアタッチします。

1. 自分または VPC リンクを作成しているアカウントのユーザーに IAM ロールを割り当てます。

# AWS CLI を使用してプライベート統合で API Gateway API をセットアップする (レガシー)
<a name="set-up-api-with-vpclink-cli"></a>

**注記**  
プライベート統合の次の実装では、VPC リンク V1 を使用します。VPC リンク V1 はレガシーリソースです。[REST API には VPC リンク V2](apigateway-vpc-links-v2.md) を使用することをお勧めします。

次のチュートリアルでは、AWS CLI を使用して VPC リンクとプライベート統合を作成する方法を示します。以下の前提条件を満たす必要があります。
+ ターゲットとして VPC ソースを使用して Network Load Balancer を作成し、設定する必要があります。詳細については、「[API Gateway のプライベート統合の Network Load Balancer を設定する (レガシー)](set-up-nlb-for-vpclink-using-console.md)」を参照してください。これは API と同じ AWS アカウントに存在する必要があります。VPC リンクを作成するには、Network Load Balancer ARN が必要です。
+ `VpcLink` を作成および管理するには、API で `VpcLink` を作成するためのアクセス許可が必要です。`VpcLink` を使用するアクセス許可は必要ありません。詳細については、「[VPC リンクを作成するためのアクセス許可を API Gateway に付与する (レガシー)](grant-permissions-to-create-vpclink.md)」を参照してください。

**AWS CLI を使用して、プライベート統合で API を設定するには**

1. 次の [create-vpc-link](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-vpc-link.html) コマンドを使用して、指定した Network Load Balancer をターゲットとする `VpcLink` を作成します。

   ```
   aws apigateway create-vpc-link \
       --name my-test-vpc-link \
       --target-arns arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/net/my-vpclink-test-nlb/1234567890abcdef
   ```

   このコマンドの出力は、リクエストの受信を確認し、作成中の `VpcLink` のステータス `PENDING` を示します。

   ```
   {
       "status": "PENDING", 
       "targetArns": [
           "arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/net/my-vpclink-test-nlb/1234567890abcdef"
       ], 
       "id": "gim7c3", 
       "name": "my-test-vpc-link"
   }
   ```

   API Gateway が `VpcLink` の作成を完了するまでに 2〜4 分かかります。操作が正常に終了すると、`status` は `AVAILABLE` になります。作成した VPC リンクを確認するには、次の [get-vpc-link](https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-vpc-link.html) コマンドを使用できます。

   ```
   aws apigateway get-vpc-link --vpc-link-id gim7c3
   ```

   操作が失敗した場合、エラーメッセージを含む `FAILED` と共に `statusMessage` ステータスが表示されます。たとえば、すでに VPC エンドポイントに関連付けられている Network Load Balancer を使用して `VpcLink` を作成しようとすると、`statusMessage` プロパティで次のように表示されます。

   ```
   "NLB is already associated with another VPC Endpoint Service"
   ```

   `VpcLink` が正常に作成された後は、API を作成し、`VpcLink` を通じて VPC リソースと統合することができます。

   新しく作成した `VpcLink` の `id` 値をメモしておきます。この出力例では、`gim7c3` です。プライベート統合を設定する際にそれが必要になります。

1. 次の [create-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-rest-api.html) コマンドを使用して、API Gateway [https://docs.aws.amazon.com/apigateway/latest/api/API_RestApi.html](https://docs.aws.amazon.com/apigateway/latest/api/API_RestApi.html) リソースを作成します。

   ```
   aws apigateway create-rest-api --name 'My VPC Link Test'
   ```

   返された結果の `RestApi` の `id` 値と `RestApi` の `rootResourceId` 値をメモしておきます。API でさらにオペレーションを実行するには、この値が必要です。

   次に、ルートリソース (`/`) に `GET` メソッドのみを持つ API を作成し、そのメソッドを `VpcLink` と統合します。

1. 次の [put-method](https://docs.aws.amazon.com/cli/latest/reference/apigateway/put-method.html) コマンドを使用して、`GET /` メソッドを作成します。

   ```
   aws apigateway put-method \
          --rest-api-id  abcdef123 \
          --resource-id skpp60rab7 \
          --http-method GET \
          --authorization-type "NONE"
   ```

   `VpcLink` とのプロキシ統合を使用しない場合は、少なくとも `200` ステータスコードのメソッドレスポンスも設定する必要があります。ここでは、プロキシ統合を使用します。

1. `GET /` メソッドを作成したら、統合を設定します。プライベート統合の場合は、`connection-id` パラメータを使用して `VpcLink` ID を指定します。ステージ変数を使用するか、`VpcLink` ID を直接入力できます。`uri` パラメータは、エンドポイントへのルーティングリクエストには使用されませんが、`Host` ヘッダーの設定および証明書の検証に使用されます。

------
#### [ Use the VPC link ID ]

   次の [put-integration](https://docs.aws.amazon.com/cli/latest/reference/apigateway/put-integration.html) コマンドを使用して、統合で `VpcLink` ID を直接参照します。

   ```
   aws apigateway put-integration \
       --rest-api-id abcdef123 \
       --resource-id skpp60rab7 \
       --uri 'http://my-vpclink-test-nlb-1234567890abcdef.us-east-2.amazonaws.com' \
       --http-method GET \
       --type HTTP_PROXY \
       --integration-http-method GET \
       --connection-type VPC_LINK \
       --connection-id gim7c3
   ```

------
#### [ Use a stage variable ]

   次の [put-integration](https://docs.aws.amazon.com/cli/latest/reference/apigateway/put-integration.html) コマンドを使用して、ステージ変数で VPC リンク ID を参照します。API をステージにデプロイするときは、VPC リンク ID を設定します。

   ```
   aws apigateway put-integration \
       --rest-api-id abcdef123 \
       --resource-id skpp60rab7 \
       --uri 'http://my-vpclink-test-nlb-1234567890abcdef.us-east-2.amazonaws.com' \
       --http-method GET \
       --type HTTP_PROXY \
       --integration-http-method GET \
       --connection-type VPC_LINK \
       --connection-id "\${stageVariables.vpcLinkId}"
   ```

   ステージ変数表現 (`${stageVariables.vpcLinkId}`) を二重引用符で囲み、`$` 文字をエスケープします。

------

   いつでも統合を更新して `connection-id` を変更することもできます。次の [update-integration](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-integration.html) コマンドを使用して、統合を更新します。

   ```
    aws apigateway update-integration \
       --rest-api-id abcdef123 \
       --resource-id skpp60rab7 \
       --http-method GET \
       --patch-operations '[{"op":"replace","path":"/connectionId","value":"${stageVariables.vpcLinkId}"}]'
   ```

   文字列化された JSON リストを `patch-operations` パラメータ値として使用するようにしてください。

   プライベートプロキシ統合を使用したため、API はデプロイとテスト実行の準備ができました。

1. ステージ変数を使用して `connection-id` を定義した場合は、API をデプロイしてテストする必要があります。次の [create-deployment](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-deployment.html) コマンドを使用して、ステージ変数を含めて API をデプロイします。

   ```
   aws apigateway create-deployment \
       --rest-api-id abcdef123 \
       --stage-name test \
       --variables vpcLinkId=gim7c3
   ```

   `asf9d7` などの別の `VpcLink` ID でステージ変数を更新するには、次の [update-stage](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-stage.html) コマンドを使用します。

   ```
   aws apigateway update-stage \
       --rest-api-id abcdef123 \
       --stage-name test \
       --patch-operations op=replace,path='/variables/vpcLinkId',value='asf9d7'
   ```

   `VpcLink` ID リテラルを使用して `connection-id` プロパティをハードコーディングする場合は、API をデプロイしてテストする必要はありません。[test-invoke-method](https://docs.aws.amazon.com/cli/latest/reference/apigateway/test-invoke-method.html) コマンドを使用して、デプロイ前に API をテストします。

1. 次のコマンドを使用して API を呼び出します。

   ```
   curl -X GET https://abcdef123.execute-api.us-east-2.amazonaws.com/test
   ```

   または、ウェブブラウザに API の invoke-URL を入力して結果を表示することもできます。

# プライベート統合用の API Gateway アカウント (レガシー)
<a name="set-up-api-with-vpclink-accounts"></a>

次のリージョン固有の API Gateway アカウント ID は、`AllowedPrincipals` の作成時に `VpcLink` として VPC エンドポイントサービスに自動的に追加されます。


| **リージョン** | **アカウント ID** | 
| --- | --- | 
| us-east-1 | 392220576650 | 
| us-east-2 | 718770453195 | 
| us-west-1 | 968246515281 | 
| us-west-2 | 109351309407 | 
| ca-central-1 | 796887884028 | 
| eu-west-1 | 631144002099 | 
| eu-west-2 | 544388816663 | 
| eu-west-3 | 061510835048 | 
| eu-central-1 | 474240146802 | 
| eu-central-2 | 166639821150 | 
| eu-north-1 | 394634713161 | 
| eu-south-1 | 753362059629 | 
| eu-south-2 | 359345898052 | 
| ap-northeast-1 | 969236854626 | 
| ap-northeast-2 | 020402002396 | 
| ap-northeast-3 | 360671645888 | 
| ap-southeast-1 | 195145609632 | 
| ap-southeast-2 | 798376113853 | 
| ap-southeast-3 | 652364314486 | 
| ap-southeast-4 | 849137399833 | 
| ap-south-1 | 507069717855 | 
| ap-south-2 | 644042651268 | 
| ap-east-1 | 174803364771 | 
| sa-east-1 | 287228555773 | 
| me-south-1 | 855739686837 | 
| me-central-1 | 614065512851 | 