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

时间:2019-11-28 07:19:23

标签: azure azure-eventgrid

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

我已通过此链接阅读文档

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

但是我找不到我需要的URL。

我已经尝试过该网址。

https://management.azure.com/subscriptions/ {subscription ID} / resourceGroups / {资源组名称} /providers/Microsoft.EventGrid/domains/ {event grid域名} / topics / {topic name} /providers/Microsoft.EventGrid/eventSubscriptions / {事件订阅名称}?api-version = 2019-02-01-preview

2 个答案:

答案 0 :(得分:1)

可以使用以下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。

答案 1 :(得分:0)

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

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

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

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