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

如何访问Azure函数输入绑定中的EventGrid触发器事件属性

邵正雅
2023-03-14

我想根据它触发的事件网格事件的内容(python worker 运行时)将 cosmos 文档提取到我的 azure 函数中。可以做到这一点吗?

我有下面的function.json:

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "type": "eventGridTrigger",
      "name": "event",
      "direction": "in"
    },
    {
      "name": "documents",
      "type": "cosmosDB",
      "databaseName": "Metadata",
      "collectionName": "DataElementMappings",
      "sqlQuery" : "SELECT * from c where c.id = {subject}",
      "connectionStringSetting": "MyCosmosDBConnectionString",
      "direction": "in"
  }
  ]
}

我想将查询中事件的属性用于cosmos输入绑定。我在这里尝试了主题。它失败了:

[2020年6月4日下午5时34分45秒]系统。Private.CoreLib:执行函数时出现异常:Functions.orch_taskchecker。系统。Private.CoreLib:字典中不存在给定的键“subject”。

所以我没有使用正确的键名。我唯一需要做的键是{data},但不幸的是,我无法使用文档中所说的语法{data.property}访问事件数据中的任何属性。我希望所有事件网格架构键都可用于其他绑定,因为事件是 JSON 有效负载。我没有一个工作,例如eventTime,event_type,主题等。

因为我看到了一个关于存储队列的相同想法的示例,并且他们使用了例如{Queue.id},所以我尝试了像{Event.subject}、{EventGridEvent.subject}这样的东西,但都无济于事。

我在文档中找不到其他绑定中使用的事件网格触发器数据示例。这能实现吗?

共有2个答案

程祺
2023-03-14

这就是事件。get_json()方法,可用于访问python代码中的数据字段,我没有查看绑定

令狐运珧
2023-03-14

对于EventGridTrigger(C#脚本),可用于输入绑定EventGridEvent类的自定义数据对象。

以下示例显示事件存储帐户的blob输入绑定:

 {
    "bindings": [
    {
      "type": "eventGridTrigger",
      "name": "eventGridEvent",
      "direction": "in"
    },
    {
      "type": "blob",
      "name": "body",
      "path": "{data.url}",
      "connection": "rk2018ebstg_STORAGE",
      "direction": "in"
    }
  ],
  "disabled": false
}

请注意,只能引用数据对象中的属性。

 类似资料:
  • 我对azure非常陌生,正在努力处理eventGrid中的python函数触发器。我正在使用从azure为python创建的现成模板,并出现错误。我将共享这些文件。 (init.py) function.json 主机. json 这是我发送给事件网格的数据集 我得到的错误是 也许在上面的某个地方很容易出错,但我找不到。。 提前感谢!

  • 我试图创建一个带有webhookendpoint的azure事件网格功能。但是当我尝试创建我的事件网格订阅时,它说: 正在部署事件订阅:增量中的事件存储部署失败,出现以下错误:{"code":"Url验证"," message ":" https://1e8f90c31be0.ngrok.io/runtime/webhooks/EventGrid. Http POST请求的Webhook验证握手失

  • 关于在物联网场景中使用EventHub的Azure功能,我有几个问题。 EventHub有分区。通常来自特定设备的消息会发送到同一个分区。Azure Function的实例如何分布在EventHub分区中?它是基于性能的吗?如果Azure Function的一个实例设法处理来自所有分区的事件,那么这就足够了,否则每个EventHub分区可能会有一个Azure Function的实例? 读取偏移量呢

  • 我在CosmosDB中有两个集合,和。 集合保存所有历史价格,并不断更新。 我想创建一个Azure函数,它监听< code>StockPrices更新(< code>CosmosDBTrigger),然后对触发器传递的每个< code >文档执行以下操作: 在集合中查找具有匹配代码的股票 在集合中更新股票价格 我不能用<code>CosmosDB(绑定仅在触发器传递单个项时有效)。 我看到它工作的

  • 我已经审阅了Microsoft提供的关于触发器的文档。[https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob-trigger?tabs=python][1] 事实上,在Azure函数中使用参数允许我们检索blob和一些属性(),我们还可以使用函数读取字节,但是我们如何将字节转换为

  • 我已经实现了一个EventGrid触发器来响应Blob存储事件,其逻辑简化如下: 外部API的响应时间不长(1秒或更短),我对主机的配置设置为默认(因此允许无限数量的并发调用)。 当同时添加多个blob(从只有2个blob开始)时,我在日志中得到了很多重复的事件(脚本正在快速地一个接一个地上传blob,中间没有等待时间)。 我觉得这可能是由于我从不承认收到事件,我不知道我是否应该在我的代码中执行此