

# API Gateway で API エンドポイントタイプを変更する (パブリックまたはプライベート)
<a name="apigateway-api-migration"></a>

API エンドポイントタイプを変更するには、API の設定を更新する必要があります。API Gateway コンソール、AWS CLI、または API Gateway 用の AWS SDK を使用して、既存の API タイプを変更できます。現在の変更が完了するまでそのエンドポイントタイプを再度変更することはできませんが、API は使用可能になります。

次のエンドポイントタイプの変更がサポートされています。
+ エッジ最適化からリージョンまたはプライベートへ
+ リージョンからエッジ最適化またはプライベートへ
+ プライベートからリージョンへ

プライベート API をエッジ最適化 API に変更することはできません。

パブリック API をエッジ最適化からリージョン、またはその逆に変更する場合、エッジ最適化 API とリージョン API とでは動作が異なることがあります。たとえば、エッジ最適化 API は `Content-MD5` ヘッダーを削除します。バックエンドに渡される MD5 ハッシュ値はすべて、リクエスト文字列パラメータまたは body プロパティで表現できます。ただし、リージョン API は (ヘッダー名を別の名前に再マップする場合がありますが) このヘッダーを渡します。この違いを理解することは、エッジ最適化 API をリージョン API に更新する方法、またはリージョン API をエッジ最適化 API に更新する方法を決めるのに役立ちます。

**Topics**
+ [API Gateway コンソールを使用して API エンドポイントの種類を変更する](#migrate-api-using-console)
+ [AWS CLI を使用して API エンドポイントタイプを変更する](#migrate-api-using-aws-cli)

## API Gateway コンソールを使用して API エンドポイントの種類を変更する
<a name="migrate-api-using-console"></a>

API の API エンドポイントタイプを変更するには、次の一連の手順のいずれかを実行します。

**エンドポイントをリージョン別またはエッジ最適化 (またはその逆) からパブリックに変換するには**

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

1. REST API を選択します。

1. **[API 設定]** を選択します。

1. **[API の詳細]** セクションで **[編集]** を選択します。

1. **API エンドポイントタイプ**には、**[エッジ最適化]** または **[リージョン別]** を選択します。

1. **[Save changes]** (変更の保存) をクリックします。

1. API を再デプロイします。これにより変更が有効になります。

**プライベートエンドポイントをリージョンエンドポイントに変換するには**

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

1. REST API を選択します。

1. VPC の外部からの API コールも VPC 内部と同様に成功するように、API のリソースポリシーを編集して、VPC または VPC エンドポイントの指定を削除します。

1. **[API 設定]** を選択します。

1. **[API の詳細]** セクションで **[編集]** を選択します。

1. **[API エンドポイントタイプ]** で、**[リージョン別]** を選択します。

1. **[Save changes]** (変更の保存) をクリックします。

1. リソースポリシーを API から削除します。

1. API を再デプロイします。これにより変更が有効になります。

   エンドポイントタイプをプライベートからリージョンに移行するため、API Gateway によって IP アドレスタイプが IPv4 に変更されます。詳細については、「[API Gateway の REST API の IP アドレスタイプ](api-gateway-ip-address-type.md)」を参照してください。

**リージョンエンドポイントをプライベートエンドポイントに変換するには**

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

1. REST API を選択します。

1. VPC または VPC エンドポイントへのアクセスを許可するリソースポリシーを作成します。詳細については、「[ステップ 3: プライベート API のリソースポリシーをセットアップする](apigateway-private-api-create.md#apigateway-private-api-set-up-resource-policy)」を参照してください。

1. **[API 設定]** を選択します。

1. **[API の詳細]** セクションで **[編集]** を選択します。

1. **[API エンドポイントタイプ]** で、**[プライベート]** を選択します。

1. (オプション) **[VPC エンドポイント ID]** で、プライベート API と関連付ける VPC エンドポイント の ID を選択します。

1. **[Save changes]** (変更の保存) をクリックします。

1. API を再デプロイします。これにより変更が有効になります。

   エンドポイントタイプをリージョンからプライベートに移行するため、API Gateway によって IP アドレスタイプがデュアルスタックに変更されます。詳細については、「[API Gateway の REST API の IP アドレスタイプ](api-gateway-ip-address-type.md)」を参照してください。

## AWS CLI を使用して API エンドポイントタイプを変更する
<a name="migrate-api-using-aws-cli"></a>

次の [update-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html) コマンドは、エッジ最適化 API をリージョン別 API に更新します。

```
aws apigateway update-rest-api \
    --rest-api-id a1b2c3 \
    --patch-operations op=replace,path=/endpointConfiguration/types/EDGE,value=REGIONAL
```

成功のレスポンスには、`200 OK` ステータスコードと以下のようなペイロードが含まれます。

```
{
    "createdDate": "2017-10-16T04:09:31Z",
    "description": "Your first API with Amazon API Gateway. This is a sample API that integrates via HTTP with our demo Pet Store endpoints",
    "endpointConfiguration": {
        "types": "REGIONAL"
    },
    "id": "a1b2c3",
    "name": "PetStore imported as edge-optimized"
}
```

次の [update-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html) コマンドは、リージョン別 API をエッジ最適化 API に更新します。

```
aws apigateway update-rest-api \
    --rest-api-id a1b2c3 \
    --patch-operations op=replace,path=/endpointConfiguration/types/REGIONAL,value=EDGE
```

[put-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/put-rest-api.html) は API 定義の更新用なので、API エンドポイントタイプの更新には適用されません。