选择一个 API 密钥源 - Amazon API Gateway
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

选择一个 API 密钥源

在将使用计划与 API 关联并在 API 方法上启用 API 密钥时,针对 API 的传入请求必须包含 API 密钥。API Gateway 将读取密钥并将它与使用计划中的密钥进行比较。如果匹配,API Gateway 将基于计划的请求限制和配额限制请求。否则,将引发 InvalidKeyParameter 异常。作为结果,调用方将收到 403 Forbidden 响应。

您的 API Gateway API 可从下面两个源之一接收 API 密钥:

HEADER

您将 API 密钥分发给您的客户,并要求其将 API 密钥作为每个传入请求的 X-API-Key 标头传递。

AUTHORIZER

您可以让 Lambda 授权方将 API 密钥作为授权响应的一部分返回。有关授权响应的更多信息,请参阅来自 Amazon API Gateway Lambda 授权方的输出

注意

有关可考虑的最佳实践,请参阅 API 密钥和使用计划的最佳实践

使用 API Gateway 控制台为 API 选择 API 密钥源
  1. 登录 API Gateway 控制台。

  2. 选择现有 API 或者创建新 API。

  3. 在主导航窗格中,选择 API 设置

  4. API 详细信息部分中,选择编辑

  5. API 密钥源下,从下拉列表中选择 HeaderAuthorizer

  6. 选择 ‬保存更改

要使用为 API 选择 API 密钥来源 Amazon CLI,请按如下方式调用update-rest-api命令:

aws apigateway update-rest-api --rest-api-id 1234123412 --patch-operations op=replace,path=/apiKeySource,value=AUTHORIZER

要让客户端提交 API 密钥,请在以上 CLI 命令中将 value 设置为 HEADER

要使用 API Gateway REST API 为 API 选择 API 密钥源,请按以下所示调用 restapi:update

PATCH /restapis/fugvjdxtri/ HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com X-Amz-Date: 20160603T205348Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20160603/us-east-1/apigateway/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date, Signature={sig4_hash} { "patchOperations" : [ { "op" : "replace", "path" : "/apiKeySource", "value" : "HEADER" } ] }

要让授权方返回 API 密钥,请在之前的 value 输入中将 AUTHORIZER 设置为 patchOperations

请使用下列过程之一以在方法调用中使用以标头为源的 API 密钥或授权方返回的 API 密钥,具体取决于您选择的 API 密钥源类型:

使用以标头为源的 API 密钥:
  1. 使用所需的 API 方法创建 API,然后将 API 部署到某个阶段。

  2. 新建使用计划,或选择现有使用计划。将部署的 API 阶段添加到使用计划。为使用计划附加 API 密钥,或在计划中选择现有 API 密钥。请记下所选的 API 密钥值。

  3. 设置 API 方法以获得 API 密钥。

  4. 将此 API 重新部署到同一阶段。如果将此 API 部署到新阶段,请确保更新使用计划,附加新的 API 阶段。

客户端现在可以调用 API 方法,同时为 x-api-key 标头提供所选的 API 密钥作为标头值。

使用以授权方为源的 API 密钥:
  1. 使用所需的 API 方法创建 API,然后将 API 部署到某个阶段。

  2. 新建使用计划,或选择现有使用计划。将部署的 API 阶段添加到使用计划。为使用计划附加 API 密钥,或在计划中选择现有 API 密钥。请记下所选的 API 密钥值。

  3. 创建基于令牌的 Lambda 授权方。包括,usageIdentifierKey:{api-key} 作为授权响应的根级属性。

  4. 设置 API 方法以获得 API 密钥,并针对这些方法启用 Lambda 授权方。

  5. 将此 API 重新部署到同一阶段。如果将此 API 部署到新阶段,请确保更新使用计划,附加新的 API 阶段。

客户端现在可以调用获得了 API 密钥的方法,而无需明确提供 API 密钥。返回授权方的 API 密钥将自动使用。