【问题标题】:Specifying C(++) dependencies for python packages for use in AWS Lambda为在 AWS Lambda 中使用的 python 包指定 C(++) 依赖项
【发布时间】:2017-07-11 20:58:45
【问题描述】:

我有一个无服务器服务,我希望能够使用 AWS Lambda 中的 sasl pypi 包。不幸的是,AWS Lambda 环境似乎没有最新版本的 libstdc++.so,这意味着当我们的构建服务器压缩 pip install'd sasl 包并调用 lambda 时,会出现预期的错误:

Unable to import module 'handler': /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /var/task/sasl/saslwrapper.so)

我的问题是:如何解决这个问题? 有没有办法针对更新的 libstdc++.so.6 在 Amazon Linux 实例上构建这些,以便可以将其与库捆绑在一起?将LD_LIBRARY_PATH env 变量设置为. 并包含最新版本的 libstdc++.so.6 是否有效?在任何地方都有最佳实践吗?

【问题讨论】:

  • 什么是“C(++)”?
  • @LightnessRacesinOrbit c 或 c++
  • C 不使用 libstdc++.so.6。请一次专注于一种语言。 C 和 C++ 是不同的。分开。

标签: python gcc linker pip aws-lambda


【解决方案1】:

您可以使用 docker 和 amazonlinux 作为基础镜像来构建所有依赖项,然后将它们复制到您的压缩包中以上传到您的实际 lambda:https://medium.com/@johnnyopao/python-dependencies-and-aws-lambda-18acbdebca20

或者您可以在远程 EC2(构建)实例上执行等效操作:http://www.perrygeo.com/running-python-with-compiled-code-on-aws-lambda.html

最后一个选项,使用 AWS Cloud 9 作为您的 IDE,如下所示:https://markn.ca/2018/02/python-extension-modules-in-aws-lambda/

【讨论】:

【解决方案2】:

您可以简单地为 lambda 添加此自定义 gcc 版本所需的 gcc-c++ 二进制文件: https://github.com/lambci/gcc-lambda-layer

或者按照 Bluu 的回答编译您自己的图像。

【讨论】:

    【解决方案3】:

    Here's your problem:

    AWS Lambda 是适用于许多应用场景的理想计算平台,前提是您可以使用 AWS Lambda 支持的语言(即 Node.js、Java、C# 和 Python)编写应用程序代码

    你做了不该做的事。

    你也许可以破解它(我过去曾成功地从我的构建机器重新分发 libstdc++libgcc_s,将它们与我的可执行文件一起放在某个地方并确保在运行时使用 -Wl,-rpath,'$ORIGIN') 优先使用它们,但您基本上只能靠自己了。

    C++ 并非真正设计用于部署到构建它的平台以外的平台,因此除非亚马逊提供“AWS Lambda”环境来构建内容,否则您将被此类黑客所困。

    【讨论】:

    • 公平地说,我的所有代码都是 Python2.7 —— 多种语言中的一些库是或依赖于 C 和 C++ 代码/库,Python 在这里也不例外。显然,如果需要,我可以将它放在 EC2 实例上并设置轮询等以获取调用,但当我的其余服务都是 lambda 时,它看起来像一个 PITA。
    • 你可以试试pip install -b python_pkg_w_c_deps,如果有预编译的二进制文件,它会下载...
    • '除非亚马逊提供“AWS Lambda”环境'
    • @ap: shrug 我实际上是在引用官方帮助指南。他们不支持您的语言。
    猜你喜欢
    • 1970-01-01
    • 2018-09-25
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 2020-02-11
    • 1970-01-01
    • 2021-12-18
    相关资源
    最近更新 更多