为了账号安全,请及时绑定邮箱和手机立即绑定

GCP - Python 创建 IoT 设备 PermissionDenied

GCP - Python 创建 IoT 设备 PermissionDenied

陪伴而非守候 2024-01-04 15:39:05
我正在尝试通过 Python 脚本在 Google Cloud 上创建 IoT 设备。我已经设置了项目、IoT 注册表并验证了我的 GCloud,并将 GOOGLE_APPLICATION_CREDENTIALS 链接到相应服务帐户的 json。为什么我使用命令行创建帐户,例如 gcloud iot devices create dev01 --project=... --region=... --registry=... ,它有效。但是,我的 Python 脚本(通过命令提示符运行)似乎没有产生相同的结果。我使用https://cloud.google.com/iot/docs/samples/device-manager-samples#iot-core-create-rs256-python作为 iot_v1 参考。   # Generate Key    key = rsa.generate_private_key(backend=default_backend(), public_exponent=65537, key_size=2048)    # Get Public    public_key = key.public_key().public_bytes(serialization.Encoding.OpenSSH, serialization.PublicFormat.OpenSSH)    # Get Private    pem = key.private_bytes(encoding=serialization.Encoding.PEM,                            format=serialization.PrivateFormat.TraditionalOpenSSL,                            encryption_algorithm=serialization.NoEncryption())    # Decode to UTF-8    private_key_str = pem.decode('utf-8')    public_key_str = public_key.decode('utf-8')    # Write keys    with open('Key Pairs/'+deviceName+'_private.pem', 'wb') as file:        file.write(pem)    with open('Key Pairs/' + deviceName + '_public.pem', 'wb') as file:        file.write(public_key)    # Create Device    client = iot_v1.DeviceManagerClient()    parent = client.registry_path(PROJECTID, REGION, REGISTRY)    deviceTemplate = {        'id': deviceName,        "credentials": [            {                "public_key": {                    "format": iot_v1.PublicKeyFormat.RSA_X509_PEM,                    "key": public_key_str,                }            }        ]    }    client.create_device(request={'parent': parent, 'device': deviceTemplate})
查看完整描述

1 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

确保用于创建客户端的服务帐户至少roles/cloudiot.provisioner分配了角色(如果您不断收到权限错误,请尝试将角色添加roles/cloudiot.admin到服务帐户,因为它应该授予对所有 IoT 设备的完全控制权)

一旦您确定服务帐户具有正确的权限,您就可以利用iot_v1.DeviceManagerClient() 类credentials提供的参数来确保您指向服务帐户密钥文件。


查看完整回答
反对 回复 2024-01-04
  • 1 回答
  • 0 关注
  • 72 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信