AWS lambda 返回 /lib64/libc.so.6:找不到版本“GLIBC_2.28”

Mai*_*aik 5 amazon-web-services aws-lambda snowflake-cloud-data-platform

我正在运行一个AWS Lambda function使用一层的snowflake-connector-python.

要创建我使用的图层:

docker run -v <your dev directory>:/lambda -it --rm ubuntu
apt-get update
apt-get install python3-pip 
apt-get install zip
cd lambda
mkdir -p temp/python
cd temp/python
pip3 install snowflake-connector-python -t .
cd ..
zip -r9 ../snowflake-connector-python.zip .
Run Code Online (Sandbox Code Playgroud)

lambda 返回:

"errorMessage": "Unable to import module 's3PutLambda': /lib64/libc.so.6: version `GLIBC_2.28' not found (required by /opt/python/cryptography/hazmat/bindings/_rust.abi3.so)",
  "errorType": "Runtime.ImportModuleError",
  "requestId": "baa60d07-c9bb-4b32-a38f-3158eb50da09",
  "stackTrace": []
Run Code Online (Sandbox Code Playgroud)

我还尝试了一些其他解决方案,例如添加到 zip:

pip3 install cryptography==3.4.8
pip3 install bcrypt==3.2.2
Run Code Online (Sandbox Code Playgroud)

提出了同样的错误。

Mai*_*aik 4

最后解决了,需要降级snowflake-connector-python版本并使用platform安装manylinux2010_x86_64

pip除非您指定 Wheel 版本,否则从最新的 Wheel 安装软件包。我使用的 Python 库包比 Lambda 后端容器中运行时的库包更新。

如果您在安装连接器时指定了 Manylinux2010 平台,则可以解决该问题。

我使用的命令是:

pip3 install --platform manylinux2010_x86_64 --implementation cp --python 3.8 --only-binary=:all: 
--upgrade --target . snowflake-connector-python==2.7.9
Run Code Online (Sandbox Code Playgroud)

Obs: 我没有用更高snowflake-connector-python版本测试过它,也没有用更高版本的 python 测试过。我在 中使用Python 3.8运行时AWS Lambda