簡體   English   中英

為 GCP IOT Core 和 PUB/SUB 運行 cloudiot_pubsub_example_server.py 代碼時出現 403 錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM