首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取Lambda函数的API网关端点

获取Lambda函数的API网关端点
EN

Stack Overflow用户
提问于 2017-07-29 15:17:45
回答 1查看 1.7K关注 0票数 0

我有一个Lambda函数,它有一个API网关触发器。我想以编程的方式获得它是什么API以及资源路径是什么。以下是我到目前为止所掌握的一些代码。

代码语言:javascript
复制
let params = {
    FunctionName: "myFunctionName"
};

// Get policies for this function
lambda.getPolicy(params, (err, data) => {
    if (err) return console.log(err);
    let apiIds = [];
    let statements = JSON.parse(data.Policy).Statement;
    // Look for ARNs that have an API ID attached to them
    statements.forEach((statement) => {
        let sourceArn = statement.Condition && statement.Condition.ArnLike && statement.Condition.ArnLike["AWS:SourceArn"];
        let apiIdMatch = sourceArn.match(/\d{12}:([0-9a-zA-Z]*)\//);
        let apiId = apiIdMatch[1];
        if (statement.Effect === "Allow") { // Probably need to be more selective here
            // Check if this resource is actually an API or if it's something else
            apigateway.getRestApi({ restApiId: apiId }, (err, data) => {
                if (err) return; // Not a real API, look for another
                // This is a real API? I think I still need the endpoint/resource path
            });
        }
    });
});

看起来应该有比这更简单的方法,所以我想知道我是否采取了正确的方法。

注意:对于上下文,我正在寻找一种测试API端点的方法,这些端点作为我的Lambda函数的触发器附加,因此从事件中获取资源路径不是一种选择。此外,我正在寻找一种在没有任何额外映射或配置的情况下这样做的方法。

EN

回答 1

Stack Overflow用户

发布于 2017-07-29 20:31:19

如果您正在使用Lambda代理集成,则API网关将此内容传递给您的lambda函数如下:

代码语言:javascript
复制
 event.requestContext.resourcePath
 event.requestContext.apiId

i.e

代码语言:javascript
复制
exports.handler = function(event, context, callback){
    var path = event.requestContext.resourcePath,         
    var apiId = event.requestContext.apiId
   //...
}

如果不使用代理集成,则可以在application/json的API控制台中设置一个集成映射,在映射模板中设置如下内容:

代码语言:javascript
复制
{"resourcePath" : "$context.resourcePath",
 "apiId": "$context.apiId"
}

那么您的函数应该可以使用event.resourcePathevent.apiId

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45390851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档