Создание подписки в очереди хранилища на настраиваемую тему сетки событий через ARM

Я пытаюсь настроить подписку Event Grid на мою очередь хранилища из настраиваемой темы.

Это легко сделать при навигации по порталу, но мне не удается создать для этого соответствующий шаблон ARM. После множества поисков и проб я придумал следующий образец.

{
    "name": "MyCustomTopicName/Microsoft.EventGrid/MySubscriptionName",
    "type": "Microsoft.EventGrid/topics/providers/eventSubscriptions",
    "location": "[resourceGroup().location]",
    "apiVersion": "2019-06-01",
    "properties": {
        "destination": {
            "endpointType": "StorageQueue",
            "properties": {
                "resourceId": "[resourceId('Microsoft.Storage/storageAccounts', variables('theNameOfMyStorageAccount'))]",
                "queueName": "[variables('theNameOfMyQueue')]"
            }
        },
        "filter": {
            "advancedFilters": []
        },
        "labels": [],
        "eventDeliverySchema": "EventGridSchema"
    }
}

Для меня это выглядит неплохо, но не работает, потому что тема «Сетка событий» не входит в группу ресурсов, в которой я развертываю шаблон.

Deployment failed. Correlation ID: [guid]. {
  "error": {
    "code": "ResourceNotFound",
    "message": "The Resource 'Microsoft.EventGrid/topics/MyCustomTopicName' under resource group 'TheResourceGroupTheStorageAccountIsIn' was not found."
  }
}

Я развертываю полный шаблон ARM на TheResourceGroupTheStorageAccountIsIn. Тема MyCustomTopicName находится в группе ресурсов, где мы размещаем настраиваемые темы, чтобы все службы могли ее использовать.

Я пробовал использовать полный идентификатор (идентификатор ресурса) настраиваемой темы, но это недопустимо. Идеи?

PS: я использую аналогичный шаблон для создания подписки на функцию Azure, которая работает правильно. Основное отличие заключается в блоке destination, который имеет смысл.


person Jan_V    schedule 06.12.2019    source источник
comment
Не могли бы вы поделиться фрагментом шаблона ARM, который вы используете для развертывания подписки для функции?   -  person Loul G.    schedule 11.12.2019


Ответы (1)


Если я правильно прочитал, вам просто нужно использовать вложенное развертывание и настроить таргетинг на группу ресурсов, в которой находится тема:

{
    "apiVersion": "2017-05-10",
    "name": "nestedTemplate",
    "type": "Microsoft.Resources/deployments",
    "resourceGroup": "your_topic_resource_roup",
    "properties": {
        "mode": "Incremental",
        "template": {
            "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
            "contentVersion": "1.0.0.0",
            "parameters": {},
            "variables": {},
            "resources": [
                {
                    "name": "MyCustomTopicName/Microsoft.EventGrid/MySubscriptionName",
                    "type": "Microsoft.EventGrid/topics/providers/eventSubscriptions",
                    "location": "[resourceGroup().location]",
                    "apiVersion": "2019-06-01",
                    "properties": {
                        "destination": {
                            "endpointType": "StorageQueue",
                            "properties": {
                                "resourceId": "[resourceId('Microsoft.Storage/storageAccounts', variables('theNameOfMyStorageAccount'))]",
                                "queueName": "[variables('theNameOfMyQueue')]"
                            }
                        },
                        "filter": {
                            "advancedFilters": []
                        },
                        "labels": [],
                        "eventDeliverySchema": "EventGridSchema"
                    }
                }
            ]
        }
    }
},
person 4c74356b41    schedule 06.12.2019