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

Python Azure函数,EventGrid触发器

万俟旭
2023-03-14

我对azure非常陌生,正在努力处理eventGrid中的python函数触发器。我正在使用从azure为python创建的现成模板,并出现错误。我将共享这些文件。

(init.py)

import json
import logging

import azure.functions as func


def main(event: func.EventGridEvent):

    result = json.dumps(
        {
            "id": event.id,
            "data": event.get_json(),
            "topic": event.topic,
            "subject": event.subject,
            "event_type": event.event_type,
        }
    )

    logging.info("Python EventGrid trigger processed an event: %s", result)

function.json

{
  "bindings": [
    {
      "type": "eventGridTrigger",
      "name": "event",
      "direction": "in"
    }
  ],
  "disabled": false,
  "scriptFile": "__init__.py"
}

主机. json

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "excludedTypes": "Request"
      }
    }
  },
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[2.*, 3.0.0)"
  }
}

这是我发送给事件网格的数据集

{
  "topic": "/subscriptions/{subscriptionID}/resourcegroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/event",
  "subject": "eventhubs/test",
  "eventType": "captureFileCreated",
  "eventTime": "2017-07-14T23:10:27.7689666Z",
  "id": "{id}",
  "data": {
    "fileUrl": "https://test.blob.core.windows.net/debugging/testblob.txt",
    "fileType": "AzureBlockBlob",
    "partitionId": "1",
    "sizeInBytes": 0,
    "eventCount": 0,
    "firstSequenceNumber": -1,
    "lastSequenceNumber": -1,
    "firstEnqueueTime": "0001-01-01T00:00:00",
    "lastEnqueueTime": "0001-01-01T00:00:00"
  },
  "dataVersion": "", 
  "metadataVersion": "1" 
}

我得到的错误是

fail: Function.{functionName}[3]
Executed 'Functions.{functionName}' (Failed, Id={someID}, Duration=121ms)
Microsoft.Azure.WebJobs.Host.FunctionInvocationException: Exception while executing function: Functions.{functionName}
System.InvalidOperationException: Exception binding parameter 'event'
System.NotImplementedException: The method or operation is not implemented.

也许在上面的某个地方很容易出错,但我找不到。。

提前感谢!

共有1个答案

梁丘远航
2023-03-14

python fail: function.{函数名称}[3] 执行了“函数。{functionName}' (Failed, Id={someID}, Duration=121ms) Microsoft.Azure.WebJobs.Host.FunctionInvocationException: Exception while execut function: Functions.{函数名称}System.InvalidOperationException:异常绑定参数'event' System.NotImplementedException:方法或操作未实现。

上述错误是一个非常常见的通用错误消息。当应用程序遇到事件网格的某些限制时,将显示此消息。

如果它达到事件网格限制的最大命中,请参考此

注意:内部负载均衡器应用服务环境中本身不支持事件网格触发器。触发器使用 HTTP 请求,如果没有进入虚拟网络的网关,该请求无法访问函数应用。

如果您正在使用消耗计划,请尝试使用专用计划以避免此问题。

请参阅此处的可靠事件处理以关联此错误。

检查事件网格的限制,并根据您的要求选择适当的计划。

azure函数因函数调用异常而失败

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

  • 我想根据它触发的事件网格事件的内容(python worker 运行时)将 cosmos 文档提取到我的 azure 函数中。可以做到这一点吗? 我有下面的function.json: 我想将查询中事件的属性用于cosmos输入绑定。我在这里尝试了主题。它失败了: [2020年6月4日下午5时34分45秒]系统。Private.CoreLib:执行函数时出现异常:Functions.orch_ta

  • 配置报警策略的时候open-falcon支持多种报警触发函数,比如all(#3) diff(#10)等等。 这些#后面的数字表示的是最新的历史点,比如#3代表的是最新的三个点。该数字默认不能大于10,大于10将当作10处理,即只计算最新10个点的值。 说明:#后面的数字的最大值,即在 judge 内存中保留最近几个点,是支持自定义的,具体参考 book 中描述 ; 源码位置 => cfg.exam

  • 我是Azure Function应用程序中blob触发器的新手,需要一些帮助。我正在努力寻找有关如何重命名触发该函数的blob的资源。 我有一个函数应用程序,当一个新的blob被上传到容器时触发,文件被处理,我需要一种方法来将其“标记”为已处理,因此我想重命名blob。 这是我的职责: 我该如何重命名该文件?在这种情况下有可能吗?

  • 我的Azure Functions事件网格触发器没有触发。我是这么做的。 Key Vault设置为将事件报告给EventGrid系统主题 此主题由将事件传递到Azure Function的订阅订阅 函数有一个事件网格触发器(见下文,默认由门户创建): 我用谷歌搜索了一下,对于这样的入门级方案,没有更多的指导。我想的也许是授权...订阅如何触发该函数?在此过程中(通过GUI /门户配置),没有任何关

  • 如果你使用blob存储触发器阅读Azure WebJobs上的留档,它们会提到这不是很可靠: WebJobs SDK扫描日志文件以查看新的或更改的blob。这个过程不是实时的;在创建blob后的几分钟或更长时间内,函数可能不会被触发。此外,存储日志是在“尽力而为”的基础上创建的;无法保证所有事件都将被捕获。在某些情况下,日志可能会丢失。如果您的应用程序无法接受blob触发器的速度和可靠性限制,建议