IOS调用Gen 2 Firebase函数报Unauthenticated,找不到roles/run.invoker
解决Firebase Gen2函数部署后
Unauthenticated错误的步骤 Firebase Gen2函数底层基于Cloud Run服务,权限规则和Gen1函数完全不同,你之前配置的Cloud Functions Invoker角色对Gen2函数无效,必须改用Cloud Run的Invoker角色:
第一步:确认Cloud Run服务信息
先找到Gen2函数对应的Cloud Run服务名和部署区域:- 执行命令
firebase functions:list,Gen2函数的Service列就是对应Cloud Run服务名 - 或者登录GCP控制台,进入「Cloud Run」页面,找到和函数名关联的服务
- 执行命令
第二步:配置Cloud Run Invoker权限
选以下任意一种方式设置权限:- 命令行方式:
gcloud run services add-iam-policy-binding [你的Cloud Run服务名] \ --member="allUsers" \ --role="roles/run.invoker" \ --region=[你的函数部署区域] - GCP控制台方式:
- 进入Cloud Run服务详情页,切换到「权限」标签
- 点击「添加权限」,在「新成员」输入框填
allUsers - 在「角色」下拉列表选「Cloud Run」->「Cloud Run Invoker」,保存设置
- 命令行方式:
第三步:验证权限生效
执行命令查看权限配置:gcloud run services get-iam-policy [你的Cloud Run服务名] --region=[你的函数部署区域]确认输出里包含
allUsers对应的roles/run.invoker角色即可。
你之前遇到的找不到roles/run.invoker警告,大概率是因为在Cloud Functions页面而非Cloud Run页面配置权限,或者命令里的服务名/区域填错了,切换到Cloud Run的配置入口就能解决。
内容的提问来源于stack exchange,提问作者Preem Palver2
相关产品推荐
相关产品推荐

