你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

客户端组

使用客户端组可以根据共性将一组客户端分组到一起。 客户端组的主要目的是简化授权的配置。 可以授权客户端组发布或订阅主题空间。 客户端组中的所有客户端都有权对主题空间执行发布或订阅操作。

在命名空间中,我们提供了一个名为“$all”的默认客户端组。 该客户端组包含命名空间中的所有客户端。 为了便于测试,可以使用 $all 来配置权限。

注意

  • 客户端组名称的长度可为 3-50 个字符
  • 客户端组名称可以包含字母数字、连字符 (-),不能包含空格
  • 客户端组名称在每个命名空间中必须唯一
  • $all 是包含命名空间中所有客户端的默认客户端组。 无法编辑或删除此组

客户端组注意事项

应该将客户端组数量控制在较小范围,以便于管理权限。

目前,每个命名空间最多支持 10 个客户端组。

在对客户端进行分组时,请确保可以更轻松地重复使用该组跨多个主题空间发布和订阅事件。 为此,必须仔细考虑端到端场景,以确定每个客户端发布或订阅的主题。

建议确定不同场景的共性,以避免过度地将客户端组和主题空间分段。 设置足够一般化的客户端属性,以实现简单的分组并避免过度复杂的组查询。

如何创建客户端组查询?

若要设置客户端组,需要生成一个查询,用于根据客户端的属性值筛选一组客户端。

下面是几个示例查询:

  • (attributes.sensors = "motion" or attributes.sensors = "humidity") or attributes.type = "home-sensors"
  • attributes.sensors IN ["motion", "humidity", "temperature"] and attributes.floor <= 5
  • authenticationName IN ['client1', 'client2']

在组查询中,允许使用以下操作数:

  • 相等运算符:“=”
  • 括号“()”,用于对表达式进行分组以控制运算顺序
  • 逻辑运算符“and”和“or”,“and”的优先级高于“or”
  • 两种形式的不相等运算符:“<>”和“!=”
  • 小于:“<”;大于:“>”;小于等于:“<=”;大于等于:“>=”(适用于长整型值)
  • 与一组值进行比较的“IN”

示例客户端组架构

{
  "properties": {
    "description": "Description of client group",
    "query": "attributes.b IN ['a', 'b', 'c']"
  }
}

Azure 门户配置

使用以下步骤创建客户端组:

  1. 在 Azure 门户中转到你的命名空间

  2. 在“客户端组”下,选择“+ 客户端组”。

    添加客户端组的屏幕截图。

  3. 添加客户端组查询。

    客户端组配置的屏幕截图。

  4. 选择“创建”

Azure CLI 配置

使用以下命令创建/显示/删除客户端组

创建客户端组

az eventgrid namespace client-group create -g myRG --namespace-name myNS -n myCG 

获取客户端组

az eventgrid namespace client-group show -g myRG --namespace-name myNS -n myCG

删除客户端组

az eventgrid namespace client-group delete -g myRG --namespace-name myNS -n myCG

后续步骤