首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AWS Lambda呼叫Lambda

AWS Lambda呼叫Lambda
EN

Stack Overflow用户
提问于 2018-04-06 12:56:56
回答 1查看 184关注 0票数 1

我试图从另一个函数中调用一个Lambda函数。我设置了权限,这样就没有问题了。

我的问题是,函数不会一直等待调用函数完成并返回NULL。

下面是我使用的代码:

代码语言:javascript
运行
复制
const AWS = require('aws-sdk');

exports.handler = async (event, context, callback) => {

    var lambda = new AWS.Lambda({region: 'us-east-1', apiVersion: '2015-03-31'});

    var params = {
        FunctionName: 'testFunction',
        InvocationType: 'RequestResponse'
    }
    lambda.invoke(params, function(err, data){
        console.log(err);
        console.log('here');
    }).promise().then(data=> { callback(null, {message:'done'}); });

};

{message:'done'}从来没有显示过。建议我使用invokeAsync,但AWS不推荐使用该函数。

我知道问题在于该函数以同步方式运行lambda.invoke,因为如果在lambda.invoke函数之外添加callback(null, {message:'done'});,则可以看到console.logs正常工作。

有什么帮助吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-21 19:19:04

TL;DR -删除第3行中的“异步”,它应该可以工作。

您的问题似乎是由这里的异步关键字引起的。我重新创建了这个函数,并将其部署到Lambda,以便在Nodev8.10上运行(当然,指向它可以调用我自己的lambda函数之一)。

你为什么在这里使用“异步”?异步关键字声明定义一个异步函数并返回一个AsyncFunction对象。AWS应该是一个函数,而不是AsyncFunction,您的"null“结果可能就是Lambda立即放弃,因为它找不到一个常规函数。而且,async几乎完全与await一起使用(至少在我见过的99%的情况下是这样),而且由于您的代码根本没有使用await,所以我也看不到使用async的任何理由。

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

https://stackoverflow.com/questions/49693346

复制
相关文章

相似问题

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