gpt4 book ai didi

python - AWS Lambda 未检测到 pyopenssl

转载 作者:行者123 更新时间:2023-11-28 16:27:06 24 4
gpt4 key购买 nike

我有一个使用 oauth2clientSignedJwtAssertionCredentials 的 AWS Lambda 函数。

我已经在我的 Lambda 函数目录的本地(根)安装了我的要求。

requirements.txt

boto3==1.2.5
gspread==0.3.0
oauth2client==1.5.2
pyOpenSSL==0.15.1
pycrypto==2.6.1

我的 lambda 函数如下所示:

import boto3
import gspread
from oauth2client.client import SignedJwtAssertionCredentials

def lambda_handler(event, context):
dynamodb = boto3.resource('dynamodb')
scope = ['https://spreadsheets.google.com/feeds']

private_key = "!--some-private-key"
google_email = "some-email"
credentials = SignedJwtAssertionCredentials(google_email, private_key, scope)
gc = gspread.authorize(credentials)

但是,当运行它时,我得到以下堆栈跟踪:

{
"stackTrace": [
[
"/var/task/lambda_function.py",
20,
"lambda_handler",
"credentials = SignedJwtAssertionCredentials(google_email, private_key, scope)"
],
[
"/var/task/oauth2client/util.py",
140,
"positional_wrapper",
"return wrapped(*args, **kwargs)"
],
[
"/var/task/oauth2client/client.py",
1630,
"__init__",
"_RequireCryptoOrDie()"
],
[
"/var/task/oauth2client/client.py",
1581,
"_RequireCryptoOrDie",
"raise CryptoUnavailableError('No crypto library available')"
]
],
"errorType": "CryptoUnavailableError",
"errorMessage": "No crypto library available"
}

根据我在网上阅读的所有内容,我被告知需要安装 pyopenssl。但是,我已经安装了那个和 pycrypto。

有什么我想念的吗?

最佳答案

看起来这个问题有点老了,但如果你还在寻找答案:

发生这种情况是因为 pyopenssl 的一个或多个依赖项是 native 包或具有未针对目标平台编译的 native 绑定(bind)(加密是 pyopenssl 的依赖项并且依赖于 libssl)。

不幸的是,获取编译版本的过程各不相同。最简单的方法(仅当平台不同且不缺少 .so 库时才有效)是:

  1. 创建一个 ec2 主机(使用 t2.micro 和 AWS AMI Image)
  2. 安装python和virtualenv
  3. 创建一个虚拟环境
  4. 安装目标库
  5. 压缩 virtualenv virtualenv/site-packages 和 virtualenv/dist-packages 并将它们移出机器
  6. 丢弃机器镜像

此 zip 需要在上传前扩展到您的 lambda zip。结果将是位于 zip 文件根目录中的所需包(不在 site-packages 或 dist-packages 文件夹中)

对于简单的依赖项,这是有效的,如果您还需要本地库(例如 Numpy 或 Scipy),您将需要采取更精细的方法,例如此处概述的方法:http://thankcoder.com/questions/jns3d/using-moviepy-scipy-and-numpy-in-amazon-lambda

关于python - AWS Lambda 未检测到 pyopenssl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35707138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com