gpt4 book ai didi

aws-lambda - 如何最小化 lambda 函数的权重?

转载 作者:行者123 更新时间:2023-12-04 13:23:39 25 4
gpt4 key购买 nike

我正在尝试使用 AWS (lambda + s3 + apiGateway) 构建一个微服务 API,我注意到我所有的 lambda 都具有相同的权重,所以看起来我正在将整个项目上传到每个 lambda 而不是所需的资源。


enter image description here

有什么方法可以只上传每个功能所需的资源吗?这会最小化执行时间吗?值得这样做吗?

最佳答案

将分两部分回答:

(1) 强制性的“你为什么关心?”

我问这个是因为我也很担心。但是经过测试,上传的包的大小(lambda 分发包的 lib 文件夹中的 jars)似乎并没有真正影响任何预期的初始上传时间(或者如果你走那条路,可能是 S3 使用).

为了理智起见,我没有一堆 nano 项目和包,而是有一个 Java Lambda API 模块,然后我为每个 Lambda 上传相同的工件。

在某些时候,如果出于任何原因(微服务架构、代码分离等)分离是有意义的,那么我计划分离。

话虽如此,似乎真正影响基于 Java 的 lambda 的一件事是类加载时间。你提到你使用 Spring。我建议您不要使用 Spring 配置加载,因为您最终可能会执行一堆您根本不需要的代码。

请记住,理想情况下,您的 lambda 应该在 100 毫秒范围内。我有一个案例,我正在使用 AWS SDK 并初始化 AWSClient 需要 13 秒! (13000 毫秒)。当我切换到使用 Node 的 Python 时,它变成了 56ms...

请记住,您是按时间收费的,1000 倍可不是闹着玩的:)

(2) 如果您决定拆分,我建议您将 gradle 分发插件与子项目一起使用,以使每个子项目和子项目 zip 分发“轻松”。我沿着这条路走下去,但意识到我真的会很好地拆分我的组件……而且我要么在项目之间复制配置。或者,如果我创建了一个项目依赖项,我最终只会再次捆绑整个依赖项树。

如果您已经知道需要挑选什么而不依赖 gradle/maven 来为您处理依赖项,则可以创建 gradle zip 任务来创建不同的 Lambda 分发包。

AWS 文档:http://docs.aws.amazon.com/lambda/latest/dg/create-deployment-pkg-zip-java.html

关于aws-lambda - 如何最小化 lambda 函数的权重?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44782208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com