Amazon API Gateway
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

Amazon API Gateway 概念

API Gateway

API Gateway 是一项 AWS 服务,支持以下操作:

  1. 创建、部署和管理 RESTful 应用程序编程接口 (API) 以便使用后端 HTTP 终端节点、AWS Lambda 函数或其他 AWS 服务。

  2. 通过前端 HTTP 终端节点调用公开的 API 方法。

API Gateway API

与后端 HTTP 终端节点、Lambda 函数或其他 AWS 服务集成的资源与方法的集合。这种集合可以在一个或多个阶段中部署。API 方法通过可以与注册的自定义域名关联的前端 HTTP 终端节点进行调用。可以使用 IAM 角色和策略或 API Gateway 自定义授权方来授予调用方法的权限。API 可以带有由后端进行身份验证的证书。通常情况下,根据应用程序逻辑将 API 资源组织成资源树形式。每个 API 资源均可公开一个或多个 API 方法,这些方法必须具有受 API Gateway 支持的唯一 HTTP 命令动词。

API 开发人员或 API 所有者

拥有API Gateway 部署的 AWS 账户 (例如支持编程访问的服务提供方。)

应用程序开发人员或客户端开发人员

应用程序创建者,可能拥有也可能不拥有 AWS 账户,可能会也可能不会与 API 开发人员部署的 API 交互。应用程序开发人员可以由 API 密钥来代表。

API 终端节点

API Gateway 中的主机名 API,部署到特定区域并采用 {rest-api-id}.execute-api.{region}.amazonaws.com 格式。支持以下类型的 API 终端节点:

  • 边缘优化的 API 终端节点:部署到指定区域同时使用 CloudFront 分配方便客户端从全 AWS 区域进行常规访问的 API Gateway API 的默认主机名。API 请求将路由至最近的 CloudFront 接入点 (POP),通常可改进不同地理位置客户端的连接时间。如果您在创建 API 时没有明确指出其终端节点类型,则此 API 为边缘优化型。

  • 区域性 API 终端节点:部署到指定区域并旨在服务于同一 AWS 区域中的 EC2 实例等客户端的 API 的主机名。API 请求直接以区域特定的 API Gateway 为目标而不经过任何 CloudFront 分配。对于区域内请求,区域性终端节点会绕过到 CloudFront 分配的不必要往返行程。此外,您可以在区域性终端节点上应用基于延迟的路由,从而使用相同的区域性 API 终端节点配置将 API 部署到多个区域,为每个已部署的 API 设置相同的自定义域名,以及在 Route 53 中配置基于延迟的 DNS 记录以将客户端请求路由到延迟最低的区域。

应用程序用户、最终用户或客户端

实体内使用客户端访问 Amazon API Gateway 中的 API 的应用程序用户或最终用户。客户端可以是使用 API Gateway REST API、AWS CLI 或 SDK 的移动应用程序、Web 应用程序或桌面应用程序。应用程序用户可由 Amazon Cognito 身份或持有者令牌表示。

API 密钥

一个字母数字字符串,由 API Gateway 代表 API 所有者生成。也可以从外部源 (如 CSV 文件) 导入该字符串。该字符串用于识别 API 的应用程序开发人员。API 所有者可以根据所用的应用程序,使用 API 密钥来允许或拒绝访问特定 API。

API 部署和阶段

API 部署是 API Gateway API 资源和方法的时间点快照。一个部署必须与一个或多个阶段关联,才能供客户端访问调用。阶段是对您的 API 生命周期状态 (例如,‘dev’、‘prod’、‘beta’、‘v2’) 的逻辑引用。API 阶段标识符由 API ID 和阶段名称组成。

方法请求

API Gateway 中 API 方法的公共接口,定义了应用程序开发人员在通过 API 访问后端时必须在请求中发送的参数和正文。

集成请求

API Gateway 内部接口,定义了 API Gateway 如何将方法请求的参数和正文映射为后端所需的格式。

集成响应

API Gateway 内部接口,定义 API Gateway 如何映射数据。集成响应包含从后端接收的状态代码、标头和负载 (转换为针对应用程序开发人员定义的格式)。

方法响应

API 的公共接口,定义应用程序开发人员期望从 API Gateway 收到的状态代码、标头和正文模型。

代理集成

简化的 API Gateway 集成配置。您可以将代理集成设置为 HTTP 代理集成类型或 Lambda 代理集成类型。对于 HTTP 代理集成,API Gateway 在前端与 HTTP 后端之间传递整个请求和响应。对于 Lambda 代理集成,API Gateway 将整个请求作为输入发送到后端 Lambda 函数。API Gateway 随后将 Lambda 函数输出转换为前端 HTTP 响应。代理集成最常与代理资源一起使用,以“贪婪”路径变量 (例如 {proxy+}) 与“捕获所有”ANY 方法相结合的方式表示。

映射模板

使用 Velocity 模板语言 (VTL) 表示的脚本,这些脚本用于将请求正文从前端数据格式转换为后端数据格式,或将响应正文从后端数据格式转换为前端数据格式。映射模板在集成请求或集成响应中指定。它们可以将运行时提供的数据引用为上下文和阶段变量。身份转换指的是直通式传递。在直通式传递中,负载按原样从客户端传递至请求的后端。对于响应,负载则从后端传递到客户端。

Model

指定请求或响应负载的数据结构的数据架构。生成 API 的强类型的开发工具包时需要使用模型。模型还用于验证负载。模型可以方便地用于生成示例映射模板,以便开始创建生产映射模板。虽然模型很有用,但不是创建映射模板所必需的。

使用计划

使用计划可以提供能够访问一个或多个部署的 API 的选定 API 客户端。您可以通过使用计划来配置限制和配额限制,这些限制会应用到单独的客户端 API 密钥。