Как добавить AzureFunction в качестве конечной точки подписки на событие в шаблон ARM? - PullRequest
0 голосов
/ 15 апреля 2020

Я написал шаблон ARM для создания подписки на события в существующей учетной записи хранения, где мне нужно прослушивать события определенного blob.created и blob.deleted контейнера BLOB-объектов и отправлять их в триггерную функцию Azure EventGrid app.

Функция app уже развернута в Azure https://myfunctionapp.azurewebsites.net, и мне трудно создать подписку на событие с помощью шаблона ARM. Обратите внимание, что я использовал версию API 2020-01-01-preview, чтобы AzureFunction была конечной точкой. Шаблон выглядит следующим образом:

{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
    "appName": {
        "type": "string",
        "metadata": {
            "description": "Name of the function app"
        }
    },
    "functionName": {
        "type": "string",
        "defaultValue": "MyFunction",
        "metadata": {
            "description": "Name of the function"
        }
    },
    "eventSubName": {
        "type": "string",
        "defaultValue": "myfunctionappsub",
        "metadata": {
            "description": "The name of the event subscription to create."
        }
    },
    "storageName": {
        "type": "string",
        "metadata": {
            "description": "Storage account name"
        }
    },
    "location": {
        "type": "string",
        "defaultValue": "[resourceGroup().location]",
        "metadata": {
            "description": "Storage account location"
        }
    },
    "containerNamefilter": {
        "type": "string",
        "defaultValue": "-inputblob",
        "metadata": {
            "description": "Container name filter"
        }
    }
},
"variables": {
    "functionAppName": "[resourceId('Microsoft.Web/sites/functions/', parameters('appName'), parameters('functionName'))]"
},
"resources": [
    {
        "type": "Microsoft.Storage/storageAccounts/providers/eventSubscriptions",
        "name": "[concat(parameters('storageName'), '/Microsoft.EventGrid/', parameters('eventSubName'))]",
        "apiVersion": "2020-01-01-preview",
        "dependsOn": [
            "[parameters('storageName')]"
        ],
        "properties": {
            "destination": {
                "endpointType": "AzureFunction",
                "properties": {
                    "resourceId": "[variables('functionAppName')]"
                }
            },
            "filter": {
                "subjectBeginsWith": "",
                "subjectEndsWith": "",
                "isSubjectCaseSensitive": false,
                "includedEventTypes": [
                    "Microsoft.Storage.BlobCreated",
                    "Microsoft.Storage.BlobDeleted"
                ],
                "advancedFilters": [
                    {
                        "key": "subject",
                        "operatorType": "StringContains",
                        "value": "[parameters('containerfilter')]"
                    }
                ]
            }
        }
    }
]
}

Это ошибка, которую я получаю при попытке запустить ее по конвейеру:

2020-04-15T11:09:11.5347864Z Starting template validation.
2020-04-15T11:09:11.5368215Z Deployment name is azuredeploy-xxxxxxx-xxxxxx-xxxx
2020-04-15T11:09:13.1700166Z Template deployment validation was completed successfully.
2020-04-15T11:09:13.1700897Z Starting Deployment.
2020-04-15T11:09:13.1703528Z Deployment name is azuredeploy-xxxxxxx-xxxxxx-xxxx
2020-04-15T11:10:02.5842880Z There were errors in your deployment. Error code: DeploymentFailed.
2020-04-15T11:10:02.5893091Z ##[error]At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.
2020-04-15T11:10:02.5910677Z ##[error]Details:
2020-04-15T11:10:02.5915877Z ##[error]Conflict: {
  "status": "Failed",
  "error": {
    "code": "ResourceDeploymentFailure",
    "message": "The resource operation completed with terminal provisioning state 'Failed'.",
    "details": [
      {
        "code": "Internal error",
        "message": "The operation failed due to an internal server error. The initial state of the impacted resources (if any) are restored. Please try again in few minutes. If error still persists, report 72c636d4-6d09-4c50-8886-7153ddf2a4ee:4/15/2020 11:09:50 AM (UTC) to our forums for assistance or raise a support ticket ."
      }
    ]
  }
}
2020-04-15T11:10:02.5918976Z ##[error]Task failed while creating or updating the template deployment.
2020-04-15T11:10:02.5953000Z ##[section]Finishing: Create or update eventsubscription in RG

Я что-то здесь не так делаю? Я очень новичок в ARM шаблонах.

1 Ответ

1 голос
/ 16 апреля 2020

Если вы хотите создать подписку на сетку событий для существующей учетной записи хранения, см. Следующий шаблон

{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {

    "functionGroup": {
        "type": "string",
        "defaultValue" : "jimtest",
        "metadata": {
            "description": "he group name of  function app"
        }
    },
    "appName": {
        "type": "string",
        "defaultValue" : "testfunjs",
        "metadata": {
            "description": "Name of the function app"
        }
    },
    "functionName": {
        "type": "string",
        "defaultValue": "EventGridTrigger1",
        "metadata": {
            "description": "Name of the function"
        }
    },
    "eventSubName": {
        "type": "string",
        "defaultValue": "myfunctionappsub",
        "metadata": {
            "description": "The name of the event subscription to create."
        }
    },
    "storageName": {
        "type": "string",
        "defaultValue" : "andyprivate",
        "metadata": {
            "description": "Storage account name"
        }
    },
    "location": {
        "type": "string",
        "defaultValue": "[resourceGroup().location]",
        "metadata": {
            "description": "Storage account location"
        }
    },
    "containerNamefilter": {
        "type": "string",
        "defaultValue": "test",
        "metadata": {
            "description": "Container name filter"
        }
    }
},
"variables": {
    "functionId" :"[resourceId(parameters('functionGroup'),'Microsoft.Web/sites/functions/', parameters('appName'), parameters('functionName'))]",  
},
"resources": [
{
        "type": "Microsoft.Storage/storageAccounts/providers/eventSubscriptions",
        "name": "[concat(parameters('storageName'), '/Microsoft.EventGrid/', parameters('eventSubName'))]",
        "apiVersion": "2020-01-01-preview",
        "properties": {
            "destination": {
                "endpointType": "AzureFunction",
                "properties": {
                    "resourceId": "[variables('functionId')]"
                }
            },
            "filter": {
                "subjectBeginsWith": "",
                "subjectEndsWith": "",
                "isSubjectCaseSensitive": false,
                "includedEventTypes": [
                    "Microsoft.Storage.BlobCreated",
                    "Microsoft.Storage.BlobDeleted"
                ],
                "advancedFilters": [
                    {
                        "key": "subject",
                        "operatorType": "StringContains",
                        "value": "[parameters('containerNamefilter')]"
                    }
                ]
            }
        }
    }

]
}

enter image description here enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...