

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

 创建 API 之后，您必须对其进行部署，以便您的用户可以调用它。

要部署 API，您可以创建 API 部署并将其与阶段关联。一个阶段是对您 API 生命周期状态（例如，`dev`、`prod`、`beta`、`v2`）的一次逻辑引用。API 阶段由 API ID 和阶段名称标识。它们包含在您用于调用 API 的 URL 中。每个阶段都是一个对 API 部署的命名引用，可供客户端应用程序调用。

**重要**  
每次更新 API 时，您都必须将 API 重新部署到现有阶段或新阶段。更新 API 涉及修改路由、方法、集成、授权方、资源策略以及除阶段设置之外的任何其他内容。

随着 API 的发展，您可以继续将其作为 API 的不同版本部署到不同阶段。您还可以将 API 更新部署为 [Canary 版本部署](canary-release.md)。这使您的 API 客户端可在相同阶段上，通过生产版本访问正式版本，并通过 Canary 版本访问更新的版本。

为调用已部署 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 性能。您还可以启用对 CloudTrail 或 CloudWatch 的 API 调用的日志记录，并为后端选择客户端证书以对 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)
+ [设置 API Gateway Canary 版本部署](canary-release.md)
+ [对需要重新部署的 REST API 的更新](updating-api.md)