有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带有JDK包的java AWS NodeJS lambda函数

AWS NodeJS lambda函数和JDK包

我正在尝试将数据库驱动程序(Sybase驱动程序)与AWS NodeJS lambda一起使用。 这个驱动程序使用JConnect,JConnect在运行时需要JDK。 但似乎AWS Lambda for NodeJS并没有随Java运行时提供。它正在失败,出现以下错误

{
    "errorType": "Error",
    "errorMessage": "spawn java ENOENT",
    "code": "ENOENT",
    "errno": -2,
    "syscall": "spawn java",
    "path": "java",
    "spawnargs": [
        "-jar",
        "/var/task/node_modules/sybase-fork/JavaSybaseLink/dist/JavaSybaseLink.jar",
 // othe args
    ],
    "stack": [
        "Error: spawn java ENOENT",
        "    at Process.ChildProcess._handle.onexit (internal/child_process.js:269:19)",
        "    at onErrorNT (internal/child_process.js:467:16)",
        "    at processTicksAndRejections (internal/process/task_queues.js:82:21)"
    ]
}

有人试过从AWS Lambda中的节点派生java进程吗


共 (1) 个答案

  1. # 1 楼答案

    AWS Lambda运行时应该是高性能、低延迟和最小的。这就是为什么他们在Firecracker MicroVM上用OSv micro kernel运行的原因。将数百兆字节未使用的运行时打包到它们中会适得其反

    这意味着提供的NodeJS运行时将不包含任何Java、Python等,如果您需要其中任何一种,这显然是次优的

    目前,您最好使用Docker映像创建自己的自定义运行时

    您可以在此处找到相关的AWS文档:

    https://docs.aws.amazon.com/lambda/latest/dg/images-create.html

    您可以从official NodeJS docker image开始,然后安装所需的Java版本以及可能需要的任何其他依赖项


    个人提示:如果此Lambda位于应用程序的关键路径上(例如,用户在web应用程序中等待响应),则应确保映像尽可能小,以减少冷启动时间。这是进一步恶化的事实,您正试图用Java做一些事情,这可能是AWS Lambda世界上最糟糕的冷启动时间。如果可能的话,我会寻找其他选项,比如使用Goofficial Sybase (ASE) driver