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

无法将Cloud Run服务设为公开访问的问题排查

问题分析与解决方案

核心误区

Ingress设置为all仅允许外部来源的请求进入Cloud Run服务的网络边界,但并不自动开启未认证访问权限。这是两个完全独立的配置项:

  • run.googleapis.com/ingress: all:控制是否允许互联网上的请求到达服务
  • 未认证访问权限:控制是否需要Google身份验证才能调用服务

你的日志明确提示请求未认证,说明服务当前仅允许已认证用户访问——即使外部流量能到达服务边界,也会被身份验证规则拦截。

解决步骤

1. 开启未认证访问权限

通过以下任意一种方式修改服务配置:

  • 命令行方式:
    gcloud run services update demo --allow-unauthenticated --region us-central1
    
  • 控制台操作方式:
    • 打开Cloud Run服务详情页
    • 切换到「权限」标签页
    • 点击「添加权限」,输入allUsers作为主体,选择「Cloud Run Invoker」角色后保存

2. 验证配置生效

执行命令查看服务的IAM权限配置:

gcloud run services get-iam-policy demo --region us-central1

输出内容中若包含以下片段,说明已成功允许所有用户访问:

bindings:
- members:
  - allUsers
  role: roles/run.invoker

补充说明

  • 本地运行Docker镜像正常,是因为本地环境没有Cloud Run的身份验证拦截层,请求直接到达NextJS应用,无需经过认证校验
  • 配置中的serviceAccountName是Cloud Run运行时使用的服务账号,和外部访问者的认证权限无关

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:53:23