![](/img/trans.png)
[英]AWS API gateway not passing data into lambda function upon invocation
[英]How to get api gateway key name in aws lambda function
我在"Api-gateway"
中创建了 api,并在方法执行设置中将"API Key Required"
设置为 true,但是在 lambda function 中,我只从请求 header 中获取了"apiKeyId"
。还有什么方法可以获取apiKeyName
吗?
简而言之,ApiKey名称在执行的lambda中不可用。 您只能使用SDK查询所有键,然后使用代码手动进行过滤。
另外,您也可以在自定义授权器中执行此操作,并将名称映射到调用上下文。 这样,您只需编写一次代码,所有lambda都将参数作为上下文变量获取。 此实现的另一个好处是,可以缓存自定义授权者的结果。
基于上面的答案,我发现我可以使用以下代码来实现它:
const APIGateway = require("aws-sdk").APIGateway;
const apiKeyId = event.requestContext.identity.apiKeyId;
const apiKeyDetails = await new APIGateway().getApiKey({apiKey:apiKeyId}).promise();
const apiKeyName = apiKeyDetails.name;
apiGatway API referance
或使用aws CLI
来获取密钥Amazon API Gateway REST API参考或AWS CLI命令 参考的名称有点晚了,但这里有一种获取 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 键名、标签、描述等。
使用 AWSSDK.APIGateway for.Net:
var getMethodRequest = new GetApiKeysRequest() { NameQuery = "SomeName" };
var getMethodResponse = await apiGatewayClient.GetApiKeysAsync(getMethodRequest);
return getMethodResponse.Items != null && getMethodResponse.Items.Any() && getMethodResponse.Items[0].Name == "SomeName";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.