API Gateway 中针对 REST API 的使用计划和 API 密钥 - Amazon API Gateway

API Gateway 中针对 REST API 的使用计划和 API 密钥

创建、测试和部署 API 后,您可以实施 API Gateway 使用计划,将它们作为面向客户的产品/服务提供。您可以配置使用计划和 API 密钥,以允许客户访问选定的 API,并根据定义的限制和配额开始对这些API的请求进行节流。这些可以在 API 或 API 方法级别设置。

什么是使用计划和 API 密钥?

一个使用计划指定谁可以访问一个或多个部署的 API 阶段和方法 — 可以选择设置目标请求速率来启动限制请求。该计划使用 API 密钥来标识 API 客户端,以及针对每个密钥对关联的 API 阶段的访问人员。

API 密钥 是字母数字字符串值,可将它分发给应用程序开发人员(要向其授予对您的 API 的访问权的客户)。您可以将 API 密钥与 Lambda 授权方IAM 角色Amazon Cognito 一起使用,以控制对 API 的访问。API Gateway 可以代表您生成 API 密钥,也可以从 CSV 文件中导入 API 密钥。您可以在 API Gateway 中生成 API 密钥,或从外部源将其导入 API Gateway。有关更多信息,请参阅 使用 API Gateway 控制台设置 API 密钥

API 密钥具有一个名称和值。(术语“API 密钥”和“API 密钥值”经常互换使用。) 名称不能超过 1024 个字符。值为一个长度在 20 到 128 个字符之间的字母数字字符串,例如,apikey1234abcdefghij0123456789

重要

API 密钥值必须是唯一的。如果您尝试使用不同的名称和相同的值来创建两个 API 密钥,API Gateway 会将它们视为同一 API 密钥。

一个 API 密钥可与多个使用计划关联。一个使用计划可与多个阶段关联。但是,对于 API 的每个阶段,给定 API 密钥只能与一个使用计划关联。

一个限制设置请求限制应该开始的目标点。这可以在 API 或 API 方法级别设置。

配额限制可设置在指定的时间间隔内提交的包含给定 API 密钥的最大目标请求数。您可以配置单独的 API 方法,要求根据使用计划配置进行 API 密钥授权。

限制和配额限制适用于跨一个使用计划内的所有 API 阶段聚合的各个 API 密钥的请求。

注意

使用计划节流和配额不是硬性限制,而是在尽力而为的基础上应用的。在某些情况下,客户端可能会超过您设置的配额。不要依靠使用计划配额或节流来控制成本或阻止对 API 的访问。考虑使用 AWS Budgets 监控成本和 AWS WAF 来管理 API 请求。

在 API Gateway 中配置使用计划和 API 密钥的步骤

以下任务概述了配置使用计划和 API 密钥所需的步骤。有关最佳实践,请参阅API 密钥和使用计划的最佳实践

配置使用计划和 API 密钥
  1. 创建一个 API 并为每个 API 方法配置方法请求,使其需要 API 密钥。然后,将 API 部署到阶段。

    要在使用计划中包括 API 方法,您必须将单独的 API 方法配置为需要 API 密钥。

    有关如何将方法配置为需要 API 密钥的更多信息,请参阅要求方法使用 API

  2. 生成或导入 API 密钥以分发给将使用您的 API 的应用程序开发人员(您的客户)。使用计划需要 API 密钥。

    有关如何生成或导入 API 密钥的更多信息,请参阅 创建 API 密钥

  3. 创建具有所需限制和配额限制的使用计划,然后将 API 阶段和 API 密钥与该使用计划关联起来。

    有关如何创建使用计划的更多信息,请参阅 创建使用计划

API 调用方必须在 API 请求的 x-api-key 标头中提供一个已分配的 API 密钥。

有关创建使用计划并将其与新阶段和 API 密钥关联起来的完整 AWS CloudFormation 模板,请参阅 使用 AWS CloudFormation 创建和配置 API 密钥和使用计划。

API 密钥和使用计划的最佳实践

以下是使用 API 密钥和使用计划时要遵循的建议的最佳实践。

重要
  • 请勿使用 API 密钥进行身份验证或授权以控制对 API 的访问权限。如果您在一个使用计划中有多个 API,则具有该使用计划中的一个 API 的有效 API 密钥的用户可以访问该使用计划中的所有 API。相反,要控制对 API 的访问权限,请使用 IAM 角色、Lambda 授权方Amazon Cognito 用户群体

  • 使用 API Gateway 生成的 API 密钥。API 密钥不应包含机密信息;客户端通常使用可记录的标头传输这些信息。

  • 如果您使用开发人员门户发布 API,请注意,给定使用计划中的所有 API 均可由客户订阅,即使您尚未向您的客户显示它们。

  • 在某些情况下,客户端可能会超过您设置的配额。不要依靠使用计划来控制成本。考虑使用 AWS Budgets 监控成本和 AWS WAF 来管理 API 请求。

  • 将 API 密钥添加到使用计划后,更新操作可能需要几分钟才能完成。