为什么不同运行时的 AWS lambda 计费不同?

Why AWS lambda billing differ for different runtimes?

我正在测试具有两种不同运行时的应用程序:node.js 和 java 本机可执行文件(提前使用 GraalVM 编译)。

这是启动日志。

Node.js:

Duration: 556.31 ms Billed Duration: 600 ms Memory Size: 128 MB Max Memory Used: 81 MB Init Duration: 365.44 ms

本机可执行文件:

Duration: 548.98 ms Billed Duration: 1000 ms Memory Size: 256 MB Max Memory Used: 106 MB Init Duration: 411.83 ms

如您所见,DurationInit duration 非常接近,但由于某些原因 Billed Duration 几乎是具有本机可执行文件的自定义运行时的 2 倍。

你能解释一下有什么区别吗?我该如何避免这种情况?

对于自定义运行时,您需要为初始化时间付费,并在 docs -

中提及

"Initialization counts towards billed execution time and timeout. When an execution triggers the initialization of a new instance of your function, you can see the initialization time in the logs and AWS X-Ray trace."

548.98 毫秒(函数持续时间)+ 411.83 毫秒(初始化)= 960.81 毫秒四舍五入到下一个 100 毫秒,导致计费持续时间:1000 毫秒

对于Lambda支持的运行时;初始时间不计入计费持续时间。