首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python3.6和密码模块部署AWS Lambda包

使用Python3.6和密码模块部署AWS Lambda包
EN

Stack Overflow用户
提问于 2018-01-24 08:59:23
回答 1查看 2.2K关注 0票数 3

我正在尝试部署一个AWS Lambda包。该语言是Python3.6,它包括外部模块(flask-ask,从而间接地包含cryptography)。当我这样做并测试函数时,AWS报告了错误:

代码语言:javascript
复制
No module named 'cryptography.hazmat.bindings._openssl'

我的开发环境是Windows 10,我的功能非常适合我的开发环境。我用Powershell脚本打包函数..。

代码语言:javascript
复制
& $pip install flask-ask -t $projectDir

..。然后对结果和函数进行压缩,以生成zip包。我的Python3.6的开发版本有64位比特。

问题

为什么函数在本地工作,而在打包并发送到AWS时却不起作用?少了什么?我该怎么解决这个问题。

类似问题

我发现其他人也有类似的问题:

我不喜欢切换到Python2.7。第二个只有linux开发环境的解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-14 16:16:08

在AWS Lambda开发中,我们需要了解的一个关键问题是,运行时环境不依赖于语言,是一个精简的Amazon容器。具有本机依赖项(如cryptography )的Python代码利用了特定于操作系统和体系结构的二进制文件。

当您运行pip install cryptography时,它在本地机器的上下文中工作,这意味着任何依赖的二进制文件都将根据OS风格和CPU体系结构安装。您不能打包它们并在AWS环境中运行它们。

解决方案是要么使用工具从预先打包的发行版组装依赖项(Zappa这样做),要么执行在兼容环境中安装/编译依赖项的构建步骤(AWS SAM CLI这样做)。

我个人更喜欢AWS SAM CLI,但是YMMV。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48418424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档