

# プライベート API の呼び出し
<a name="apigateway-private-api-test-invoke-url"></a>

プライベート API は VPC 内から VPC エンドポイントを使用してのみ呼び出すことができます。プライベート API には、特定の VPC や VPC エンドポイントに API の呼び出しを許可するリソースポリシーが必要です。

カスタムドメイン名またはプライベート DNS 名を使用せずにプライベート API を呼び出し、API またはドメイン名が `SecurityPolicy_` で始まるセキュリティポリシーを使用する場合は、エンドポイントアクセスモードを `BASIC` に設定する必要があります。詳細については、「[エンドポイントアクセスモード](apigateway-security-policies.md#apigateway-security-policies-endpoint-access-mode)」を参照してください。

## カスタムドメイン名を使用してプライベート API を呼び出す
<a name="apigateway-private-custom-domains-provider-invoke"></a>

カスタムドメイン名を使用してプライベート API を呼び出すには、VPC エンドポイントとカスタムドメイン名との間にドメイン名アクセスの関連付けを作成し、さらにカスタムドメイン名側で VPC エンドポイントからの呼び出しを許可する必要があります。詳細については、「[API Gateway でのプライベート API のカスタムドメイン名](apigateway-private-custom-domains.md)」を参照してください。

プライベートカスタムドメイン名をお客様独自の AWS アカウント の VPC で呼び出す場合と、別の AWS アカウント の VPC で呼び出す場合に違いはありません。

### カスタムドメイン名を使用する
<a name="apigateway-private-custom-domains-invoke-1"></a>

VPC 内では、カスタムドメイン名を使用して API を呼び出すことができます。次の例は、プライベートカスタムドメイン名を呼び出す curl コマンドです。

```
curl https://private.example.com
```

### エンドポイント固有のプライベート DNS ホスト名を使用する
<a name="apigateway-private-custom-domains-invoke-2"></a>

カスタムドメイン名とエンドポイント固有のプライベート DNS ホスト名とを使用して、API を呼び出すことができます。

```
curl https://private-dns-hostname.execute-api.region.vpce.amazonaws.com/basepath -H 'Host:custom-domain-name'
```

次の例は、エンドポイント固有のプライベート DNS ホスト名を使用してカスタムドメイン名を呼び出す curl コマンドです。

```
curl https://vpce-123456-abc000.execute-api.us-east-2.vpce.amazonaws.com/test -H 'Host:private.example.com'
```

## カスタムドメイン名を使用せずにプライベート API を呼び出す
<a name="apigateway-private-api-invoke-without-custom-domain-name"></a>

カスタムドメイン名を使用せずにプライベート API を呼び出すには、API の DNS 名を特定する必要があります。次の手順は、DNS 名を検索する方法を示しています。

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

**DNS 名を見つけるには**

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

1. メインナビゲーションペインで、**[エンドポイント]** を選択し、API Gateway 用のインターフェイス VPC エンドポイントを選択します。

1. **[詳細]** ペインで、**[DNS 名]** フィールドに 5 つの値が表示されます。最初の 3 つは API のパブリック DNS 名です。残りの 2 つはプライベート DNS 名です。

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

次の [describe-vpc-endpoints](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-endpoints.html) コマンドを使用して、DNS 値を一覧表示します。

```
aws ec2 describe-vpc-endpoints --vpc-endpoint-ids vpce-01234567abcdef012
```

最初の 3 つは API のパブリック DNS 名です。残りの 2 つはプライベート DNS 名です。

------

### Route53 エイリアスを使用したプライベート API の呼び出し
<a name="apigateway-private-api-route53-alias"></a>

VPC エンドポイントとプライベート API を関連付けたり、関連付けを解除したりできます。詳細については、「[(オプション) VPC エンドポイントとプライベート API の関連付けまたは関連付けの解除](apigateway-private-api-create.md#associate-private-api-with-vpc-endpoint)」を参照してください。

VPC エンドポイントをプライベート API に関連付けると、次のベース URL を使用して API を呼び出すことができます。

```
https://{rest-api-id}-{vpce-id}.execute-api.{region}.amazonaws.com/{stage}
```

例えば、`test` ステージで `GET /pets` メソッドを設定し、REST API ID が `01234567ab`、VPC エンドポイント ID が `vpce-01234567abcdef012`、リージョンが `us-west-2` である場合は、次のように API を呼び出すことができます。

```
curl -v https://01234567ab-vpce-01234567abcdef012.execute-api.us-west-2.amazonaws.com/test/pets
```

### プライベート DNS 名を使用してプライベート API を呼び出す
<a name="w2aac15c20c17c17b9b9"></a>

プライベート DNS を有効にしている場合は、次のプライベート DNS 名を使用してプライベート API にアクセスできます。

```
{restapi-id}.execute-api.{region}.amazonaws.com
```

API を呼び出すためのベース URL は次の形式です。

```
https://{restapi-id}.execute-api.{region}.amazonaws.com/{stage}
```

例えば、`test` ステージで `GET /pets` メソッドをセットアップし、REST API ID が `01234567ab`、リージョンが `us-west-2` である場合は、ブラウザに次の URL を入力してプライベート API を呼び出すことができます。

```
https://01234567ab.execute-api.us-west-2.amazonaws.com/test/pets
```

または、次の cURL コマンドを使用してプライベート API を呼び出すこともできます。

```
curl -X GET https://01234567ab.execute-api.us-west-2.amazonaws.com/test/pets 
```

**警告**  
VPC エンドポイントのプライベート DNS を有効にすると、パブリック API のデフォルトエンドポイントにアクセスできなくなります。詳細については、「[API Gateway VPC エンドポイントからパブリック API に接続できないのはなぜですか?](https://repost.aws/knowledge-center/api-gateway-vpc-connections)」を参照してください。

### Direct Connect を使用してプライベート API を呼び出す
<a name="w2aac15c20c17c17b9c11"></a>

Direct Connect を使用して、オンプレミスネットワークから Amazon VPC への専用のプライベート接続を確立し、この接続経由でパブリック DNS 名を使用してプライベート API エンドポイントにアクセスできます。

プライベート DNS 名を使用すると、Amazon Route 53 Resolver インバウンドエンドポイントを設定してリモートネットワークからプライベート DNS のすべての DNS クエリを転送することによって、オンプレミスネットワークからプライベート API にアクセスすることもできます。詳細については、*Amazon Route 53 デベロッパーガイド*の「[VPC へのインバウンド DNS クエリの転送](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-forwarding-inbound-queries.html)」を参照してください。

### エンドポイント固有のパブリック DNS ホスト名を使用してプライベート API を呼び出す
<a name="apigateway-private-api-public-dns"></a>

エンドポイント固有のパブリック DNS ホスト名を使用してたプライベート API にアクセスできます。これらは、プライベート API 用の VPC エンドポイント ID または API ID を含むパブリック DNS ホスト名です。

生成されたベース URL は次の形式になります。

```
https://{public-dns-hostname}.execute-api.{region}.vpce.amazonaws.com/{stage}
```

例えば、`test` ステージで `GET /pets` メソッドを設定し、REST API ID が `abc1234`、パブリック DNS ホスト名が `vpce-def-01234567`、リージョンが `us-west-2`である場合、cURL コマンドの `Host` ヘッダーで VPCe ID を使用してプライベート API を呼び出すことができます。

```
curl -v https://vpce-def-01234567.execute-api.us-west-2.vpce.amazonaws.com/test/pets -H 'Host: abc1234.execute-api.us-west-2.amazonaws.com'
```

または、cURL コマンドで `x-apigw-api-id` ヘッダーを次の形式で使用し、API ID を経由してプライベート API を呼び出すことができます。

```
curl -v https://{public-dns-hostname}.execute-api.{region}.vpce.amazonaws.com/{stage} -H 'x-apigw-api-id:{api-id}'
```