我们正在尝试将来自iothub的传入消息路由到另一个Azure存储Blob。 我们已经能够将传入消息路由到我们的内部Azure存储Blob。任何人都知道是否有可能将传入的消息路由到另一个Azure存储Blob,这意味着我们可以将消息写入存储Blob。
iothub-messagerouting-to-internal-storage-blob 我了解它可以从相同的订阅访问存储Blob。 但是可以从不同的订阅访问不同的存储Blob吗?
提前谢谢。
答案 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模板,对其进行修改,然后重新应用。
在“路由”->“端点”部分中修改文件(也许“ 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]"
}
]
为了不弄乱当前的IotHub及其路由,可以创建一个测试环境(如@Roman Kiss所指,创建一个免费的IotHub)以重现当前的基础结构,并通过ARM模板执行更新。对结果满意后,对生产基础结构进行同样的操作