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

如何在Firebase Cloud Function的Next.js中调用GCP密钥管理器密钥

从GCP密钥管理器获取密码替换Firebase Cloud Function中的硬编码值

步骤1:给Cloud Function服务账号添加密钥访问权限

Firebase Cloud Function默认使用[你的项目ID]@appspot.gserviceaccount.com服务账号运行,需为其授予Secret Manager Secret Accessor角色:

  • 打开GCP控制台IAM页面,找到该服务账号
  • 点击"编辑",添加角色时搜索并选择Secret Manager Secret Accessor
  • 保存更改

步骤2:安装GCP密钥管理器客户端库

在你的Cloud Function项目目录下执行:

npm install @google-cloud/secret-manager

步骤3:修改代码从密钥管理器获取密码

替换硬编码密码逻辑,改为异步获取密钥:

const nodemailer = require('nodemailer');
const smtpTransport = require('nodemailer-smtp-transport');
const { SecretManagerServiceClient } = require('@google-cloud/secret-manager');

// 初始化密钥管理器客户端
const secretManagerClient = new SecretManagerServiceClient();

// 异步获取Gmail应用密码
async function getGmailAppPassword() {
  // 自动获取当前项目ID,无需硬编码
  const projectId = process.env.GCP_PROJECT;
  // 替换为你在密钥管理器中创建的密钥名称
  const secretPath = `projects/${projectId}/secrets/你的密钥名称/versions/latest`;
  
  const [version] = await secretManagerClient.accessSecretVersion({ name: secretPath });
  return version.payload.data.toString();
}

// 示例:HTTP触发的邮件发送函数
exports.sendEmail = async (req, res) => {
  try {
    // 获取密码
    const gmailPassword = await getGmailAppPassword();
    
    // 创建邮件传输器
    const transporter = nodemailer.createTransport(
      smtpTransport({
        service: 'gmail',
        auth: {
          user: 'camilo@camiloengineer.com',
          pass: gmailPassword
        },
      })
    );

    // 发送邮件(可根据实际需求调整参数来源)
    await transporter.sendMail({
      from: 'camilo@camiloengineer.com',
      to: req.body.to,
      subject: req.body.subject,
      text: req.body.content
    });

    res.status(200).send('邮件发送成功');
  } catch (err) {
    console.error('邮件发送失败:', err);
    res.status(500).send('邮件发送失败');
  }
};

注意事项

  • 替换代码中的你的密钥名称为GCP密钥管理器中对应密钥的实际名称
  • 本地开发时需设置GOOGLE_APPLICATION_CREDENTIALS环境变量,指向你的GCP服务账号密钥文件(部署到Firebase后无需此操作)
  • 确保密钥管理器中的密钥版本处于"启用"状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 19:35:16