如何使用 Open JDK 11+ 作为自定义运行时执行 AWS lambda?

AWS 允许使用 (OpenJDK 8) 作为运行时创建 Lambda 函数。我需要使用创建一个简单的函数。像这样:Java 8Open 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);
    }
}

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

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


答案 1

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

这是我在GitHub上的项目:

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

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

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


答案 2

不再需要使用自定义运行时,因为 AWS Lambda 现在支持 Java 11

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

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


推荐