【问题标题】:Setuptools never found on AWS Lambda从未在 AWS Lambda 上找到设置工具
【发布时间】:2016-08-13 14:08:18
【问题描述】:

我正在尝试使用 AWS Lambda 进行一些 python 包内省。

我要做的是,在 git push 上,签出一个包,安装它的依赖项(自省需要包依赖项),然后运行工具。 AWS 默认情况下没有安装 pip(你应该捆绑自己的依赖项)——所以我将 pip 与我的 lambda 函数捆绑在一起。

我的 lambda 的所有其他部分都可以工作,除了尝试安装包依赖项。尝试将我的捆绑 pip 与签出包一起使用时,尝试运行 setuptools 失败:

Collecting alembic==0.8.3 (from -r /tmp/tmpnx0tY0/requirements.txt (line 1)) 
Downloading alembic-0.8.3.tar.gz (935kB) 
Complete output from command python setup.py egg_info: 
Traceback (most recent call last): 
File "<string>", line 1, in <module> 
ImportError: No module named setuptools 
 ---------------------------------------- 
Command "python setup.py egg_info" failed with error code 1 in /tmp/tmp30m2KN/alembic

我已经尝试了所有方法:将当前路径(使用 setuptools)添加到路径,将 setuptools 复制到临时目录,运行 pip install setuptools,使用 --global-options 传递选项,尝试使用指定 @987654325 的环境 pOpen @,甚至尝试使用旧版本的 pip:pip install -r requirements.txt --download --no-install。似乎没有任何效果。

我怎样才能得到这个python setup.py egg_info 调用来成功定位setuptools?

【问题讨论】:

  • 所以你想在函数运行时在 Lambda 中安装 pip 包?
  • @birnbaum 是的。因为这种自省可能会引入任意数量的软件包,所以我无法提前知道我需要哪些依赖项。解决方案是在运行时安装,但我尝试安装时遇到了这个问题。
  • 您是在 lambda 中仅包含 pip,还是使用它打包了整个 virtualenv 目录结构?

标签: python amazon-web-services pip aws-lambda


【解决方案1】:

您是否考虑过使用 Jenkins(或任何其他 CI 工具)挂钩到您的 Git 存储库,在推送时构建存储库,然后在运行之前将打包的 lambda 及其所有依赖项上传到 S3?

在 AWS Lambdas 中,您只能将文件下载到 /tmp 文件夹,并且您有 50mb 的空间限制。这 50mb 还包括您的 lambda 函数占用的空间。 Lambda 被压缩并且不包含 pip 是有原因的。

【讨论】:

    【解决方案2】:

    我使用了 Lambda 一段时间,但我认为 Lambda 不支持它。您需要使用自己的 CI 工具(Jenkins 是一个不错的选择)。否则,您需要在本地构建它,然后使用 AWS Lambda 插件上传安装了依赖项的代码。

    【讨论】:

      猜你喜欢
      • 2012-10-17
      • 1970-01-01
      • 2020-06-16
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      • 2019-05-03
      • 1970-01-01
      相关资源
      最近更新 更多