添加或修改了Azure逻辑应用程序Blob的触发器不起作用

时间:2018-07-02 20:20:33

标签: triggers azure-storage-blobs iot azure-logic-apps

我有一个树莓派,该树莓派将消息发送到azure物联网中心,并将消息存储在存储容器中。 现在的问题是,在我的Blob容器中,我具有以下文件夹结构:'iot hub的名称'/ 01 /年/月/日/随机数?/ blobfiles 我不知道这种结构是从哪里来的。它似乎是自动生成的。在Blob中是我的消息,这很好,但文件夹结构很奇怪。 有没有办法删除所有这些不需要的文件夹?删除它们无济于事,因为在收到下一条消息时,它们会再次出现。

无论如何,当修改或添加Blob并选择正确的存储容器时,我想用触发器创建一个逻辑函数,但是触发器永远不会激活。为什么会这样呢?例如,http请求有效。但是Blob触发器不是。

问候, 朱利安

1 个答案:

答案 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”以查看是否具有正确的存储帐户名称,并键入如下的功能应用程序设置:

enter image description here

我的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文件后启动该功能,您将看到以下日志:

enter image description here

对于文件夹结构,它由在Azure IoT中心中创建的存储终结点确定,如下所示:

enter image description here

依次是您的IoT中心名称,分区,日期和时间。