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

运行GCP IoT Core与Pub/Sub的cloudiot_pubsub_example_server.py代码时遭遇403权限错误求助

解决Cloud IoT Core修改设备配置的403权限错误

这个403错误明确说明运行服务端代码的身份没有权限执行modifyCloudToDeviceConfig操作,下面是具体的排查和解决步骤:

1. 确认服务端使用的身份

首先得搞清楚你的服务端代码是以哪个身份访问GCP API的:

  • 如果是本地开发环境,默认会用你gcloud登录的账号,运行以下命令查看:
    gcloud config get-value account
    
  • 如果是用服务账号运行,检查是否设置了GOOGLE_APPLICATION_CREDENTIALS环境变量,指向服务账号的密钥文件:
    echo $GOOGLE_APPLICATION_CREDENTIALS
    

2. 为身份添加必要权限

你需要给这个身份授予修改Cloud IoT设备配置的权限,有两种常见方式:

方式一:通过GCP控制台操作

  1. 打开GCP控制台的IAM与管理员页面,找到你的项目project-aura-249003
  2. 在成员列表中找到你要授权的账号(本地登录账号或服务账号)
  3. 点击该账号的编辑按钮,添加以下角色之一:
    • Cloud IoT Device Admin:包含所有设备管理权限,适合调试阶段使用
    • Cloud IoT Config Editor:仅包含修改设备配置的权限,遵循最小权限原则

方式二:通过gcloud命令行操作

如果是本地登录账号,运行:

gcloud projects add-iam-policy-binding project-aura-249003 \
  --member="user:你的账号邮箱" \
  --role="roles/cloudiot.deviceAdmin"

如果是服务账号,运行:

gcloud projects add-iam-policy-binding project-aura-249003 \
  --member="serviceAccount:你的服务账号邮箱" \
  --role="roles/cloudiot.deviceAdmin"

3. 验证权限并重启服务

  • 运行以下命令确认权限已生效:
    gcloud projects get-iam-policy project-aura-249003 --filter="bindings.members:你的账号标识"
    
  • 重启你的服务端代码,重新执行发送配置指令的操作

额外排查点

  • 确认服务端代码中使用的registry_id和device_id和客户端完全匹配(你这里是Linux_PC和linux_pc,注意大小写是否一致)
  • 如果使用服务账号,确认密钥文件路径正确,且文件本身没有权限问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 05:24:08