如何获取Azure数据存储容器中的文件夹ID以用于逻辑应用部署?
如何获取Azure Blob存储中文件夹的Folder ID供逻辑应用部署使用
我在数据存储容器中创建了一个名为test的文件夹,如下图所示:
该文件夹供我创建的逻辑应用使用,我在导出的逻辑应用代码中发现,逻辑应用正常运行需要用到folder id参数,相关代码片段如下:
"resources": [ { "type": "Microsoft.Logic/workflows", "apiVersion": "2017-07-01", "name": "[parameters('workflows_App_name')]", "location": "westus2", "properties": { "state": "Enabled", "definition": { "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", "contentVersion": "1.0.0.0", "parameters": { "$connections": { "defaultValue": {}, "type": "Object" } }, "triggers": { "When_a_blob_is_added_or_modified_(properties_only)_(V2)": { "recurrence": { "frequency": "Second", "interval": 10 }, "evaluatedRecurrence": { "frequency": "Second", "interval": 10 }, "splitOn": "@triggerBody()", "type": "ApiConnection", "inputs": { "queries": { "checkBothCreatedAndModifiedDateTime": false, "folderId": "JTJmb3B0aWDFWRUITTW5zZm9ybWVkLWRhdGEtZnMlMmZ0ZXN0JTJmdGVzd15GHTY9sb2dpYyUyZg==", "maxFileCount": 10 } } } }, .... ]
其中关键字段为:"folderId": "JTJmb3B0aWDFWRUITTW5zZm9ybWVkLWRhdGEtZnMlMmZ0ZXN0JTJmdGVzd15GHTY9sb2dpYyUyZg==",
上述代码是通过逻辑应用UI生成导出的ARM模板,我需要在生产环境中通过参数化方式部署该模板,无法通过UI交互创建逻辑应用。现在需要获取生产存储容器中将要创建的新文件夹的folder id,这是我完成生产部署缺少的最后一个参数。我尝试在Azure存储资源管理器中查找该值但没有找到,请问如何获取文件夹ID的值?
解决方案
逻辑应用用到的Blob存储folderId本质是UTF-8编码的文件夹路径经过Base64编码后的结果,不需要在存储侧查找预置的ID值,你可以按照规则自行生成,完全支持参数化嵌入部署模板:
- 构造规则:路径格式为
/[容器名]/[文件夹路径],将该字符串做Base64编码就是你需要的folderId - 示例:如果你的生产容器名为
prod-transformed-data-fs,目标文件夹路径为prod/test,那么先构造路径字符串/prod-transformed-data-fs/prod/test,再将该字符串做Base64编码,得到的结果就是对应folderId
你可以通过以下两种方式生成:
- 本地生成:用系统自带的Base64工具直接编码即可
Linux环境执行命令:echo -n "/容器名/文件夹路径" | base64
Windows PowerShell环境执行命令:[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("/容器名/文件夹路径")) - 模板内动态生成:直接用ARM模板内置函数生成,不需要提前计算参数值
直接在ARM模板的folderId字段填入以下表达式,传入容器名和文件夹路径参数即可自动生成对应值:"folderId": "[base64(concat('/', parameters('storageContainerName'), '/', parameters('targetFolderPath')))]"
内容的提问来源于stack exchange,提问作者abautista
相关产品推荐
相关产品推荐

