在将使用计划与 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 密钥作为授权响应的一部分返回。有关授权响应的更多信息,请参阅来自 API Gateway Lambda 授权方的输出。
注意
有关可考虑的最佳实践,请参阅 API 密钥和使用计划的最佳实践。
使用 API Gateway 控制台为 API 选择 API 密钥源
-
登录 API Gateway 控制台。
-
选择现有 API 或者创建新 API。
-
在主导航窗格中,选择 API 设置。
-
在 API 详细信息部分中,选择编辑。
-
在 API 密钥源下,从下拉列表中选择
Header
或Authorizer
。 -
选择 Save changes(保存更改)。
使用以下 update-rest-api 命令更新 API,将 API 密钥源设置为 AUTHORIZER
:
aws apigateway update-rest-api --rest-api-id 1234123412 --patch-operations op=replace,path=/apiKeySource,value=AUTHORIZER
要让客户端提交 API 密钥,请在以上命令中将 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
。