为什么我的 Secrets Manager Lambda 函数轮换失败并出现“找不到 pg 模块”错误?

1 分钟阅读
0

我的 AWS Secrets Manager AWS Lambda 函数失败并且在 Amazon CloudWatch Logs 中出现“找不到 pg 模块”错误。

简短描述

如果您正在运行更早的 Lambda 函数,该函数已从 Python 3.7 自动升级到更新版本的 Python,您可能会收到此错误。

解决方法

将 Lambda 函数版本改回 Python 3.7,然后重新部署 Lambda 函数。

查看 Lambda 函数的 Python 版本

1.    打开 Lambda 控制台

2.    在导航窗格中,选择函数,然后选择无法轮换的 Lambda 函数名称。

3.    选择代码选项卡。

4.    在运行时系统设置中,记录 Python 版本。

5.    选择操作,选择导出函数,然后选择下载部署包

6.    从未压缩的 .zip 文件的目录中运行以下 Linux find 命令:

find ./ -name “*cpython-*-x86_64-linux-gnu.so”

7.    检查 Python 运行时系统的版本使用的是否为 .so 文件的名称。例如,_cffi_backend.cpython-37m-x86_64-linux-gnu.so

如果 .so 版本不是 Python 3.7,那么 Lambda 无法导入该库。

修改 AWS CloudFormation 模板

要解决 Lambda 函数故障,请修改用于创建 Lambda 函数的 CloudFormation 模板。将 Runtime 属性添加到 AWS::SecretsManager::RotationSchedule 中的 HostedRotationLambda 对象。然后,重新部署 CloudFormation 堆栈。CloudFormation 将 Lambda 轮换函数改回 Python 3.7。

**注意:**对于 Python 3.7,Runtime 键值必须为 python3.7


相关信息

对 AWS Secrets Manager 进行故障排除

AWS 官方
AWS 官方已更新 1 年前