我想解决 AWS Lambda 无法轮换密钥时 AWS Secrets Manager Lambda 函数日志中出现的“pg module not found”错误。
简短描述
如果 Lambda 函数从 Python 3.7 自动升级到更新的版本,则您可能会收到“pg module not found”错误。较新版本(例如 Python 3.9)可能不支持所需的模块。有关 Lambda 中各 Python 版本支持的模块和库的信息,请参阅支持的运行时。
解决方法
查看 Lambda 函数的 Python 版本
完成以下步骤:
-
打开 Lambda 控制台。
-
在导航窗格中,选择 Functions(函数),然后选择未轮换的 Lambda 函数的名称。
-
选择 Code(代码)选项卡。
-
在运行时设置中,记下 Python 版本。
-
选择 Actions(操作),选择 Export function(导出函数),然后选择 Download deployment package(下载部署包)。
-
从解压后的 .zip 文件的目录中运行以下 find Linux 命令:
find ./ -name “*cpython-*-x86_64-linux-gnu.so”
-
检查 .so 文件的名称中是否包含 Python 运行时的版本号。
例如,_cffi_backend.cpython-37m-x86_64-linux-gnu.so。
**注意:**如果您发现 Python 3.7 .so 文件,但您的 Lambda 运行时显示为更新的版本,即可确认存在版本不匹配问题。您必须通过 CloudFormation 模板更新流程来解决此不匹配问题。
更新 AWS CloudFormation 模板
要解决 Lambda 函数失败问题,请完成以下步骤:
- 更新用于创建 Lambda 函数的堆栈模板。
- 将 Runtime 属性添加到 AWS::SecretsManager::RotationSchedule HostedRotationLambda 中的 HostedRotationLambda 对象。
- 重新部署 CloudFormation 堆栈以应用更改。
CloudFormation 会将 Lambda 轮换函数改回 Python 3.7。
**注意:**对于 Python 3.7,Runtime 键值必须为 python3.7。
相关信息
将现有的轮换函数从 Python 3.7 升级到 3.9