如何从 s3 存储桶和单独的事件 JSON 加载依赖项?
How to load dependencies from an s3 bucket AND a separate event JSON?
我的 AWS Lambda 函数的依赖项大于允许的限制,因此我将它们上传到 s3 存储桶。我已经了解了如何将 s3 存储桶用作 Lambda 函数的事件,但我需要将这些包 结合 与单独的事件一起使用。 s3 存储桶仅包含 python 个模块(numpy
、nltk
等)而非 Lambda 函数中使用的事件数据。
我该怎么做?
事件数据将来自您配置的任何事件源。有关 S3 事件源,请参阅文档 here。
至于依赖项本身,您必须压缩整个代码库(代码 + 依赖项)并将其用作部署包。您可以在文档中找到详细说明。作为参考,这里是 NodeJS and Python.
提示:管理依赖项的更好方法是使用 Lambda 层。您可以创建一个层来处理所有依赖项,然后将其添加到使用这些依赖项的函数中。阅读更多相关信息 here。
如果您的依赖项仍然高于 AWS Lambda 的 512MB 硬限制,您可以考虑将 AWS Elastic File System 与 Lambda 结合使用。
有了这个,您现在基本上可以将网络存储附加到您的 lambda 函数。我个人用它来加载超过 Lambda 文件存储限制的巨大参考文件。有关演练,您可以参考 AWS 的这篇文章。从文章中挑选结论:
适用于 Lambda 的 EFS 允许您跨函数调用共享数据、读取大型参考数据文件以及将函数输出写入持久共享存储。配置 EFS 后,您可以为 Lambda 函数提供访问点 ARN,从而允许您读取和写入该文件系统。 Lambda 将函数实例安全地连接到同一可用区和子网中的 EFS 挂载目标。
您可以阅读阅读公告here
编辑 1:为 lambda 信息添加了 EFS。
我的 AWS Lambda 函数的依赖项大于允许的限制,因此我将它们上传到 s3 存储桶。我已经了解了如何将 s3 存储桶用作 Lambda 函数的事件,但我需要将这些包 结合 与单独的事件一起使用。 s3 存储桶仅包含 python 个模块(numpy
、nltk
等)而非 Lambda 函数中使用的事件数据。
我该怎么做?
事件数据将来自您配置的任何事件源。有关 S3 事件源,请参阅文档 here。
至于依赖项本身,您必须压缩整个代码库(代码 + 依赖项)并将其用作部署包。您可以在文档中找到详细说明。作为参考,这里是 NodeJS and Python.
提示:管理依赖项的更好方法是使用 Lambda 层。您可以创建一个层来处理所有依赖项,然后将其添加到使用这些依赖项的函数中。阅读更多相关信息 here。
如果您的依赖项仍然高于 AWS Lambda 的 512MB 硬限制,您可以考虑将 AWS Elastic File System 与 Lambda 结合使用。
有了这个,您现在基本上可以将网络存储附加到您的 lambda 函数。我个人用它来加载超过 Lambda 文件存储限制的巨大参考文件。有关演练,您可以参考 AWS 的这篇文章。从文章中挑选结论:
适用于 Lambda 的 EFS 允许您跨函数调用共享数据、读取大型参考数据文件以及将函数输出写入持久共享存储。配置 EFS 后,您可以为 Lambda 函数提供访问点 ARN,从而允许您读取和写入该文件系统。 Lambda 将函数实例安全地连接到同一可用区和子网中的 EFS 挂载目标。
您可以阅读阅读公告here
编辑 1:为 lambda 信息添加了 EFS。