Lambda Python3.9运行时无法导入DEPRECETED_SERVICE_NAMES的永久解决方案
永久解决方案
问题原因
这个错误是因为botocore版本更新后,内部模块DEPRECETED_SERVICE_NAMES(正确拼写应为DEPRECATED_SERVICE_NAMES)被移除或重构。Lambda的Python 3.9运行时自带的botocore版本可能高于你之前代码依赖的版本,而修改后的代码直接引用了这个已废弃的内部模块。
具体解决步骤
- 替换废弃模块引用:检查代码中是否存在
from botocore.docs import DEPRECETED_SERVICE_NAMES这类导入语句,将其替换为botocore当前版本的替代方案。例如,当前botocore中废弃服务名称的管理逻辑已移至botocore.utils模块,可尝试导入from botocore.utils import deprecated_service_names(需根据实际使用场景调整变量名)。 - 固定botocore依赖版本:如果代码依赖特定版本的botocore,在
requirements.txt中明确指定兼容版本号(比如botocore==1.28.57,该版本仍包含目标模块),部署时将依赖包一起打包上传,覆盖Lambda运行时自带的新版本。 - 避免依赖内部API:
botocore.docs下的非公开组件属于内部模块,不属于稳定API范畴,随时可能被修改或移除。后续开发应优先使用botocore的公开API,减少此类兼容性问题。
内容的提问来源于stack exchange,提问作者Rahul Patel
相关产品推荐
相关产品推荐

