当前位置: 首页 > 知识库问答 >
问题:

事件网格将事件过滤到订阅中的所有Azure函数

丰誉
2023-03-14

我正在尝试过滤事件网格中的事件,使其仅在我的订阅中的Azure功能更改时触发(例如配置更改、代码更新或创建/删除新功能)。

我使用的 PowerShell 脚本如下所示:

# Provide an endpoint for handling the events. Must be formatted "https://your-endpoint-URL"
$myEndpoint = "https://myendpoint-function.azurewebsites.net"
$subscriptionId = "abcde-34df-4493-9477-notrealid980"

$eventSubscriptionName = "FunctionConfigChanges"

# Select the Azure subscription you want to subscribe to. You need this command only if the 
# current subscription is not the one you wish to subscribe to.
Set-AzContext -Subscription $subscriptionId

$includedEventTypes = "Microsoft.Resources.ResourceActionSuccess", "Microsoft.Resources.ResourceDeleteSuccess", "Microsoft.Resources.ResourceWriteSuccess"
$AdvancedFilters = @{operator="StringContains"; key="Subject"; Values=@("providers/Microsoft.Web/sites")}
New-AzEventGridSubscription -Endpoint $myEndpoint -EventSubscriptionName $eventSubscriptionName -IncludedEventType $includedEventTypes -AdvancedFilter $AdvancedFilters

这将过滤到所有功能和网站(请检查<code>和$AdvancedFilters)。是否有任何方法可以将事件仅过滤到Azure函数?欢迎使用Azure CLI、portal、Powershell或.net sdk中的任何解决方案帮助。

共有1个答案

濮阳振海
2023-03-14

对于您的要求,可以使用以下属性,请注意操作名称和操作位于数据对象中:

>

  • 创建函数:

    "eventType":"Microsoft.Resources.ResourceWriteSuccess"
    "operationName":"Microsoft.Web/sites/functions/write"
    

    删除功能:

    "eventType":"Microsoft.Resources.ResourceDeleteSuccess"   
    "operationName":"Microsoft.Web/sites/functions/delete"
    

    代码已更新(运行.csx 文件):

    "eventType":"Microsoft.Resources.ResourceWriteSuccess"
    "operationName":"Microsoft.Web/sites/hostruntime/vfs/run.csx/write"
    

    配置已更改:

    "eventType":"Microsoft.Resources.ResourceWriteSuccess"
    "operationName":"Microsoft.Web/sites/config/write"
    

    请注意,主题应用服务(目前在预览版中)的订阅可以根据以下属性进行筛选:

    "eventType":"Microsoft.Web.AppUpdated"
    "action":"ChangedAppSettings
    

    订阅者可以从subject属性中找到函数应用(应用服务)和特定函数的名称。

    以下示例显示了如何根据上述要求设置过滤属性:

    "filter": {
      "subjectBeginsWith": "",
      "subjectEndsWith": "",
      "includedEventTypes": [
        "Microsoft.Resources.ResourceWriteSuccess",
        "Microsoft.Resources.ResourceDeleteSuccess"
      ],
    "advancedFilters": [
      {
        "values": [
          "Microsoft.Web/sites/functions/write",
          "Microsoft.Web/sites/functions/delete",
          "Microsoft.Web/sites/hostruntime/vfs/run.csx/write",
          "Microsoft.Web/sites/config/write"
        ],
        "operatorType": "StringIn",
        "key": "Data.operationName"
      }
    ]
    

    }

  •  类似资料:
    • 我正试图开发一个Azure函数来处理由事件中心的捕获功能创建的blob。然而,尽管捕获blobs被正确地存储在容器中,但似乎没有< code>Microsoft。EventHub . capturefile created 事件发布到函数订阅。功能endpoint的事件订阅已创建,没有错误,Azure CLI的输出为 该函数的主体是一个标准的Http触发器,其中包含事件网格endpoint订阅所需

    • 我无法在Azure事件网格中添加新的WebHook订阅。有人能帮忙吗?当我添加webhookendpoint时,出现以下错误。

    • 基本上,我试图使用ARM部署一个事件网格订阅来收集订阅中的特定事件(主题类型= Azure订阅)。我已经有一个创建了事件网格触发功能的功能应用程序,只需要将该功能与事件网格订阅绑定为webhook。 我正在使用Azure DevOps中的发布管道来自动化整个工作流。 以下是我使用的一个示例: 这最终部署了事件网格主题,而不是事件网格订阅。 然后,有人建议我尝试以下操作: 但是这最终以这个错误而失败

    • 我可以在Azure Key Vault中创建事件订阅,但它只允许系统事件网格主题,而不允许自定义事件网格主题。我的首选是自定义事件网格主题,因为我可以分配一个托管标识,并向该托管标识授予必要的RBAC。 是否可以将Azure Key Vault配置为将事件发送到自定义事件网格主题? 这是一个示例自定义事件网格主题:

    • Node.js应用程序可以使用composer-client.BusinessNetworkConnection.onAPI调用从业务网络订阅事件。事件在业务网络模型文件中定义,并由交易处理函数文件中的指定交易处理。有关发布事件的更多信息,请参阅发布事件。 在你开始之前 在应用程序可以订阅事件之前,你必须定义一些事件和发送它们的交易。还必须部署业务网络,并且必须具有可连接到该业务网络的连接配置文件

    • Tendermint 会发出不同的事件,您可以通过Websocket订阅这些事件。这对于第三方应用程序(如 analysys)或检查状态非常有用。 事件列表 您可以通过 Websocket 调用 subscribe RPC 方法订阅上面的任何事件。 { "jsonrpc": "2.0", "method": "subscribe", "id": "0", "para