AWS Lambda处理含\n的GCP Pub/Sub私钥报错求助
解决AWS Lambda中GCP Pub/Sub私钥解析失败问题
问题根源
从Secret Manager取出的私钥字符串里,\n被保留成了字面量字符(即实际是\和n两个独立字符),而非Python可识别的换行符。crypt.Signer.from_string()需要的是带真实换行的标准PEM格式私钥,自然无法识别这种字面量格式;而直接写在代码里的\n会被Python自动解析为换行符,因此能正常运行。
解决方法
在初始化签名器前,把字符串中的字面\n替换成实际换行符:
# 从Secret Manager获取原始密钥数据 secret_manager_data = {'google_pubsub_private_key':'-----BEGIN PRIVATE KEY-----\nYourPrivateKeyHere\n-----END PRIVATE KEY-----\n'} # 处理字面量\n为真实换行符 formatted_key = secret_manager_data['google_pubsub_private_key'].replace('\\n', '\n') # 初始化签名器 signer = crypt.Signer.from_string(formatted_key)
验证逻辑
替换操作后,密钥字符串的格式会和直接写在代码里的示例完全一致,符合PEM格式要求,crypt.Signer.from_string()就能正常识别私钥。
内容的提问来源于stack exchange,提问作者Moses01
相关产品推荐
相关产品推荐

