Python V2 事件网格输出在 Azure 门户不显示,仅触发器显示(使用微软代码且没有看到任何错误)
我正在使用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上:
- 成功触发了这个函数:
- 配置了事件中心,将事件发送到存储账户队列。