我希望你能帮助我。
我是 Azure 的新手,在理解它时遇到了很多麻烦。我正在尝试编写一个 azure 函数,该函数由 EventHubTrigger 触发(当新事件发送到 eventHub 时),并将该事件存储在我的 cosmos db 表中。(cosmos db 作为输出)。
我正在用 C# 编写,因此 function.json 是自动创建的,我无法编辑它。我似乎无法使其正常工作,正确设置触发器和输出绑定。
这是我的功能代码:
[FunctionName("InsertEvent")]
public static void Run(
[EventHubTrigger("WaterlyNamespace",
Connection = "connectionStr")] string eventHubString,
[CosmosDB(
databaseName: "waterly_db",
collectionName: "water_table",
Id = "device_id",
ConnectionStringSetting = "conStr" )] out dynamic dbItem,
ILogger log)
{
log.LogInformation("C# trigger function processed an event from eventhub");
EventItem dataJson = JsonConvert.DeserializeObject<EventItem>(eventHubString);
//adding timestamp to event json
dataJson.timestamp = DateTime.Now;
dbItem = dataJson;
}
这是生成的function.json:
{
"generatedBy": "Microsoft.NET.Sdk.Functions-3.0.3",
"configurationSource": "attributes",
"bindings": [
{
"type": "eventHubTrigger",
"connection": "ConnectionStr",
"eventHubName": "WaterlyNamespace",
"name": "eventHubString"
}
],
"disabled": false,
"scriptFile": "../bin/Waterly-iot-functions.dll",
"entryPoint": "Waterly_iot_functions.InsertEvent.Run"
}
这是host.json:
{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingExcludedTypes": "Request",
"samplingSettings": {
"isEnabled": true
}
}
},
"extensions": {
"cosmosDB": {
"connectionMode": "Gateway",
"protocol": "Https",
"leaseOptions": {
"leasePrefix": "prefix1"
}
}
}
}
这就是我在发布此代码后在 Azure 门户中看到的内容: 参见图片
任何想法为什么触发器位于 Azure 门户的输出区域中,我错过了什么?
任何帮助将不胜感激。谢谢,