如何为Azure IoT Hub连接字符串添加Send权限?解决Azure Function发送报错
解决Azure IoT Hub连接字符串缺少Send权限的问题
这个错误我之前也碰到过,本质就是你当前用的IoT Hub连接字符串对应的共享访问策略没有授予Send权限,按照下面的步骤操作就能解决:
通过Azure门户配置Send权限
- 登录Azure门户,找到你的目标IoT Hub(也就是错误信息里的
monitorhub) - 在左侧导航栏的「设置」分类下,找到共享访问策略选项并点击进入
- 这里有两种处理方式:
- 修改现有策略:找到你Azure Function当前正在使用的那个策略,点击进入详情页,在「权限」区域勾选Send选项,最后点击「保存」即可
- 创建新策略:如果不想修改现有策略,点击页面顶部的「+ 添加」按钮,输入一个易识别的策略名称(比如
FunctionSendPolicy),然后勾选Send权限(如果你的Function还需要其他权限,比如读取设备列表的RegistryRead,也可以一起勾选),完成后点击「创建」
- 最后,把更新后的策略或者新策略的连接字符串--主密钥(或次密钥)复制出来,替换Azure Function配置里原来的IoT Hub连接字符串
通过Azure CLI配置Send权限
如果你习惯用命令行操作,也可以用Azure CLI快速完成配置:
- 首先登录Azure CLI:
az login - 创建新的带Send权限的共享访问策略:
az iot hub policy create --hub-name monitorhub --name FunctionSendPolicy --permissions Send - 查看该策略的主连接字符串(直接输出可复制的文本):
az iot hub policy show --hub-name monitorhub --name FunctionSendPolicy --query primaryConnectionString --output tsv - 如果要给已有策略添加Send权限(注意:要包含原来的所有权限,否则会被覆盖):
az iot hub policy update --hub-name monitorhub --name ExistingPolicyName --permissions Send RegistryRead
内容的提问来源于stack exchange,提问作者Randy Minder
相关产品推荐
相关产品推荐

