

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 管理 APIs
<a name="apis"></a>

适当的 API 管理使内部和外部消费者都能访问您的微服务。 AWS 提供了多种服务，您可以将这些服务一起使用来安全地公开您的微服务 APIs。这些服务使您能够加强安全性， APIs 并从一个中心位置实施监控和可观察性。如果您的用户 CloudFront与托管服务的地理位置相距甚远， APIs 您也可以使用 [Amazon](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) 来提高性能。 AWS 区域 

## Amazon API Gateway
<a name="api-gateway"></a>

[Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) 是一项完全托管的服务，使开发人员能够以任何规模创建、发布、维护、监控和 WebSocket APIs 保护 REST。您可以使用 API Gateway 来实施本指南[通信模式](communication-patterns.md)部分所述的多种模式。

REST 有两种主要类型 APIs：REST 和 HTTP。两种类型都支持 RESTful APIs，但提供的功能不同。要确定哪个最适合您的需求，请参阅 API Gateway 文档 APIs中的在 [REST APIs 和 HTTP 之间进行选择](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-vs-rest.html)。本指南的本部分重点介绍 API Gateway REST APIs。

使用 API Gateway 作为您的入口点 APIs 提供了一个实现常见问题（例如请求验证和安全）的地方。API Gateway REST APIs 提供[请求验证](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-method-request-validation.html)，允许您使用 [JSON 架构](https://datatracker.ietf.org/doc/html/draft-zyp-json-schema-04)定义请求的格式。API Gateway 会根据您定义的架构验证传入的请求，并拒绝格式错误的请求。

### 身份验证和授权
<a name="authentication-authorization"></a>

API Gateway REST APIs 支持以下身份验证 (authN) 和授权 (authZ) 机制：
+ **IAM** – 如果您使用 IAM，必须使用[AWS 签名版本 4（SigV4）](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html)对 API 请求签名。
+ **Amazon Cognito** – API Gateway 将验证所提供的持有者令牌是否由 Amazon Cognito 用户池签发。如果已经在使用第三方身份提供者（IdP），也可以将 Amazon Cognito 用户池配置为与之集成。您也可以使用 Amazon Cognito 用户池进行 machine-to-machine (M2M) 身份验证。
+ **AWS Lambda 授权方** — API Gateway 将调用您指定的 Lambda 函数来执行您想要的任何检查，以确定是否应授权请求。

有关更多信息，请参阅 API Gateway 文档 APIs中的[控制和管理 REST 访问权限](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-to-api.html)。

### API 密钥和速率限制
<a name="keys-rate-limits"></a>

您可以使用 API 密钥 APIs 和使用计划来控制允许谁给您打电话以及以什么费率给您打电话。API 密钥不应用于身份验证，但可与前文提到的架构结合使用。用户并不总是需要提供自己的 API 密钥，例如，Lambda 授权方可以为用户返回 API 密钥。您可以在使用计划中指定吞吐量、突发限制和每月配额。有关更多信息，请参阅 [API Gateway 文档 APIs中的 REST 使用计划和 API 密钥](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-usage-plans.html)。

### 公共和私人 APIs
<a name="public-private-apis"></a>

可通过互联网访问 APIs 的 API Gateway REST 支持两种终端节点类型：
+ 边缘优化，这意味着呼叫者的请求会被路由到附近的接入 CloudFront 点 (POP)。这可以提升地理位置分散的客户端的性能表现。
+ 区域性端点，这意味着请求会路由到特定 AWS 区域内的资源。当您的所有客户端都位于 API 部署区域附近时，这是不错的选择。

API Gateway REST APIs 还支持私有 API 终端节点，这些终端节点可通过接口 VPC 终端节点从虚拟私有云 (VPC) 进行访问。您还可以 APIs 通过在其他甚至其他接口中创建接口 VPC 终端节点来安全地共享私有 REST AWS 账户。 VPCs有关更多信息，请参阅 [API Gateway 文档 APIs中的 REST 的 API 端点类型](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-endpoint-types.html)。

### 何时使用 API Gateway
<a name="when-to-use"></a>

API Gateway 是 RESTful 网络服务和实时 WebSocket连接的不错选择。 WebSocket APIs 在 API Gateway 中使用时，可以为连接和断开连接事件添加行为，例如将连接存储 IDs 在与客户端属性关联的外部数据存储中。还可以使用消息属性将请求路由到自定义行为。

REST 和 REST WebSocket APIs 都可以直接与许多计算资源集成， AWS 服务 而无需单独的计算资源，例如 Lambda 函数。这可以提高性能并降低成本。

REST 既 APIs 支持基于路径的路由，也支持基于标头的路由，你可以单独使用它们，也可以一起使用。一种常见的模式是提供 REST API 作为许多人的前门 APIs，实现前面讨论的共同关注点，然后像反向代理一样行事，并将授权请求路由到正确的 API 端点。