

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 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 會移除 `Content-MD5` 標頭。任何傳送到後端的 MD5 雜湊值都可以請求字串參數或內文屬性表示。不過，區域 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. 在以下網址登入 API Gateway 主控台：[https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway)。

1. 選擇 REST API。

1. 選擇 **API 設定**。

1. 在 **API 詳細資訊**區段中，選擇**編輯**。

1. 對於 **API 端點類型**，選取**邊緣最佳化**或**區域**。

1. 選擇**儲存變更**。

1. 重新部署您的 API，變更才會生效。

**將私有端點轉換為區域端點**

1. 在以下網址登入 API Gateway 主控台：[https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway)。

1. 選擇 REST API。

1. 編輯您的 API 資源政策，以移除任何提及的 VPC 或 VPC 端點；如此一來，從您的 VPC 內、外部進行的 API 呼叫將可成功。

1. 選擇 **API 設定**。

1. 在 **API 詳細資訊**區段中，選擇**編輯**。

1. 對於 **API 端點類型**，選取**區域**。

1. 選擇**儲存變更**。

1. 從您的 API 移除資源政策。

1. 重新部署您的 API，變更才會生效。

   由於您要將端點類型從私有移轉至區域，因此 API Gateway 會將 IP 位址類型變更為 IPv4。如需詳細資訊，請參閱[API Gateway 中 REST API 的 IP 位址類型](api-gateway-ip-address-type.md)。

**將區域端點轉換為私有端點**

1. 在以下網址登入 API Gateway 主控台：[https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway)。

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. 選擇**儲存變更**。

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 端點類型。