AWS Lambda 函数计费持续时间是不是还包括使用 Lambda 容器时的 Init Duration?

Posted

技术标签:

【中文标题】AWS Lambda 函数计费持续时间是不是还包括使用 Lambda 容器时的 Init Duration?【英文标题】:AWS Lambda function Billed duration includes Init Duration as well when using Lambda container?AWS Lambda 函数计费持续时间是否还包括使用 Lambda 容器时的 Init Duration? 【发布时间】:2021-10-13 17:06:22 【问题描述】:

这是我在 AWS Cloudwatch 日志中看到的内容:

REPORT RequestId: aaaaaa-bbbb-cccc-yyyy-xxxxxxxx    Duration: 3322.91 ms    
Billed Duration: 9995 ms    Memory Size: 256 MB Max Memory Used: 137 MB 
Init Duration: 6671.44 ms   

我的问题是,为什么Billed Duration 也包含Init duration

计费持续时间(9995 毫秒)= 初始持续时间(6671.44 毫秒)+ 持续时间(3322.91 毫秒)

我正在使用基于 aws 提供的 lambda python:3.8 lambda 容器的 Lambda 容器。初始化持续时间是否包含在计费持续时间中,因为我使用的是自己的容器?

以下是容器所基于的Dockerfile:

FROM public.ecr.aws/lambda/python:3.8

COPY requirements.txt /var/task
RUN pip3 install -r /var/task/requirements.txt

COPY . .

CMD ["handler/run"]

不太相关的信息:

在容器中,我正在访问一个 api,解析结果并上传到 dynamodb。

【问题讨论】:

就我而言,持续时间不是计费持续时间和初始化持续时间的总和。使困惑。这与这篇文章中所说的相矛盾。 AWS 的人可以提供帮助,以便我们了解如何解释这些指标。报告请求 ID:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 持续时间:1379.53 毫秒计费持续时间:1380 毫秒内存大小:128 MB 使用的最大内存:82 MB 初始化持续时间:599.03 毫秒 【参考方案1】:

如果您查看 Lambda 定价详细信息文档 here - 您会在下面看到一个小星号 (*) :-)

持续时间费用适用于在函数处理程序中运行的代码 以及在外部声明的初始化代码 处理程序。

所以是的,初始化代码 (init) 也在计费中考虑。 从 Lambda 执行模型 here 可以看出,处理程序调用之前的所有内容都被认为是 init 阶段的一部分。

【讨论】:

@Shailedra,感谢您的回复。我只是通过第二次运行容器进行了交叉检查,它只为函数调用的“持续时间”而不是初始化计费,因为它可能仍然很热! @Gru 是的,因为它仍然处于热身状态。 AWS 提供的“预置并发”功能允许您在接收流量之前准备执行环境,从而摆脱高初始化时间。

以上是关于AWS Lambda 函数计费持续时间是不是还包括使用 Lambda 容器时的 Init Duration?的主要内容,如果未能解决你的问题,请参考以下文章

AWS AutoScaling 是不是有可能在计费时间界限之前从不终止实例?

如何将 Python Lambda 函数集成到 AWS Amplify 的管道中

使用 AWS Lambda 的 Discord 机器人

AWS Appsync 从 Lambda 调用变异?

如何在AWS Lambda中调整Java Garbage收集器

AWS Lambda 配合Jenkins实现自动化持续部署