在本地测试Lambda(Lambda函数调用另一个lambda函数)

时间:2017-04-27 22:51:03

标签: node.js amazon-web-services aws-lambda serverless-architecture

我正在学习节点和无服务器架构。 为了在本地测试我的lambda函数,我目前正在使用lambda-local,到目前为止一直工作正常。

现在我有一个invoke另一个lambda函数的函数,如下所示:

    let lambda = new integration.myLambda.AWS.Lambda();
    let params = {
        FunctionName: 'my-other-function',
        InvocationType: 'RequestResponse',
        LogType: 'None',
        Payload: JSON.stringify(myEvent)
    };

    return new Promise((resolve, reject) => {

        lambda.invoke(params, function (error, data) {
            if (error) {
                console.log('error on invoke', error);
                reject({
                    statusCode: HttpStatus.INTERNAL_SERVER_ERROR,
                    message: error
                });

            } else {
                console.log('invoke success', data);
                resolve(JSON.parse(data.Payload));
            }
        });

    });

这段代码在本地不起作用,但一旦部署在aws上就可以正常工作。然而,部署到aws大约需要2分钟。所以我想知道是否有办法让这些代码在本地运行。

有什么建议吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

所以我个人使用serverless作为本地的首选框架,还有一个非常有前途的atlassian项目名为localstack here - 我还没有尝试过第二个!希望这会有所帮助。

答案 1 :(得分:0)

所以我发现我需要做的就是导出:  accessKeyId和secretAccessKey。

只是为了测试将它放在你的调用调用之上的代码中。然后确保将它们放置在安全的地方。

我正在导出它们

export ACCESS_KEY_ID=yourkey

export SECRET_ACCESS_KEY=yoursecretkey

现在我正在使用docker,所以我将它们放在配置文件中。

希望这有帮助