Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
使用 EFS 在 AWS Lambda 上安装 Python 依赖项_创想鸟

使用 EFS 在 AWS Lambda 上安装 Python 依赖项

使用 efs 在 aws lambda 上安装 python 依赖项

使用 aws lambda 时,开发人员面临的常见挑战之一是管理大型 python 依赖项。 pandas、shapely 和 geopandas 等库对于地理空间分析等任务至关重要,通常会超过 lambda 的 250 mb 解压层限制。一个实用的解决方案?将您的依赖项存储在 efs(弹性文件系统) 上并将其挂载到您的 lambda 函数。

在这篇文章中,我们将逐步介绍其设置过程,包括先决条件、主要优势和分步实施。

先决条件

这篇文章面向具有高级 aws 经验的用户。它假设您对 lambda、efs、vpc 和安全组等 aws 服务有深入的了解,并且熟悉管理基础设施和在云中部署可扩展的解决方案。
在我们深入设置之前,请确保您具备以下条件:

aws lambda 函数:您将使用 efs 配置的已部署 lambda 函数。efs 文件系统:在同一 aws 区域中创建的弹性文件系统。 efs 访问点:在同一 aws 区域中创建的 efs 访问点,根目录路径为 /data ,确保正确设置 posix 权限和目录创建权限,如下所示,1101 和 1001,次要组id 1002 和权限 0755。vpc 和网络:确保 lambda 函数与 efs 位于同一 vpc 中,并正确配置子网和安全组。iam 权限:您的 lambda 函数需要访问 efs 的权限。附加适当的策略(例如,elasticfilesystem:clientmount、elasticfilesystem:clientwrite)。

用于安装软件包的处理程序代码

处理程序直接在挂载到 aws lambda 函数的 amazon efs 存储上安装 python 依赖项。这种方法绕过了 lambda 层的大小限制,使其适用于地理空间数据处理通常需要的重依赖项,例如 pandas、geopandas 和 shapely。它确保 /mnt/data 目录中提供所需的库,供 lambda 在执行期间使用:

import osimport subprocesspackage_dir = "/mnt/data/lib/{}/site-packages/"def get_python_version_tag():    """generates a python version tag like 'python3.11'."""    return f"python{os.sys.version_info.major}.{os.sys.version_info.minor}"def install_package(package):    """installs a python package into the efs-mounted directory."""    target_dir = package_dir.format(get_python_version_tag())    os.makedirs(target_dir, exist_ok=true)    try:        subprocess.run(            [                "pip",                "install",                package,                "--target",                target_dir,                "--upgrade",                "--no-cache-dir",            ],            check=true,        )        print(f"package {package} installed successfully!")    except subprocess.calledprocesserror as e:        print(f"failed to install package {package}: {e}")def handler(event, context):    """aws lambda handler for installing packages."""    try:        # list of packages to install from the event input        packages = event.get("packages", [])        for package in packages:            install_package(package)        #optional for see packages installed        #os.system(f"ls -la {package_dir.format(get_python_version_tag())}")        return {"statuscode": 200, "body": "packages installed successfully!"}    except exception as e:        print(f"error: {e}")        return {"statuscode": 500, "body": f"an error occurred: {e}"}

测试步骤

调用 lambda 函数时,传递以下 json 负载:

{    "packages": ["requests", "pandas"]}

验证软件包安装

使用 ssh 会话或 aws cli 导航到您的 efs 挂载点(例如 /mnt/data/lib/)。
检查 site-packages/ 目录下已安装的软件包。
或者简单地使用 a 查看已安装的软件包

os.system(f"ls -la {package_dir.format(get_python_version_tag())}")

最终使用 lambda 中安装的依赖项

更新 lambda 函数的处理程序以包含安装在 efs 上的依赖项,这里的关键是将 efs 中的依赖项路径挂载到 lambda 处理程序的 pythonpath:

重要提示

所有希望使用已安装依赖项的 lambda 函数都必须将 efs 附加到 lambda。如果没有此附件,lambda 将无法访问 efs 上存储的所需依赖项。

import syssys.path.append("/mnt/data/lib/python3.11/site-packages/")  # Adjust Python version as needed# Dependencies are now available!!!import pandas as pd  def lambda_handler(event, context):    return {"message": "Dependencies loaded successfully!"}

主要优点

虽然直接在 efs 中安装 python 依赖项并不常见,但在 lambda 的默认限制(例如 250 mb 解压缩层大小)受到限制的情况下,它提供了某些优势。这种方法对于需要使用诸如 pandas、shapely 和 geopandas 等繁重库进行地理空间计算的应用程序特别有用,这些库通常超出层大小限制。

立即学习“Python免费学习笔记(深入)”;

使用 efs 进行依赖关系的好处:

绕过 lambda 层大小限制:安装和使用库,无需担心打包限制。启用大规模地理空间处理:在无服务器环境中处理复杂的空间计算。简化依赖关系管理:动态添加或更新库,无需重新部署 lambda 函数。

该解决方案非常适合高级数据处理任务,例如地理空间分析,还可以根据需要轻松扩展存储,同时保持无服务器架构的灵活性。

以上就是使用 EFS 在 AWS Lambda 上安装 Python 依赖项的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1354226.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Flask购物车数量更新失败:如何正确使用Session更新购物车商品数量?
上一篇 2025年12月13日 18:22:34
计算机视觉数据集 (2)
下一篇 2025年12月13日 18:22:51

相关推荐

发表回复

登录后才能评论
关注微信