我遇到了一个用Python 3.8编写的AWS Lambda函数的问题。我遇到的错误如下:
Unable to import module 'index': urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with OpenSSL
我的lambda函数中的pipfile看起来像下面这样:
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[dev-packages]
[packages]
src = {editable = true, path = "./src"}
openai = "*"
urllib3 = "1.26.6"
[requires]
python_version = "3.8"
index.py文件有以下导入,我收到的错误似乎是由于openai导入。
import json
import boto3
import openai
import os
from concurrent.futures import ThreadPoolExecutor
为了提供一些上下文,我的函数在虚拟环境(venv)中运行,也设置为Python 3.8。
以下是我已经尝试过的一些故障排除步骤:
在venv环境中降级urllib 3版本。在venv.然而,这两个步骤都没有解决问题。我仍然收到关于'ssl'模块编译的OpenSSL版本的相同错误。
任何关于这方面的帮助将不胜感激!
谢谢大家!
正在降级urllib 3版本。在venv.然而,这两个步骤都没有解决问题。我仍然收到关于'ssl'模块编译的OpenSSL版本的相同错误。
1条答案
按热度按时间muk1a3rh1#
该错误消息表明,Python环境中的“ssl”模块是使用旧版本的OpenSSL编译的,该版本与您在AWS Lambda函数中使用的urllib 3 v2.0不兼容。要解决此问题,您可以尝试以下步骤:
在Python环境中更新OpenSSL版本:
您提到您正在使用虚拟环境(venv)。确保venv中的OpenSSL版本是最新的。您可以尝试通过升级Python版本或直接更新OpenSSL来更新OpenSSL。
使用urllib 3的兼容版本:
错误消息表明urllib 3 v2.0导致了此问题。您可以尝试使用与当前OpenSSL版本兼容的urllib 3版本。修改您的pipfile以指定urllib 3的旧版本,例如您以前使用的版本1.26.6。
仔细检查您使用的AWS Lambda环境是否支持urllib 3 v2.0所需的OpenSSL版本。如果环境没有必要的OpenSSL版本,您可能需要考虑使用不同的环境或探索其他替代方案。
验证Lambda部署包:
确保您使用更新的依赖项正确地打包和部署Lambda函数。确认部署的包包含正确版本的urllib 3和其他所需的库。
本地测试:
在将功能部署到AWS Lambda之前,请在虚拟环境中进行本地测试。确保所有必需的库和依赖项都按预期工作,没有任何与OpenSSL相关的问题。
如果上述步骤都不能解决问题,您可以考虑联系AWS支持团队以获得进一步帮助,或提供有关您的环境的更具体的详细信息,包括Python、OpenSSL和您正在使用的任何其他相关库的确切版本。e = true,path =“./src”}