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

如何从外部Node.js服务器认证调用Google Cloud函数及方案更新

外部Node.js服务器调用安全Google Cloud HTTP函数的认证方案

获取认证令牌

  • 创建并下载服务账号密钥:在GCP控制台的IAM与管理>服务账号页面,创建一个拥有roles/cloudfunctions.invoker角色的服务账号(确保该账号有权调用目标云函数),下载JSON格式的密钥文件到本地服务器。
  • 使用Google Auth库生成ID令牌:在外部Node.js项目中安装google-auth-library依赖,通过服务账号密钥生成针对目标云函数URL的专属ID令牌。

示例代码:

const { GoogleAuth } = require('google-auth-library');
const auth = new GoogleAuth({
  keyFilename: '/path/to/your-service-account-key.json',
  scopes: 'https://www.googleapis.com/auth/cloud-platform'
});

async function getAuthToken(functionUrl) {
  const client = await auth.getIdTokenClient(functionUrl);
  const res = await client.request({ url: functionUrl });
  return res.config.headers['Authorization'];
}

调用安全云函数

拿到令牌后,在请求的Authorization头中携带Bearer ${token}即可发起安全调用:

const axios = require('axios');

async function callCloudFunction(functionUrl) {
  const authToken = await getAuthToken(functionUrl);
  const response = await axios.post(functionUrl, { /* 自定义请求体数据 */ }, {
    headers: {
      'Authorization': authToken
    }
  });
  console.log(response.data);
}

callCloudFunction('https://REGION-PROJECT_ID.cloudfunctions.net/YOUR_FUNCTION_NAME');

切换到Pub/Sub事件触发后的认证注意事项

既然你已切换到Pub/Sub触发的云函数并使用服务账号认证,以下是几个关键优化点:

  • 服务账号权限配置:确保用于发送消息的服务账号拥有pubsub.publisher角色,否则无法向目标主题推送消息。
  • 利用客户端库自动认证:使用@google-cloud/pubsub客户端库发送消息时,无需手动生成令牌,库会自动读取服务账号密钥完成认证流程。

示例代码:

const { PubSub } = require('@google-cloud/pubsub');

const pubsub = new PubSub({
  keyFilename: '/path/to/your-service-account-key.json'
});

async function publishMessage(topicName, data) {
  const topic = pubsub.topic(topicName);
  const dataBuffer = Buffer.from(JSON.stringify(data));
  
  const messageId = await topic.publishMessage({ data: dataBuffer });
  console.log(`消息已发布,ID: ${messageId}`);
}

publishMessage('YOUR_TOPIC_NAME', { key: 'value' });
  • 云函数侧权限:确保云函数关联的服务账号拥有pubsub.subscriber角色,这样才能接收Pub/Sub主题的消息并触发执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 14:21:17