如何使用 Azure CLI 为 Azure IotHub 创建会话?

时间:2021-01-31 10:51:31

标签: azure azure-iot-hub azure-cli

过去我使用 IoTHub Explorer 登录并创建会话,然后执行进一步操作(例如调用设备方法)。 Microsoft 已弃用 IoTHub Explorer。 (我正在做一些应用程序级别的测试自动化)

如何像使用 azure CLI az 使用资源管理器一样创建会话?

这是我过去所做的:

iothub-explorer login "HostName=..."
iothub-explorer device-method <device> "<method>" ...

这是我现在要做的:

az iot hub invoke-device-method -l "HostName=..." -n <hub-name> -d <device -method-name <method>

正如所见,我必须为每次调用 -l 提供 az iot 选项。理想情况下,我可以通过创建会话来避免这种情况。

我尝试使用 az login 来打开一个网站,这对于测试自动化来说并不理想。即使在此之后,在没有 az iot hub invoke-device-method 的情况下调用 -l 也会导致异常:AttributeError: 'IotHubResourceOperations' object has no attribute 'config'

我试图生成一个 sas-token,但我不确定如何处理它。

1 个答案:

答案 0 :(得分:0)

事实证明,我的 azure-cli 环境设置不正确:请参阅 https://github.com/Azure/azure-cli/issues/15461。不要混淆 azure-cli 的 Debian/system 包(实际不使用)和 pip 安装的包。使用 pip 执行所有操作, 作为用户 作为 root。

我创建了一个新的 virtualenv 来清理它:

$ virtualenv ~/python-venv/azure-venv
$ . ~/python-venv/azure-cli/bin/activate
(azure-venv) $ pip install azure-cli
(azure-venv) $ az login
(azure-venv) $ az iot hub generate-sas-token --duration 3600 -n <hubname> -l <login-string>
(azure-venv) $ az iot hub invoke-device-method -n <hub-name> -d <device --method-name <method>

它有效。