【问题标题】:c++ error in AWS lambda?AWS lambda中的c ++错误?
【发布时间】:2018-05-23 08:05:25
【问题描述】:

我有一个 lambda 表达式,可以很好地与 localhost 上的无服务器配合使用。

但是使用 lambda 进行部署时,出现以下错误:

"errorMessage": "/var/lang/lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /var/task/node_modules/scrypt/build/Release/scrypt.node)",
  "errorType": "Error",
  "stackTrace": [
    "Module.load (module.js:487:32)",
    "tryModuleLoad (module.js:446:12)",
    "Function.Module._load (module.js:438:3)",
    "Module.require (module.js:497:17)",
    "require (internal/module.js:20:19)",
    "Object.<anonymous> (/var/task/node_modules/scrypt/index.js:3:20)",
    "Module._compile (module.js:570:32)",
    "Object.Module._extensions..js (module.js:579:10)",
    "Module.load (module.js:487:32)",
    "tryModuleLoad (module.js:446:12)",
    "Function.Module._load (module.js:438:3)",
    "Module.require (module.js:497:17)",
    "require (internal/module.js:20:19)",
    "Object.<anonymous> (/var/task/node_modules/scrypt.js/node.js:1:76)",
    "Module._compile (module.js:570:32)",
    "Object.Module._extensions..js (module.js:579:10)",
    "Module.load (module.js:487:32)",
    "tryModuleLoad (module.js:446:12)",
    "Function.Module._load (module.js:438:3)",
    "Module.require (module.js:497:17)"
  ]

我还没有找到任何关于这方面的信息,那么,有人可以提供这方面的帮助吗?

【问题讨论】:

    标签: c++ amazon-web-services aws-lambda serverless-framework serverless


    【解决方案1】:

    根据AWS documentation

    原生模块的安装和部署方式类似,但您需要 根据 Amazon Linux 库构建它们。

    因此,启动一个 EC2 实例,在那里构建您的项目,将其压缩,然后将其上传到 Lambda。您使用的 Amazon Linux AMI 似乎有所不同……可能是因为它们是不同的架构或具有不同的库版本或其他东西。就我而言(使用 x509 模块构建 NodeJS 项目),Amazon Linux 2 AMI (ami-922914f7) 不起作用;它导致了与您的错误非常相似的错误。如果您尝试这个但它不起作用,请尝试在原始 Amazon Linux AMI (ami-2a0f324f) 上重新构建它。在我这样做之后,它在 Lambda 中完美运行。

    感谢 @Tommaso 提供此解决方案背后的灵感。

    【讨论】:

      【解决方案2】:

      当您在具有不同架构的系统上打包节点依赖项时会发生这种情况(由于某些依赖项具有在您的系统中编译的与 AWS Lambda 不同的本机代码)

      运行 docker run -v "$PWD":/var/task lambci/lambda:build-nodejs6.10 而不是 npm install 以在类似 AWS Lambda 的环境中设置依赖项,然后再打包模块,然后再将其上传到 AWS。

      【讨论】:

        猜你喜欢
        • 2022-11-25
        • 2017-02-11
        • 1970-01-01
        • 2020-03-20
        • 2018-01-21
        • 2018-08-21
        • 2021-05-04
        • 2018-02-28
        • 1970-01-01
        相关资源
        最近更新 更多