Python V2 事件网格输出在 Azure 门户不显示,仅触发器显示(使用微软代码且没有看到任何错误)

1 投票
1 回答
97 浏览
提问于 2025-04-14 17:10

我正在使用Python V2模型的事件网格触发器和输出绑定。我用的是微软提供的示例代码。我通过git行动和本地执行来进行部署。
我尝试只部署触发器,结果成功了,并且在Azure门户上可以看到它。
但是当我尝试部署时,想要输出到一个自定义主题。虽然在git行动中成功部署,没有任何错误,但我在Azure门户上看不到它,而且它也停止了触发。

我的requirements.txt文件里只写了azure-functions。

import logging
import azure.functions as func
import datetime


@app.function_name(name="eventGridTrigger")
@app.route(route="eventgrid_output")
@app.event_grid_output(
    arg_name="outputEvent",
    topic_endpoint_uri="MyEventGridTopicUriSetting",
    topic_key_setting="MyEventGridTopicKeySetting")
def eventgrid_output(eventGridEvent: func.EventGridEvent, 
         outputEvent: func.Out[func.EventGridOutputEvent]) -> None:

    logging.log("eventGridEvent: ", eventGridEvent)

    outputEvent.set(
        func.EventGridOutputEvent(
            id="test-id",
            data={"tag1": "value1", "tag2": "value2"},
            subject="test-subject",
            event_type="test-event-1",
            event_time=datetime.datetime.utcnow(),
            data_version="1.0"))

我希望能够看到它,并且让它被触发,把事件转发到自定义主题。

1 个回答

0

我按照微软的文档,实现了输出绑定,下面是我用的代码:

代码片段:

app = func.FunctionApp()

@app.function_name(name="eventgridout")
@app.event_grid_trigger(arg_name="eventGridEvent")
@app.event_grid_output(
    arg_name="outputEvent",
    topic_endpoint_uri="MyEventGridTopicUriSetting",
    topic_key_setting="MyEventGridTopicKeySetting")
def eventgrid_output(eventGridEvent: func.EventGridEvent, 
         outputEvent: func.Out[func.EventGridOutputEvent]) -> None:

    logging.info("eventGridEvent: %s", eventGridEvent)

    outputEvent.set(
        func.EventGridOutputEvent(
            id="123",
            data={"tag1": "value1", "tag2": "value2"},
            subject="test-subject",
            event_type="test-event-1",
            event_time=datetime.datetime.utcnow(),
            data_version="1.0"))

local.settings.json:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "python",
    "AzureWebJobsFeatureFlags": "EnableWorkerIndexing",
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "MyEventGridTopicUriSetting":"<Topic_Endpoint_Uri>",
    "MyEventGridTopicKeySetting":"<Topic_access_key>"
  }
}
  • 创建了一个事件网格主题,并配置了与函数应用程序端点的订阅。

这里插入图片描述

  • 在函数应用程序的 环境变量=>应用设置 中添加了设置:
1. MyEventGridTopicUriSetting="<Topic_Endpoint_Uri>"
2. MyEventGridTopicKeySetting="<Topic_access_key>"

这里插入图片描述

  • 将函数部署到Azure上:

这里插入图片描述

这里插入图片描述

  • 成功触发了这个函数:

这里插入图片描述

这里插入图片描述

  • 配置了事件中心,将事件发送到存储账户队列。

这里插入图片描述

撰写回答