如何使用 REST API 创建事件网格域主题订阅?

How to create event grid domain topic subscription using REST API?

我在事件网格 中创建了事件网格 topic。现在我想使用 rest api 为该主题创建事件订阅。

我已经通过这个阅读了文档 link

https://docs.microsoft.com/en-us/rest/api/eventgrid/eventsubscriptions/createorupdate?source=docs#uri-parameters.

但我找不到 url 我需要的东西。

我试过这个url。

https://management.azure.com/subscriptions/{订阅 ID}/resourceGroups/{资源组名称}/providers/Microsoft.EventGrid/domains/{事件网格域名}/topics/{主题名称}/providers/Microsoft.EventGrid/eventSubscriptions/{活动订阅名称}?api-version=2019-02-01-preview

可以使用以下 API 创建域主题:

  1. Domain Topics - Create Or Update

    例如:

    https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.EventGrid/domains/myDomain/topics/myTopicXXX?api-version=2020-01-01-preview
    

    负载为空:{}

  2. Event Subscriptions - Create Or Update

    例如:

    https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.EventGrid/domains/myDomain/topics/myTopic/providers/Microsoft.EventGrid/eventSubscriptions/mySubscription?api-version=2020-01-01-preview
    

负载示例:

    {
      "properties":{
       "destination":{
          "endpointType":"HybridConnection",
          "properties":{
            "resourceId":"<myHybridConnectionresourceId>"
          }
        },
        "filter":{
        "isSubjectCaseSensitive":false,
        "subjectBeginsWith":null,
        "subjectEndsWith":null
        },
        "labels":[],
        "eventDeliverySchema":"EventGridSchema",
        "retryPolicy":{
          "maxDeliveryAttempts":3,
          "eventTimeToLiveInMinutes":1440
         }
      }
    }

在这种情况下,域主题将在不存在时自动创建。 请注意,这是一个很棒的功能,允许从订阅者端创建主题。

顺便说一句。看看我的 Azure Event Grid Tools,它是基于 REST API 构建的。

似乎无法在域主题中使用 rest 创建事件订阅 api。解决方法:您可以使用 Azure CLI or powershell 来实现它。

事件网格服务根据为域主题创建事件订阅的调用自动创建和管理域中的相应主题。同样,当一个主题的最后一个事件订阅被删除时,该主题也被删除。

订阅域中的主题与订阅任何其他 Azure 资源相同。对于源资源 ID,指定之前创建域时返回的事件域 ID。要指定您要订阅的主题,请将 /topics/<my-topic> 添加到源资源 ID 的末尾。

az eventgrid event-subscription create \
  --name <event-subscription> \
  --source-resource-id "/subscriptions/<sub-id>/resourceGroups/<my-resource-group>/providers/Microsoft.EventGrid/domains/<my-domain-name>/topics/demotopic1" \
  --endpoint https://contoso.azurewebsites.net/api/updates