如何在AWS Lambda函数中获取API Gatway密钥名称

时间:2019-04-08 11:13:03

标签: amazon-web-services aws-lambda aws-api-gateway

我在"Api-gateway"中创建了api,并在“方法执行设置”中将"API Key Required"设置为true,但是在lambda函数中,我仅从请求标头中获得了"apiKeyId"。是否也有办法获得apiKeyName

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

简而言之,ApiKey名称在执行的lambda中不可用。您只能使用SDK查询所有键,然后使用代码手动进行过滤。

另一方面,您也可以在自定义授权者中执行此操作,并将名称映射到调用上下文。这样,您只需编写一次代码,所有lambda都将参数作为上下文变量获取。此实现的另一个好处是,可以缓存自定义授权者的结果。

nodejs implementation of custom authorizer with apikey name mapper

答案 2 :(得分:0)

有点晚了,但这里有一种获取 API 密钥详细信息的方法,正如其他人所说,有必要获取它们。

import { APIGateway } from 'aws-sdk'
// Add the below to your handler
const apiKey = event.requestContext.identity.apiKey 
const apiKeyDetails = await new APIGateway().getApiKey({ apiKey }).promise()

现在可以获取 api 键名、标签、描述等