我有一个树莓派,该树莓派将消息发送到azure物联网中心,并将消息存储在存储容器中。 现在的问题是,在我的Blob容器中,我具有以下文件夹结构:'iot hub的名称'/ 01 /年/月/日/随机数?/ blobfiles 我不知道这种结构是从哪里来的。它似乎是自动生成的。在Blob中是我的消息,这很好,但文件夹结构很奇怪。 有没有办法删除所有这些不需要的文件夹?删除它们无济于事,因为在收到下一条消息时,它们会再次出现。
无论如何,当修改或添加Blob并选择正确的存储容器时,我想用触发器创建一个逻辑函数,但是触发器永远不会激活。为什么会这样呢?例如,http请求有效。但是Blob触发器不是。
问候, 朱利安
答案 0 :(得分:0)
首先,检查您的存储帐户,并确保它是通用存储帐户,而不是仅Blob的存储帐户。因为
仅Blob存储帐户支持Blob输入和输出 绑定,但不适用于Blob触发器。 Blob存储触发器需要一个 通用存储帐户。
参考:Azure Blob storage bindings for Azure Functions
我在这里显示我的设置,以供您检查设置。
我的存储帐户是通用v1。您可以在存储帐户概述->帐户类型中查看您的帐户。
我的Blob容器名称是“ blobcontainer”,而我的function.json是
{
"bindings": [
{
"name": "myBlob",
"type": "blobTrigger",
"direction": "in",
"path": "blobcontainer/{name}",
"connection": "AzureWebJobsDashboard"
}
],
"disabled": false
}
在这里,您需要检查“ AzureWebJobsDashboard”以查看是否具有正确的存储帐户名称,并键入如下的功能应用程序设置:
我的run.csx是
public static void Run([BlobTrigger("blobcontainer/{name}")] Stream myBlob, string name, TraceWriter log)
{
log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
}
在创建Blob文件后启动该功能,您将看到以下日志:
对于文件夹结构,它由在Azure IoT中心中创建的存储终结点确定,如下所示:
依次是您的IoT中心名称,分区,日期和时间。