【问题标题】:How to execute AWS lambda with Open JDK 11+ as custom runtime?如何使用 Open JDK 11+ 作为自定义运行时执行 AWS lambda?
【发布时间】:2019-07-09 11:56:48
【问题描述】:

AWS 允许使用 Java 8 (OpenJDK 8) 作为运行时创建 Lambda 函数。 我需要使用Open JDK 11 创建一个简单的函数。类似的东西:

package example;

import com.amazonaws.services.lambda.runtime.Context; 
import com.amazonaws.services.lambda.runtime.LambdaLogger;

public class Hello {
    public String myHandler(int myCount, Context context) {
        LambdaLogger logger = context.getLogger();
        logger.log("received : " + myCount);
        return String.valueOf(myCount);
    }
}

有一个选项允许使用自定义运行时和 tutorial,其中包含一个带有 Shell 的示例。但是,Java 没有示例。

是否有人已经使用自定义 java 运行时处理 AWS lambda?

【问题讨论】:

    标签: java amazon-web-services aws-lambda java-11 openjdk-11


    【解决方案1】:

    我也很好奇为什么我们还没有看到任何用于 Java 的自定义运行时,所以大约一个月前,我开始尝试使用 Jigsaw 在 Java 11 中构建一个以生成小型运行时的想法。虽然它不完全是一个教程,但我确实写了一个关于如何构建它的相当详细的自述文件,并且代码很简单,可以遵循。

    这是我在 GitHub 上的项目:

    https://github.com/andthearchitect/aws-lambda-java-runtime

    我最近刚刚发布了这个,它肯定是一个 POC,所以使用风险自负。

    Corretto 似乎很有趣,但我猜仍然会有人对 OpenJDK 官方版本更满意。我希望这也许可以成为 Java 生产就绪的开源运行时的起点。

    【讨论】:

    • 我还写了一篇博文,讨论了自定义运行时的总体情况以及我创建它的原因。这不是一个教程,因为我觉得它会重复 GitHub 自述文件中的很多内容。但它确实涉及到运行时的细节:andthearchitect.wordpress.com/2019/02/20/…
    【解决方案2】:

    不再需要像AWS Lambda now supports Java 11那样使用自定义运行时。

    但是,使用此运行时的 Lambda 函数将使用 Amazon Corretto 11 而不是 OpenJDK 11 运行。

    如果您希望使用 OpenJDK 11 而不是 Corretto 11 运行 Lambda 函数,那么仍然建议使用自定义运行时。

    【讨论】:

      【解决方案3】:

      作为 Arun Gupta said,他们正在开发对应于 Open JDK 11Corretto 11 版本,并将随时间发布以进行测试2019 年 4 月之前...

      但是,仍然可以添加 custom runtime,它允许“以任何编程语言实现 AWS Lambda 运行时”。

      官方 AWS 文档中没有 JDK 11 的示例,但我找到了一个项目,它使用 25MB 的自定义运行时,从 JDK 11 构建,jlink。你可以看看这个link

      【讨论】:

        【解决方案4】:

        我怀疑你还能做到这一点。根据 AWS:

        “我们正在开发与 Open JDK 11 对应的 Corretto 11 版本,并将在 2019 年 4 月之前发布测试。”

        https://forums.aws.amazon.com/thread.jspa?messageID=875742&tstart=0 https://aws.amazon.com/blogs/opensource/amazon-corretto-no-cost-distribution-openjdk-long-term-support/

        【讨论】:

        • 完全可以使用自定义运行时,您可以用任何语言实现运行时 API。请参阅下面的答案。
        • Lambda 支持自定义运行时。
        猜你喜欢
        • 2019-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多