【问题标题】:AWS Serverless: Force parallel lambda execution based on request or HTTP API parametersAWS Serverless:根据请求或 HTTP API 参数强制并行执行 lambda
【发布时间】:2020-09-24 23:02:03
【问题描述】:

有没有办法强制 AWS 在某个执行环境中执行来自 API Gateway 资源的 Lambda 请求?我们在一个用例中使用一个代码库,其中包含 100-300mb 的各种模型,因此它们本身足够小以适合临时存储,但太大而无法很好地协同工作。

目前,使用不同模型的第二次调用将使用现有的(预热的)lambda 函数,并耗尽存储空间。

我希望将类似参数的东西附加到请求中,强制 lambda 为每个模型创建相同函数的并行版本,这样我们就不会超过 512 MB 限制并优化冷-启动时间,理想情况下无需重复该功能并且不必在多个位置维护该功能。

我曾尝试调查 Step Machines,但我不确定那里是否有基于参数的条件的选项。 AWS 建议使用 EFS 来规避临时存储限制,但据我所知,使用 EFS 会比从临时 /tmp/ 目录读取要慢得多。

【问题讨论】:

    标签: amazon-web-services aws-lambda serverless


    【解决方案1】:

    据我所知:没有。您无法控制执行环境。你唯一能做的就是限制并发执行。

    因此,您永远不知道,是单个 Lambda 服务于您从 API Gateway 触发的所有事件,还是多个并行运行的事件。您也无法控制哪个执行环境正在处理下一个请求。

    如果您的问题是 AWS Lambda 的 /temp 目录限制,为什么不尝试 EFS?

    【讨论】:

    • 感谢您的快速回复!我担心 EFS 会减慢速度,因为读取速度比从 /tmp/ 读取慢很多(根据一些基准测试)?复制到 /tmp/ 的冷启动惩罚是我们只会产生一次的,而每次函数执行时都会产生缓慢的读取。
    • @T.Altena 好的,没有 EFS。弹性疼痛呢?
    • 所以在亚马逊的支持下反复多次后,事实证明是这样的。在我的场景中,我现在选择使用无服务器来部署具有相同代码库但不同 Web API 的并发函数,这样我们就不会超出存储限制。
    • @T.Altena 感谢您的反馈!
    猜你喜欢
    • 1970-01-01
    • 2018-03-22
    • 2018-09-01
    • 2017-10-19
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多