【问题标题】:How to load dependencies from an s3 bucket AND a separate event JSON?如何从 s3 存储桶和单独的事件 JSON 加载依赖项?
【发布时间】:2020-07-14 21:28:19
【问题描述】:

我的 AWS Lambda 函数的依赖项大于允许的限制,因此我将它们上传到 s3 存储桶。我已经了解了如何将 s3 存储桶用作 Lambda 函数的事件,但我需要将这些包结合与单独的事件一起使用。 s3 存储桶仅包含 python 模块(numpynltk 等)不是在 Lambda 函数中使用的事件数据。

我该怎么做?

【问题讨论】:

    标签: python amazon-web-services amazon-s3 aws-lambda dependencies


    【解决方案1】:

    事件数据将来自您配置的任何事件源。有关 S3 事件源,请参阅文档 here

    至于依赖项本身,您必须压缩整个代码库(代码 + 依赖项)并将其用作部署包。您可以在文档中找到详细说明。供参考,这里是NodeJSPython

    Protip:管理依赖项的更好方法是使用 Lambda 层。您可以创建一个包含所有依赖项的层,然后将其添加到使用这些依赖项的函数中。阅读更多关于它的信息here

    如果您的依赖项仍高于 AWS Lambda 的 512MB 硬限制,您可以考虑将 AWS Elastic File System 与 Lambda 结合使用。

    现在,您基本上可以将网络存储附加到您的 lambda 函数。我个人使用它来加载超出 Lambda 文件存储限制的巨大参考文件。有关演练,您可以参考 AWS 的这篇文章。从文章中得出结论:

    EFS for Lambda 允许您跨函数调用共享数据、读取大型参考数据文件并将函数输出写入持久和共享存储。配置 EFS 后,您向 Lambda 函数提供访问点 ARN,允许您读取和写入此文件系统。 Lambda 将函数实例安全地连接到同一可用区和子网中的 EFS 挂载目标。

    您可以阅读阅读公告here

    编辑 1:为 lambda 信息添加了 EFS。

    【讨论】:

    • 我将它们转储到 s3 的原因是因为我的依赖 zip 文件太大了。在 s3 中,我有更大的存储限制。我可以在这里访问依赖项是我的问题。我尝试使用 Lambda 层,但我的文件仍然太大。
    • @DesiPilla,如果它们在 S3 上,则不能“使用”依赖项。在使用它们时,您仍然必须将它们传递给 Python 解释器。我已经用一个可能的解决方案更新了答案,以获得 512MB AWS lambda 存储限制。
    • @DesiPilla,如果答案确实解决了您的问题,您介意接受吗。这样,其他偶然发现此问题的人可以轻松找到解决方案。干杯。
    • 抱歉,我直到今天才在我的项目中实现 EFS。它已经解决了我的问题,谢谢!
    • 一个有用的答案,拯救了我的一天。
    猜你喜欢
    • 2022-09-23
    • 2018-07-25
    • 2018-09-30
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 2021-07-24
    相关资源
    最近更新 更多