[英]403 Error while running cloudiot_pubsub_example_server.py code for GCP IOT Core and PUB/SUB
我正在嘗試 GCP Python SDK 的 cloudiot_pubsub_example_server.py 示例代碼。 為了概述,有兩個代碼客戶端和服務器。 客戶端發布到 GCP PUB/SUB 中的主題並更新或發布隨機溫度。 服務器訂閱此主題並接收溫度。 服務器還發布到客戶端的配置主題,並在特定溫度升高或降低時打開或關閉風扇。
當我使用提供的所有憑據運行這兩個代碼時,客戶端正在發布溫度,服務器被訂閱並獲取臨時數據。 但是當服務器發布到配置主題並將 FAN 發送到ON 或 OFF時,我得到:
執行 ModifyCloudToDeviceConfig 時出錯:<HttpError 403 當請求https://cloudiot.googleapis.com/v1/projects/project-aura-249003/locations/asia-east1/registries/Linux_PC/devices/linux_pc:modifyCloudToDeviceConfig?alt=json時返回“調用者沒有權限”。 詳細信息:“調用者沒有權限”>
為了執行服務器代碼,我使用了以下命令:
python3 cloudiot_pubsub_example_server.py --project_id=project-aura-249003 --pubsub_subscription=temp
為了執行客戶端代碼,我使用了以下命令:
python3 cloudiot_pubsub_example_mqtt_device.py --project_id=project-aura-249003 --registry_id=Linux_PC --device_id=linux_pc --private_key_file=rsa_private.pem --algorithm=RS256 --ca_certs=roots.pem --cloud_region=asia-east1
您可以在此處找到執行代碼的所有文件: https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/iot/api-client/mqtt_example
我也提供了roots.pem文件請幫我解決這個問題, 403錯誤與一些身份驗證問題有關。
我在這里想念什么?
確保您已經定義了環境變量GOOGLE_APPLICATION_CREDENTIALS='your_service_account_credentials.json'
或在運行cloudiot_pubsub_example_server.py
時包含選項--service_account_json="your_service_account_credentials.json"
。
您的 python 命令應如下所示:
python3 cloudiot_pubsub_example_server.py --project_id=project-aura-249003 --pubsub_subscription=temp --service_account_json="your_service_account_credentials.json"
還要根據端到端 IoT 教程仔細檢查您的關聯服務帳戶是否具有EDITOR角色。
我確實遵循了端到端的物聯網教程,沒有遇到任何問題。 一切都在雲 shell 中完成。 在學習本教程之前,我創建了以下內容:
運行cloudiot_pubsub_example_mqtt_device.py :
python3 cloudiot_pubsub_example_mqtt_device.py --project_id=my-project-id --registry_id=my-registry --device_id=device-****** --private_key_file=rsa_private.pem --algorithm=RS256 --ca_certs=roots.pem
cloudiot_pubsub_example_mqtt_device.py 的Output :
運行cloudiot_pubsub_example_server.py :
python3 cloudiot_pubsub_example_server.py --project_id=my-project-id --pubsub_subscription=my-sub-****** --service_account_json="my_credentials.json"
cloudiot_pubsub_example_server.py 的Output :
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.