一般性问题

问:什么是 Amazon API Gateway?

Amazon API Gateway 是一种完全托管的服务,可以帮助开发人员轻松发布、维护、监控和保护任意规模的 API。只需在 亚马逊云科技 管理控制台中点击几下,您便可以创建可充当应用程序“前门”的 API,从后端服务访问数据、业务逻辑或功能,例如运行在 Amazon Elastic Compute Cloud (Amazon EC2) 上的应用程序、运行在 Amazon Lambda 上的代码或任意 Web 应用程序。Amazon API Gateway 负责处理接受和处理成千上万个并发 API 调用过程中的所有任务,包括流量管理、授权和访问控制、监控以及 API 版本管理。Amazon API Gateway 没有最低费用和启动成本。您只需为收到的 API 调用以及传出的数据量付费。

问:为什么要使用 Amazon API Gateway?

Amazon API Gateway 为开发人员提供了一种简单灵活的完全托管服务,此服务按使用量计费,可以处理为应用程序后端创建并操作功能强大的 API 涉及的各方面事务。通过 Amazon API Gateway,您可以更快速地启动新服务并降低投资,从而集中精力构建核心业务服务。Amazon API Gateway 专为帮助您处理创建和管理 API 过程中的各项任务而构建:

1) 计量。 API Gateway 可帮助您定义用于计量和限制第三方开发人员访问 API 的计划。您可以依据每个 API 密钥定义一组计划、配置限制和设定配额限制。API Gateway 自动计量流向 API 的流量并允许您提取每个 API 密匙的使用数据。

2) 安全性。 API Gateway 可为您提供多种可授权访问 API 和控制服务操作的工具。借助 Amazon API Gateway,您可以使用 Amazon Identity and Access Management (IAM) 等多种 亚马逊云科技 管理和安全工具对 API 的访问进行授权。Amazon API Gateway 可以通过 亚马逊云科技 用于其自身 API 的相同方法来代表您验证签名的 API 调用。借助以 Amazon Lambda 函数形式编写的自定义授权命令,API Gateway 还可以帮助您验证传入的不记名令牌,从而消除后端代码的授权问题。

3) 弹性。 Amazon API Gateway 可帮助您通过限制来管理流量,从而让后端操作可以抵挡流量高峰。Amazon API Gateway 还可通过缓存 API 调用的输出内容来避免每次都调用后端,从而帮助您提升 API 性能并缩短最终用户遇到的延迟。

4) 操作监控。 在 API 发布并处于使用状态后,API Gateway 会为您提供一个指标控制面板,以监控您的服务调用情况。通过与 Amazon CloudWatch 集成,Amazon API Gateway 控制面板可为您提供各种后端性能指标,包括 API 调用次数、延迟数据和错误率。您可以查看 API 中每种方法的详细指标,也可以在 CloudWatch 日志中生成错误日志、访问日志或调试日志。

5) 生命周期管理。 在 API 发布之后,您通常需要构建和测试增强现有功能或添加新功能的新版本。借助 Amazon API Gateway,您可以同时运行多个 API 版本以及各个版本的多个阶段,以便在新版 API 发布之后,现有应用程序仍可继续调用旧版 API。

6) 专为开发人员设计。 通过 Amazon API Gateway,您可以快速创建 API 并为其响应分配静态内容,以便减少应用程序的跨团队开发工作并缩短其上市时间。依赖您 API 的团队可以在您构建后端进程的同时开始开发。

问:Amazon API Gateway 支持哪些 API 类型?

Amazon API Gateway 提供了两个用于创建 RESTful API 的选项:HTTP API 和 REST API,以及一个用于创建 WebSocket API 的选项。

HTTP API:HTTP API 是适合为大多数用例构建 API 的最佳选择。它们经过优化,用于构建为 Amazon Lambda 函数或 HTTP 后端提供代理的 API,因此成为无服务器工作负载的理想选择。它们目前不提供 API 管理功能。要了解更多信息,请阅读我们的 HTTP API 文档

REST API:REST API 在单个解决方案中提供 API 代理功能和 API 管理功能。REST API 可提供多种 API 管理功能,例如使用计划、API 密钥、发布和货币化 API。要了解更多信息,请访问我们的 REST API 文档

WebSocket API: WebSocket API 所连接的客户端之间保持持久的连接,以实现实时消息通信。借助 API Gateway 中的 WebSocket API,您可以定义与 Amazon Lambda 函数、Amazon Kinesis 或者从连接的客户端接收消息时调用的任何 HTTP 终端节点的后端集成。要了解更多信息,请访问我们的 WebSocket API 文档

问:如何开始使用 Amazon API Gateway?

为了上手,您可以使用 Amazon API Gateway 控制台、Amazon CLI 或 Amazon 软件开发工具包。要了解更多关于开始使用 API Gateway 的更多信息,请访问我们的 入门文档

问:我是否可以创建 HTTPS 终端节点?

可以。通过 Amazon API Gateway 创建的所有 API 都只公开 HTTPS 终端节点。Amazon API Gateway 不支持未加密的 (HTTP) 终端节点。默认情况下,Amazon API Gateway 将内部域分配给自动使用 Amazon API Gateway 证书的 API。如果您将 API 配置为以自定义域名运行,则可以为域提供您自己的证书。

问:我可以对 Amazon API Gateway 使用哪些类型的数据?

基于 Amazon API Gateway 构建的 API 可以接受通过 HTTP 发送的任何负载。典型数据格式包括 JSON、XML、查询字符串参数和请求标头。您可以为 API 响应声明任何内容类型,然后使用转换模板将后端响应更改为相应的格式。

问:Amazon API Gateway 可以与哪些后端通信?

Amazon API Gateway 可以用您的账户执行 Amazon Lambda 函数、启动 亚马逊云科技 Step Functions 状态机,也可以调用在 Amazon Elastic Beanstalk、Amazon EC2 上托管的 HTTP 终端节点,以及基于非 亚马逊云科技 托管 HTTP 的操作(可通过公共 Internet 访问)。借助 API Gateway,您还可以指定一个映射模版以生成需返回的静态内容,从而帮助您在后端就绪前模拟您的 API。您还可以将 API Gateway 与其他 亚马逊云科技 产品直接集成,例如,您可以在 API Gateway 中公开一种可直接向 Amazon Kinesis 发送数据的 API 方法。

问:Amazon API Gateway 可以为哪些客户端平台生成 SDK?

API Gateway 可为移动应用程序开发生成自定义 SDK(通过 Android 和 iOS),并为 Web 应用开发生成自定义 SDK(通过 JavaScript)。在 API Gateway 中定义了 API 及其模型后,您可以使用 亚马逊云科技 控制台或 API Gateway API 来生成和下载客户端 SDK。

问:我可以通过 Amazon API Gateway 控制台管理哪些内容?

通过 Amazon API Gateway 控制台,您可以定义 REST API 及其关联的资源和方法、管理 API 生命周期、生成客户端 SDK,并能查看 API 指标。您还可以使用 API Gateway 控制台定义 API 使用计划、管理开发人员的 API 密匙以及配置限制和配额限制。所有相同操作均通过 API Gateway API 提供。

问:什么是 REST API?

在 Amazon API Gateway 中,REST API 可以是一组资源和方法,也可以是终端节点。REST API 可以部署到不同阶段并可克隆到新版本。

问:什么是资源?

资源是一种类型化对象,属于您的 API 域。每种资源可能具有关联的数据模型、与其他资源的关系,并可能对不同方法做出响应。您也可以将资源定义为变量,以拦截多个子资源的请求。

问:什么是方法?

REST API 中的每种资源均可支持一个或多个标准 HTTP 方法。您可以定义每种资源应支持的动词(GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS)及其实施方法。例如,汽车资源的 GET 操作应返回一个汽车列表要将资源内的所有方法连接到单个后端终端节点,API Gateway 还支持一种特殊的“ANY”方法。

问:什么是使用计划?

使用计划可帮助您声明针对第三方开发人员的计划,即仅将访问限制到特定 API、定义限制以及请求配额限制,并将这些限制与 API 密匙关联。您还可以基于每个 API 密匙提取使用数据,以分析 API 使用情况并生成账单单据。例如,您可以创建一个基础级、专业级和企业级的计划。您可以将基础使用计划配置为:每天仅允许 1000 次请求,且每秒请求次数 (RPS) 最多为 5 次。

问:什么是 Amazon API Gateway API 生命周期?

使用 Amazon API Gateway,每个 REST API 都可以有多个阶段。阶段用于划分 API 的开发生命周期,例如,在您构建了 API 并将其部署到开发阶段后,或者当您准备好进行生产时,您可以将其部署到生产阶段。

问:什么是阶段?

在 Amazon API Gateway 中,阶段类似于标签,用于定义部署的访问路径。例如,您可以定义开发阶段,并将您的 cars API 部署到此阶段。可通过 https://www.myapi.com/dev/cars 访问资源。您还可以设置直接指向阶段的自定义域名,这样您就无需使用其他路径参数了。例如,如果您将 myapi.com 设置为直接指向开发阶段,则可以通过 https://www.myapi.com/cars 访问 cars 资源。您可使用可通过 API 配置或映射模板访问的变量对各个阶段进行配置。

问:什么是阶段变量?

借助阶段变量,您可以定义与某个阶段相关的配置值的密钥/值对。这些值与环境变量相似,可用于您的 API 配置。例如,您可以将用于方法集成的 HTTP 终端节点定义为阶段变量,并在配置 API 时使用该变量,而不是对终端节点进行硬编码,这样一来,您就可以通过相同的 API 配置将不同终端节点用于每个阶段(如开发、测试或生产阶段)。阶段变量还可通过映射模板进行访问,并可用于将配置参数传递至您的 Lambda 或 HTTP 后端。

问:什么是资源策略?

资源策略是附加到 API 的 JSON 策略文档,用于控制指定的主体(通常是 IAM 用户或角色)是否可以调用 API。您可以使用资源策略使来自其他 亚马逊云科技 账户的用户能够安全地访问您的 API,或者仅允许从指定的源 IP 地址范围或 CIDR 块调用 API。资源策略可与 Amazon API Gateway 中的 REST API 一起使用。

问:如果我错误地部署到某个阶段,该怎么办?

Amazon API Gateway 会保存您的部署历史记录。使用 Amazon API Gateway API 或控制台,您随时都可以将阶段回滚到先前的部署。

问:是否可以运行同一 REST API 的多个版本?

是。Amazon API Gateway 允许您克隆现有 API。在您准备好开始使用 API 的下一主要版本时,您可以继续同时使用版本 1 和版本 2 API。

问:我能否使用自己的 Swagger API 定义?

是。您可以使用我们的开源 Swagger 导入程序工具将自己的 Swagger API 定义导入 Amazon API Gateway。利用 Swagger 导入程序工具,您可以创建和部署新的 API 并更新现有 API。

问:如何在 Amazon API Gateway 上为 API 提供文档证明?

借助 API Gateway,您可以创建、更新和删除与 API 的每个部分关联的文档,例如方法和资源。您可以通过 Amazon 开发工具包、CLI、RESTful 调用,或直接在 API Gateway 控制台中编辑文档字符串来访问与文档关联的 API。文档还可以导入为 Swagger 文件、API 的一部分或单独存在,让您在不干扰 API 定义的情况下添加或更新文档。对于以导入或导出为 Swagger 文件的文档,API Gateway 符合 Open API 规范

问:如何避免创建 API 中频繁发生的错误消息和其他文档的冗余副本?

除提供符合标准的 API 文档支持之外,API Gateway 还支持文档继承,只需定义文档字符串一次,然后将其用于多个位置。继承功能简化了定义 API 文档的过程,并且可以在将 API 导出为 Swagger 文件时转换为标准表示形式。

安全性和授权

问:如何对我的 API 访问授权?

借助 Amazon API Gateway,您可以视需要设置 API 方法以请求授权。设置方法以请求授权时,您可以利用 亚马逊云科技 签名版本 4 或自定义授权命令来支持您自己的不记名令牌身份验证策略。

问:亚马逊云科技 签名版本 4 的工作原理是什么?

您可以像使用其他 亚马逊云科技 服务一样使用 亚马逊云科技 凭证 (访问密钥和私有密钥) 签署对您服务的请求并授予访问权限。Amazon API Gateway API 请求的签署由针对您的服务生成的自定义 API Gateway SDK 进行管理。

问:什么是自定义授权命令?

自定义授权命令是 Amazon Lambda 函数。借助自定义请求授权命令,您将能够使用诸如 OAuth 之类的不记名令牌身份验证策略授予对 API 的访问权限。调用 API 后,API Gateway 会检查是否配置了自定义授权命令,然后针对传入授权令牌调用 Lambda 函数。您可以使用 Lambda 实施各种授权策略(如 JWT 验证、OAuth 提供商标注),这些授权策略可返回用于授权请求的 IAM 策略。如果授权命令返回的策略有效,API Gateway 将会缓存与传入令牌关联的策略,缓存时长为 1 小时。

问:Amazon API Gateway 能否生成要分配给第三方开发人员的 API 密钥?

是。API Gateway 可生成 API 密匙并将其与使用计划相关联。从每个 API 密钥收到的调用会受到监控,并被添加到您可以为每个阶段启用的 Amazon CloudWatch Logs 中。不过,我们建议您不要使用 API 密钥进行授权。您应使用 API 密钥来监控第三方开发人员的使用情况,并利用更强大的机制(如签名 API 调用或 OAuth)进行授权。

问:如何解决或防止 API 威胁或滥用?

Amazon API Gateway 支持对您 API 中的每种方法进行限制设置。您可以为 REST API 中的每种方法设置每秒的标准速率限制和突发速率限制。此外,Amazon API Gateway 还可自动保护您的后端系统免受分布式拒绝服务 (DDoS) 攻击,无论攻击者是通过伪造请求(第 7 层),还是通过 SYN 洪流(第 3 层)展开攻击。

问:我能否验证到是 API Gateway 在调用我的后端?

是。Amazon API Gateway 可生成一个客户端 SSL 证书,并让该证书的公共密钥对您可用。生成的证书可用于调用您的后端,而您也可使用证书的公共密钥来验证来自 Amazon API Gateway 的调用。

问:是否可以将 Amazon CloudTrail 与 Amazon API Gateway 配合使用?

是的。Amazon API Gateway 与 Amazon CloudTrail 集成,为您提供对 REST API 所执行更改的完整可审计历史记录。为了创建、修改、删除或部署 REST API 而对 Amazon API Gateway API 进行的所有 API 调用都会记录到您 亚马逊云科技 账户的 CloudTrail 中。

问:Amazon API Gateway 如何与 Amazon Virtual Private Cloud (Amazon VPC) 结合使用?

在 Amazon API Gateway 中,可以使用 VPC 链接设置 Private Integrations,从而将请求代理到 Amazon VPC 中运行的后端 HTTP/HTTPS 资源。可以使用 Amazon API Gateway 中的客户端 SSL 证书,以验证那些发送到您后端系统的请求是否由 API Gateway 使用证书的公共密钥发送。还可以在 Amazon API Gateway 中创建私有 API,只能通过 Amazon VPC 终端节点通过 Amazon VPC 中的资源访问它。

问:我是否可以限制对特定 Amazon VPC 或 VPC 终端节点的私有 API 的访问?

可以,您可以将资源策略应用到 API 以限制对特定 Amazon VPC 或 VPC 终端节点的访问。还可以使用资源策略从其他账户授予 Amazon VPC 或 VPC 终端节点访问私有 API 的权限。

管理、指标和日志记录

问:如何监控我的 Amazon API Gateway API?

Amazon API Gateway 可将 API 调用次数、延迟和错误率记录到您 亚马逊云科技 账户的 Amazon CloudWatch 中。您也可以通过 Amazon API Gateway 控制台中的 REST API 仪表板来查看这些指标。API Gateway 还会计量第三方开发人员的使用情况,在 API Gatreway 控制台中通过 API 提供这些使用数据。

问:能否为 Amazon API Gateway 指标设置警报?

能。Amazon API Gateway 会将日志记录信息和指标发送到 Amazon CloudWatch 中。您可以利用 Amazon CloudWatch 控制台来设置自定义警报。

问:如何设置 Amazon API Gateway 的指标?

默认情况下,Amazon API Gateway 会在 REST API 级别监控流量。您可以视需要通过部署配置 API 或控制台屏幕为 REST API 中的每种方法启用详细指标。详细指标还会记录到 Amazon CloudWatch 中,并按 CloudWatch 费率计费。

问:能否确定我的客户正在使用的 API 版本?

是。指标详细信息是按 REST API 和阶段进行指定的。此外,您还可以为 REST API 中的每种方法启用指标。

问:Amazon API Gateway 是否提供日志记录支持?

是。Amazon API Gateway 与 Amazon CloudWatch Logs 集成。您可以视需要为 API 中的每个阶段启用记录。对于 REST API 中的每种方法,您可以设置日志记录的详细程度,以及是否应记录完整请求和响应数据。

问:日志多快能够提供?

日志、警报、错误率和其他指标均存储在 Amazon CloudWatch 中,并且几乎是实时提供。

限制和缓存

问:如何防止我的后端系统和应用程序出现流量高峰?

Amazon API Gateway 提供了多个级别(包括全局)的限制,并按服务调用提供。您可以设置标准速率和突发速率限制。例如,API 所有者可以为其 REST API 中的特定方法设置每秒 1000 条请求的速率限制,并可将 Amazon API Gateway 配置为在几秒内每秒处理 2000 条请求的突发速率。Amazon API Gateway 会跟踪每秒的请求数量。超过限制的任何请求都会收到 429 HTTP 响应。Amazon API Gateway 生成的客户端 SDK 会在收到此响应时自动重试调用。

问:是否可以限制调用 API 的各个开发人员?

是。借助使用计划,您可以针对各个 API 密匙设置限制。

问:限制对我有什么帮助?

限制可确保 API 流量得到控制,以帮助您的后端服务保持性能和可用性。

问:Amazon API Gateway 可以在哪些级别限制传入的 API 流量?

可以在方法级别设置限制速率。您可以通过 Amazon API Gateway API 或在 Amazon API Gateway 控制台中编辑方法设置中的限制。

问:如何应用限制规则?

首先,API Gateway 会检查您的 亚马逊云科技账户限制。如果流量低于设置的账户限制,则 API Gateway 会检查您在阶段或方法上设置的限制。如果流量低于阶段限制,则 API Gateway 会应用您依据每个 API 密匙设置的使用计划限制。

问:Amazon API Gateway 是否提供 API 结果缓存?

是。您可以通过预置 Amazon API Gateway 缓存并指定其大小(以 GB 为单位),向 API 调用中添加缓存。缓存针对您 API 的特定阶段进行预置。这将提升性能并减少发送到后端的流量。借助缓存设置,您可以控制缓存密钥的构建方式,以及为每种方法存储的数据的生存时间 (TTL)。Amazon API Gateway 还公开了管理 API,可帮助您将每个阶段的缓存设为无效。

问:如果大量最终用户同时调用我的 API,会发生什么情况?

如果未启用缓存并且没有应用限制,则所有请求都将传递到您的后端服务,直至达到所设置的账户级别限制。如果实施了限制,则 Amazon API Gateway 会削减必要的请求数量,并且仅将定义的限制发送到后端服务。如果配置了缓存,则 Amazon API Gateway 将针对可自定义的时间内的重复请求返回缓存响应,但这仅限于未达到已配置限制的情况。后端与客户端之间的这种平衡可确保支持的应用程序的 API 性能最佳。限制的请求会自动由 Amazon API Gateway 生成的客户端 SDK 重试。默认情况下,Amazon API Gateway 没有针对 API 方法设置任何缓存。

问:API 如何扩展?

Amazon API Gateway 可充当您已配置的后端操作的代理。Amazon API Gateway 会自动扩展,以处理您的 API 收到的流量。Amazon API Gateway 不会随意限制对您后端操作的调用,且 Amazon API Gateway 控制台中未被限制和缓存设置拦截的所有请求都将发送到您的后端操作。

计费

问:使用 Amazon API Gateway 如何收费?

Amazon API Gateway 以每一百万 API 调用次数为单位收费,再加上传出数据的价格(以 GB 为单位)。如果您选择为 API 预置缓存,则适用小时费率。

问:对于由第三方开发人员生成的 Amazon API Gateway API 调用,应该由谁付费?

API 所有者应为 API Gateway 上对其 API 的调用付费。

问:如果缓存的数据提供了 API 响应,它是否仍会出于计费目的而被视为 API 调用?

是。论响应是由您的后端操作处理,还是由 Amazon API Gateway 缓存操作处理,API 调用都同样会出于计费目的计入账单。

了解有关 Amazon API Gateway 的更多信息

访问功能页面

用途和限制

使用本服务需遵守 亚马逊云科技 客户协议

开始使用亚马逊云科技免费构建

开始使用亚马逊云科技免费构建

关闭
热线

热线

1010 0766
由光环新网运营的
北京区域
1010 0966
由西云数据运营的
宁夏区域