【问题标题】:Test Lambda Locally (Lambda function calling another lambda function)本地测试 Lambda(Lambda 函数调用另一个 lambda 函数)
【发布时间】:2017-04-27 22:51:02
【问题描述】:

我正在学习节点和无服务器架构。 为了在本地测试我的 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 年的 AWS Lambda 经验 - 我假设您希望在本地运行它们以便对它们进行单元测试。有几种方法可以在本地对 AWS Lambda 进行单元测试。在这篇文章中,他们描述了我一直在使用的一个,我可以推荐:blog.atomdata.io/…
  • 我目前处于类似情况......你有没有找到一种方法来做到这一点?谢谢!

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    我正在导出它们

    export ACCESS_KEY_ID=yourkey
    
    export SECRET_ACCESS_KEY=yoursecretkey
    

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

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-05
      • 1970-01-01
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      相关资源
      最近更新 更多