繁体   English   中英

如何在aws中获取api网关密钥名称 lambda function

[英]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都将参数作为上下文变量获取。 此实现的另一个好处是,可以缓存自定义授权者的结果。

具有apikey名称映射器的自定义授权者的nodejs实现

基于上面的答案,我发现我可以使用以下代码来实现它:

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;

有点晚了,但这里有一种获取 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM