

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

# 在 API Gateway 中部署 REST API
<a name="how-to-deploy-api"></a>

 API 在建立之後必須進行部署，這樣您的使用者才能呼叫該 API。

若要部署 API，請建立 API 部署，並建立它與階段的關聯。階段是 API 生命週期狀態的邏輯參考 (例如，`dev`、`prod`、`beta`、`v2`)。可依照 API ID 和階段名稱來識別 API 階段。它們包含在您用於叫用 API 的 URL 中。每個階段都是 API 部署的具名參考，且可供用戶端應用程式呼叫。

**重要**  
每次更新 API 時，都必須將 API 重新部署到現有階段或新階段。更新 API，包括修改路由、方法、整合、授權方、資源政策，以及階段設定以外的任何其他內容。

在您的 API 演進時，您可以繼續將它部署至不同的階段以作為 API 的不同版本。您也可以將 API 更新部署為 [Canary Release 部署](canary-release.md)。這可讓您的 API 用戶端透過生產發行在相同的階段上存取生產版本，以及透過 Canary Release 存取已更新的版本。

若要呼叫已部署的 API，用戶端會對 API URL 提交請求。此 URL 取決於 API 的通訊協定 (HTTP (S) 或 (WSS))、主機名稱、階段名稱和 (適用於 REST API) 資源路徑。主機名稱和階段名稱可決定 API 的基本 URL。

使用 API 的預設網域名稱，處於指定階段 (`{stageName}`) 的 REST API (例如) 之基本 URL 格式如下：

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

 為了讓使用者更容易使用 API 的預設基本 URL，您可以建立自訂網域名稱 (例如，`api.example.com`) 以取代 API 的預設主機名稱。若要在自訂網域名稱下方支援多個 API，您必須將 API 階段對應至基本路徑。

使用自訂網域名稱 `{api.example.com}` 以及自訂網域名稱下方映射至基本路徑 (`{basePath}`) 的 API 階段，REST API 的基本 URL 會變成下列項目：

```
https://{api.example.com}/{basePath}
```

 針對每個階段，您可以調整預設帳戶層級請求調節限制以及啟用 API 快取，來最佳化 API 效能。您也可以啟用將 API 呼叫記錄至 CloudTrail 或 CloudWatch，以及選取後端的用戶端憑證來驗證 API 請求。此外，您也可以覆寫個別方法的階段層級設定，以及定義階段變數以在執行時間將階段特定環境內容傳遞至 API 整合。

階段啟用 API 的強大版本控制。例如，您可以將 API 部署至 `test` 階段和 `prod` 階段，並使用 `test` 階段作為測試組建，以及使用 `prod` 階段作為穩定組建。更新通過測試之後，您就可以將 `test` 階段提升為 `prod` 階段。提升的做法是將 API 重新部署至 `prod` 階段，或將階段變數值從 `test` 的階段名稱更新為 `prod` 的階段名稱。

 在本節中，我們會討論如何使用 [API Gateway 主控台](https://console.aws.amazon.com/apigateway)或呼叫 [API Gateway REST API](https://docs.aws.amazon.com/apigateway/latest/api/) 來部署 API。若要使用其他工具，請參閱 [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/apigateway/) 或 [AWS 軟體開發套件](https://aws.amazon.com/developer/tools/#sdk)的文件。

**Topics**
+ [在 API Gateway 中建立 REST API 的部署](set-up-deployments.md)
+ [在 API Gateway 中為 REST API 設定階段](set-up-stages.md)
+ [設定 Amazon API Gateway Canary Release 部署](canary-release.md)
+ [需要重新部署的 REST API 更新](updating-api.md)