Iothub邮件路由到不同的Azure存储Blob

时间:2019-08-19 01:51:16

标签: azure-iot-hub

我们正在尝试将来自iothub的传入消息路由到另一个Azure存储Blob。 我们已经能够将传入消息路由到我们的内部Azure存储Blob。任何人都知道是否有可能将传入的消息路由到另一个Azure存储Blob,这意味着我们可以将消息写入存储Blob。

iothub-messagerouting-to-internal-storage-blob 我了解它可以从相同的订阅访问存储Blob。 但是可以从不同的订阅访问不同的存储Blob吗?

提前谢谢。

2 个答案:

答案 0 :(得分:0)

您可以使用REST API更新Azure IoT中心资源的元数据。

storageContainers 数组中项目的示例:

     {
        "connectionString": "myStorageConnectionString",
        "containerName": "mycontainer",
        "fileNameFormat": "{iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}",
        "batchFrequencyInSeconds": 60,
        "maxChunkSizeInBytes": 104857600,
        "encoding": "json",
        "name": "mystorage"
      }

请注意,GET / PUT请求需要Authorization Bearer令牌。出于测试目的,例如,当您单击尝试时,可以从this获取令牌,请参阅请求预览。

答案 1 :(得分:0)

如果您需要同时使用来自不同订阅的2个存储帐户,则可以,但不能通过内置集成。

作为一种可能的解决方案,侦听原始Blob存储的事件,请触发Azure函数,该函数将通过ConnectionString(或删除或其他操作)将传入文件的副本复制到另一个预订的另一个Blob存储中

更新

如@Roman Kiss所述,为了更改路由,需要使用ARM模板。

请参见Iot Hub and message routing

您将需要制作模板文档。为了使生活更轻松,您可以首先导出现有的ARM模板,对其进行修改,然后重新应用。

要导出,请转到IOThub->导出模板->下载: enter image description here

在“路由”->“端点”部分中修改文件(也许“ storageContainers”对象中的其他字段需要调整为当前数据。您可以在此ARM模板中引入新参数,并在“ storageContainers”中重新指向项目“”(以适当的参数):

 "storageContainers": [
       {
           "connectionString": 
           "<<<<<ConnectionStringToTheNewStorage>>>>>",
           "containerName": "[parameters('storageContainerName')]",
           "fileNameFormat": "{iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}",
           "batchFrequencyInSeconds": 100,
           "maxChunkSizeInBytes": 104857600,
           "encoding": "json",
           "name": "[parameters('storage_endpoint')]",
           "subscriptionId": "[parameters('subscriptionId')]",
           "resourceGroup": "[resourceGroup().Name]"
       }
   ]

然后deploy the RM template


为了不弄乱当前的IotHub及其路由,可以创建一个测试环境(如@Roman Kiss所指,创建一个免费的IotHub)以重现当前的基础结构,并通过ARM模板执行更新。对结果满意后,对生产基础结构进行同样的操作