我在"Api-gateway"
中创建了api,并在“方法执行设置”中将"API Key Required"
设置为true,但是在lambda函数中,我仅从请求标头中获得了"apiKeyId"
。是否也有办法获得apiKeyName
?
答案 0 :(得分:0)
apiGatway API referance
或使用aws CLI
来获取密钥的名称
Amazon API Gateway REST API Reference
要么
AWS CLI command referance 答案 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 键名、标签、描述等