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

能否从Firebase Hosting调用Python编写的Google Cloud Function及Cloud Run API?

嗨,针对你的两个问题,我来给你详细解答下,都是实践中常用的配置方式~

从Firebase Hosting调用Cloud Run API(实现统一基础URL)

完全可以通过Firebase Hosting的重写规则来实现统一基础URL,具体步骤如下:

  • 配置重写规则:修改你的firebase.json文件,添加rewrites字段,把指定路径的请求转发到Cloud Run服务。比如你想把所有/api/开头的请求转发到Cloud Run服务,配置示例如下:
{
  "hosting": {
    "public": "public",
    "rewrites": [
      {
        "source": "/api/**",
        "run": {
          "serviceId": "你的Cloud Run服务ID",
          "region": "你的服务部署区域,比如us-central1"
        }
      }
    ]
  }
}

这样客户端只需要访问https://你的Firebase Hosting域名/api/xxx,请求就会自动转发到对应的Cloud Run API,完美实现统一URL。

  • 配置权限:别忘给Firebase Hosting的服务账号添加Cloud Run调用权限,不然会出现403错误。找到你的Firebase Hosting服务账号(一般格式是你的项目ID@appspot.gserviceaccount.com),在Cloud Run服务的权限设置页面,给这个账号添加Cloud Run Invoker角色。
能否从Firebase Hosting调用Python编写的Google Cloud Function?

当然可以!Cloud Function的编程语言不影响Firebase Hosting的调用,不管你是Python、Node.js还是其他语言,都能通过重写规则实现转发,分两种情况:

  • 第一代Cloud Function:直接在firebase.json里指定函数名即可,配置示例:
{
  "hosting": {
    "public": "public",
    "rewrites": [
      {
        "source": "/functions/**",
        "function": "你的Python函数名称"
      }
    ]
  }
}
  • 第二代Cloud Function:因为第二代函数底层基于Cloud Run,所以需要用run字段配置,和Cloud Run的配置方式一致。你需要找到第二代函数对应的Cloud Run服务ID(一般是函数名-随机后缀),然后配置:
{
  "hosting": {
    "public": "public",
    "rewrites": [
      {
        "source": "/functions/**",
        "run": {
          "serviceId": "你的Python第二代函数对应的Cloud Run服务ID",
          "region": "函数部署区域"
        }
      }
    ]
  }
}
  • 权限配置:和Cloud Run类似,第一代函数需要给Firebase Hosting服务账号添加Cloud Functions Invoker角色;第二代函数则添加Cloud Run Invoker角色即可。

额外小提示

  • 本地测试可以用firebase serve命令,验证重写规则是否生效,避免部署后踩坑。
  • 配置完成后,用firebase deploy --only hosting部署更新的Hosting配置即可生效。
  • 因为请求是通过Firebase Hosting转发的,客户端和Hosting同域,所以不会有跨域问题,这也是统一URL的额外好处哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:19:46