【问题标题】:Delete all azure event grid subscriptions using Azure CLI使用 Azure CLI 删除所有 Azure 事件网格订阅
【发布时间】:2019-12-12 10:57:01
【问题描述】:

我正在为我的 web api 使用事件网格。我的 api 的域名已更改,现在我需要更新所有事件网格订阅。碰巧我有 Azure CLI 命令来创建每个订阅,所以最简单的方法是删除所有订阅并创建新订阅。我检查了docsaz eventgrid event-subscription delete 命令需要--name 参数,这意味着我需要为每个订阅手动执行此操作。虽然这不是一个大问题,但它需要维护第二个命令列表以进行删除。如果我可以简单地说--all 或类似的东西,它会快得多。

也许有一种解决方案可以轻松删除所有事件网格订阅?

到目前为止我的想法:

  • 删除整个事件网格主题并创建一个新主题(似乎有点过分
  • 使用az eventgrid event-subscription list 应用一些bash 魔法

【问题讨论】:

  • 您的源兴趣是域主题吗?如果是,请参阅我对@JimXu 的评论

标签: azure-cli azure-eventgrid


【解决方案1】:

根据我的测试,我们可以使用下面的命令删除Azure Cloud Shell中与Azure事件网格主题相关的订阅列表。

results=$(az eventgrid event-subscription list --source-resource-id /subscriptions/{SubID}/resourceGroups/{RG}/providers/Microsoft.EventGrid/domains/domain1/topics/topic1 --query "[].{Name:name}")


for row in $(echo "$results" | jq -r '.[]|"\(.Name)"')
do
  az eventgrid event-subscription delete --name $row --source-resource-id  /subscriptions/{SubID}/resourceGroups/{RG}/providers/Microsoft.EventGrid/domains/domain1/topics/topic1
done

【讨论】:

  • source-resource-iddomain topic 的情况下,我们不需要遍历列表订阅并逐个删除。我们可以删除一个域主题(感兴趣的来源)来代替这个循环。请注意,无论如何,循环过程中最后删除的订阅也会删除一个域主题。这是 AEG 事件模型中的一个独特案例,其中域主题可以由消费者方(通过订阅)创建。
猜你喜欢
  • 2020-01-24
  • 2019-12-23
  • 1970-01-01
  • 1970-01-01
  • 2021-02-22
  • 2020-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多