You need to enable JavaScript to run this app. 如何在AWS Lambda中升级OpenSSL满足Python程序运行需求?
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Lambda中升级OpenSSL满足Python程序运行需求?

适配Python 3.8 Lambda运行时的OpenSSL 1.1.1升级方案

核心说明

此前Node.js相关教程失效是因为不同语言运行时的层路径规则、二进制依赖编译环境要求不同,Python 3.8 Lambda运行时基于Amazon Linux 2,需要编译对应环境的二进制包再封装为层使用,配置时需优先加载层内的新版OpenSSL依赖。

步骤1:编译适配环境的OpenSSL二进制

  • 本地启动和Lambda Python 3.8运行时完全一致的编译容器,执行命令:
    docker run -it public.ecr.aws/sam/build-python3.8:latest /bin/bash
  • 进入容器后依次执行以下命令编译OpenSSL 1.1.1k:
# 安装编译依赖
yum install -y make gcc perl-core pcre-devel wget
# 下载OpenSSL 1.1.1k源码
wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
tar -xzf openssl-1.1.1k.tar.gz
cd openssl-1.1.1k
# 配置安装路径适配Lambda层的/opt目录结构
./config --prefix=/opt/openssl --openssldir=/opt/openssl shared zlib
make -j$(nproc)
make install

步骤2:封装为Lambda层安装包

  • 容器内执行以下命令整理层目录结构:
mkdir -p /tmp/layer/lib /tmp/layer/python/lib/python3.8/site-packages
cp -r /opt/openssl/lib/* /tmp/layer/lib/
cp -r /opt/openssl/lib/python3.8/site-packages/* /tmp/layer/python/lib/python3.8/site-packages/ 2>/dev/null || true
  • 打包层文件:
cd /tmp/layer
zip -r openssl111k-layer.zip .
  • 本地新开终端执行以下命令,将打包好的zip包从容器拷贝到本地(<容器ID>替换为实际运行的容器ID,可通过docker ps查询):
    docker cp <容器ID>:/tmp/layer/openssl111k-layer.zip ./

步骤3:Lambda控制台配置

  • 进入Lambda控制台的「层」管理页,创建新层,上传本地的openssl111k-layer.zip,兼容运行时勾选Python 3.8
  • 打开目标Lambda函数的配置页,在「层」模块添加刚创建的自定义层
  • 在函数的「环境变量」配置页新增/修改两个变量,让系统优先加载层内的新版OpenSSL:
    • 变量名LD_LIBRARY_PATH,值为/opt/lib:$LD_LIBRARY_PATH
    • 变量名PATH,值为/opt/openssl/bin:$PATH

生效验证

在你的Python业务代码开头加入以下校验代码,触发函数运行后查看日志输出的OpenSSL版本:

import ssl
print("当前使用的OpenSSL版本:", ssl.OPENSSL_VERSION)

如果日志输出当前使用的OpenSSL版本: OpenSSL 1.1.1k 25 Mar 2021即为配置成功,原有报错会自动消除。

内容的提问来源于stack exchange,提问作者Sebastian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 05:15:06