基本上,我试图使用ARM部署一个事件网格订阅来收集订阅中的特定事件(主题类型= Azure订阅)。我已经有一个创建了事件网格触发功能的功能应用程序,只需要将该功能与事件网格订阅绑定为webhook。
我正在使用Azure DevOps中的发布管道来自动化整个工作流。
以下是我使用的一个示例:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"egstopic": {
"type": "string",
"defaultValue": "egstopic1",
"metadata": {
"description": "Event grid system topic"
}
},
"eventSubName": {
"type": "string",
"defaultValue": "esub1",
"metadata": {
"description": "Event grid system topic"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
},
"eventGridFunc":{
"type": "string",
"defaultValue": "VmAddedListener",
"metadata": {
"description" : "Function Name"
}
}
},
"variables": {
"functionUrl" : "[concat('https://', variables('FunctionAppName'),'.azurewebsites.net/runtime/webhooks/eventgrid?functionName=', parameters('eventGridFunc'),'&code=')]",
"functionAppName": "event-driven-func2"
},
"resources": [
{
"type": "Microsoft.EventGrid/Topics",
"apiVersion": "2018-01-01",
"name": "[parameters('egstopic')]",
"location": "[parameters('location')]",
"properties":{}
},
{
"type": "Microsoft.EventGrid/Topics/providers/eventSubscriptions",
"name": "[concat(parameters('egstopic'), '/Microsoft.EventGrid/', parameters('eventSubName'))]",
"location": "[parameters('location')]",
"apiVersion": "2018-01-01",
"dependsOn": [
"[parameters('egstopic')]"
],
"properties": {
"destination": {
"endpointType": "WebHook",
"properties": {
"endpointUrl": "[concat(variables('functionUrl'), listKeys(resourceId('Microsoft.Web/sites/host/', variables('functionAppName'), 'default'),'2016-08-01').masterKey)]"
}
},
"filter": {
"includedEventTypes": [
"Microsoft.Resources.ResourceWriteSuccess"
],
"advancedFilters": [
{
"key": "data.operationName",
"operatorType": "StringContains",
"values": [
"Microsoft.Compute/virtualMachines/write"
]
}
]
}
}
}
]
}
这最终部署了事件网格主题,而不是事件网格订阅。
然后,有人建议我尝试以下操作:
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.1",
"parameters": {
"egstopic": {
"type": "string",
"defaultValue": "egstopic1",
"metadata": {
"description": "Event grid system topic"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
},
"eventGridFunc":{
"type": "string",
"defaultValue": "VmAddedListener",
"metadata": {
"description" : "Function Name"
}
}
},
"variables": {
"functionUrl" : "[concat('https://', variables('FunctionAppName'),'.azurewebsites.net/runtime/webhooks/eventgrid?functionName=', parameters('eventGridFunc'),'&code=')]",
"functionAppName": "event-driven-func2",
"eventSubName": "[concat('esub',uniquestring(resourceGroup().id))]",
"eventSubTopic": "[concat('/subscriptions/',subscription().subscriptionid)]"
},
"resources": [
{
"type": "Microsoft.EventGrid/systemTopics/eventSubscriptions",
"name": "eventSubEG1",
"location": "[parameters('location')]",
"apiVersion": "2020-04-01-preview",
"properties": {
"destination": {
"endpointType": "WebHook",
"properties": {
"endpointUrl": "[concat(variables('functionUrl'), listKeys(resourceId('Microsoft.Web/sites/host/', variables('functionAppName'), 'default'),'2016-08-01').masterKey)]"
}
},
"filter": {
"includedEventTypes": [
"Microsoft.Resources.ResourceWriteSuccess"
],
"advancedFilters": [
{
"key": "data.operationName",
"operatorType": "StringContains",
"values": [
"Microsoft.Compute/virtualMachines/write"
]
}
]
}
}
}
]
}
但是这最终以这个错误而失败:嵌套资源类型的段数必须与其资源名称相同。根资源类型的段长度必须比其资源名称
大一个
只需要想办法用ARM或者Azure DevOps来自动化这个过程。
我有一个基于你的模板更新的模板,并测试了这个模板,它工作得很好。它创建一个事件网格主题和订阅,并将事件网格触发器功能与它联系起来。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"eventGridTopicName": {
"type": "String",
"metadata": {
"description": "The name of the Event Grid custom topic."
}
},
"eventGridSubscriptionName": {
"type": "String",
"metadata": {
"description": "The name of the Event Grid custom topic's subscription."
}
},
"eventGridSubscriptionURL": {
"type": "String",
"metadata": {
"description": "Event grid subscription URL."
}
},
"location": {
"defaultValue": "[resourceGroup().location]",
"type": "String",
"metadata": {
"description": "The location in which the Event Grid resources should be deployed."
}
}
},
"resources": [
{
"type": "Microsoft.EventGrid/topics",
"apiVersion": "2018-01-01",
"name": "[parameters('eventGridTopicName')]",
"location": "[parameters('location')]"
},
{
"type": "Microsoft.EventGrid/topics/providers/eventSubscriptions",
"apiVersion": "2018-01-01",
"name": "[concat(parameters('eventGridTopicName'), '/Microsoft.EventGrid/', parameters('eventGridSubscriptionName'))]",
"location": "[parameters('location')]",
"dependsOn": [
"[parameters('eventGridTopicName')]"
],
"properties": {
"destination": {
"endpointType": "WebHook",
"properties": {
"endpointUrl": "[parameters('eventGridSubscriptionURL')]"
}
},
"filter": {
"includedEventTypes": [
"All"
]
}
}
}
]
}
您可以通过转到功能应用程序复制事件网格订阅URL-
希望这有帮助!
Node.js应用程序可以使用composer-client.BusinessNetworkConnection.onAPI调用从业务网络订阅事件。事件在业务网络模型文件中定义,并由交易处理函数文件中的指定交易处理。有关发布事件的更多信息,请参阅发布事件。 在你开始之前 在应用程序可以订阅事件之前,你必须定义一些事件和发送它们的交易。还必须部署业务网络,并且必须具有可连接到该业务网络的连接配置文件
我正试图开发一个Azure函数来处理由事件中心的捕获功能创建的blob。然而,尽管捕获blobs被正确地存储在容器中,但似乎没有< code>Microsoft。EventHub . capturefile created 事件发布到函数订阅。功能endpoint的事件订阅已创建,没有错误,Azure CLI的输出为 该函数的主体是一个标准的Http触发器,其中包含事件网格endpoint订阅所需
Tendermint 会发出不同的事件,您可以通过Websocket订阅这些事件。这对于第三方应用程序(如 analysys)或检查状态非常有用。 事件列表 您可以通过 Websocket 调用 subscribe RPC 方法订阅上面的任何事件。 { "jsonrpc": "2.0", "method": "subscribe", "id": "0", "para
调用: myContract.events.allEvents([options][, callback]) 与events相同,只是可以接收合约的全部事件。可以使用options.filter属性进行过滤。
订阅指定的合约事件。 调用: myContract.events.MyEvent([options][, callback]) 参数: options - Object: 可选,用于部署的选项,包含以下字段: filter - Object : 可选,按索引参数过滤事件。例如 {filter: {myNumber: [12,13]}} 表示 “myNumber” 为12或13的所有事件 from
我目前正在使用节点js将主题发布到事件网格,并通过事件网格订阅主题。在https://docs.microsoft.com/en-us/rest/api/eventgrid/使用事件网格API时,我收到一个错误,其中我在创建订阅时无权执行操作。我创建了一个主题并具有访问我的Azure帐户的门禁权限,因此我不明白为什么会出现这个Rest错误。 我的代码: 输出: 感谢您的帮助!