You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lambda调用Firestore报未认证错误,本地运行正常

问题解决:AWS Lambda调用Firestore出现PEM格式认证错误

问题分析

错误error:0909006C:PEM routines:get_name:no start line的核心原因是私钥格式不符合PEM标准。本地运行正常是因为JSON配置文件会自动将\\n解析为实际换行符,而AWS Parameter Store存储的私钥以字符串形式保留了\\n转义序列,Lambda加载后未做转换,导致Firestore SDK无法识别合法的PEM密钥。

解决方案

在初始化Firestore客户端时,将私钥中的转义换行符\\n替换为实际换行符\n:

修改后的firestore.js

const {Firestore} = require('@google-cloud/firestore');

const obfCE = process.env.FIRESTORE_CLIENTEMAIL.substring(0,3) + "*".repeat(process.env.FIRESTORE_CLIENTEMAIL.length-3)
const rawPK = process.env.FIRESTORE_PRIVATEKEY
const processedPK = rawPK.replace(/\\n/g, '\n')
const obfPK = processedPK.substring(0,3) + "*".repeat(processedPK.length-3)
console.log(`Creating fs object with (${obfCE}), (${obfPK})`)

const firestore = new Firestore({
    projectId: process.env.FIRESTORE_PROJECT,
    credentials: {
        client_email: process.env.FIRESTORE_CLIENTEMAIL,
        private_key: processedPK,
    }})

exports.fetchPlayer = async (playerId) => {
    const document = firestore.doc(`players/${playerId}`);

    try {
        let player = await (await document.get()).data()
        return player
    }
    catch (ex) {
        console.log(`fs: fetch player for ${playerId} - Exception thrown: ${ex}`)
    }

    return null
}

验证说明

  • 处理后的私钥会还原为正确的PEM格式(包含实际换行),Firestore SDK可正常解析认证。
  • 日志中输出的脱敏私钥开头仍为---,但内部换行符已修复,不会影响脱敏效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:20:57