【问题标题】:Can I use WebWorkers in AWS Lambda (node 6.10)我可以在 AWS Lambda(节点 6.10)中使用 WebWorkers
【发布时间】:2023-03-21 04:52:01
【问题描述】:

我在 AWS lambda 中有一个我想要的非常简单的节点模块,并且它导入了“自然”以进行一些文本处理。

这行抛出错误: var n = require('natural');

错误是这样的:

{
  "errorMessage": "/var/task/node_modules/webworker-threads/build/Release/WebWorkerThreads.node: invalid ELF header",
  "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)",
    "bindings (/var/task/node_modules/bindings/bindings.js:76:44)",
    "Object.<anonymous> (/var/task/node_modules/webworker-threads/index.js:1:105)",
    "Module._compile (module.js:570:32)"
  ]
}

它返回一个

{
  "message": "Internal server error"
}

AWS lambda 不运行网络工作者吗?我试过用 nvm 6.10 完全编译并重建 zip 文件,但无济于事。我还需要在 zip 中包含其他内容以确保 aws lambda env 支持 webworker 模块吗?

编辑:(已解决) 我写了一篇很长的教程和博客,其中包含了 dockerize Native 编译过程的代码。

https://medium.com/@james_mtc/how-to-unsuck-aws-lambdas-native-compilation-for-nodejs-functions-with-docker-and-bash-5301a26a19b1

【问题讨论】:

    标签: node.js amazon-web-services aws-lambda aws-sdk web-worker


    【解决方案1】:

    You need to build the native modules on an Amazon AMI 使用静态库而不是共享/动态库。对于某些包来说,将模块从共享更改为静态可能并非易事。

    原生模块的安装和部署方式类似,但您需要 针对 Amazon Linux 库构建它们。你需要 要么确保库及其传递依赖项是 静态编译或使用 rpath 风格的链接;我们会做静态的 方式在这篇文章中,并在后续文章中演示 rpath 的使用。 (请注意,许多(但不是全部)库可以静态链接 方式。)

    【讨论】:

      猜你喜欢
      • 2018-07-17
      • 1970-01-01
      • 2021-06-05
      • 2017-12-12
      • 2022-01-17
      • 2016-02-14
      • 2017-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多