如何从逻辑应用程序中获取资源组名称
How to get Resource Group name from within Logic App
在 Azure 逻辑应用中,如何获取包含当前逻辑应用的资源组的名称?
我想在发送到另一个系统的 JSON 输出中包含一些跟踪详细信息。
我可以获得 运行 标识符(使用 @{workflow()['run']['name']}),
和当前逻辑应用名称(使用 @{workflow()['name']})
但是,我不知道如何获取逻辑应用部署到的资源组的名称。
不得已,我会使用部署模板使用的资源组名称,但如果稍后移动逻辑应用程序,那将是错误的。
我也可以使用标签,但如果移动逻辑应用程序,这可能会再次失调。
谢谢
首先我们可以创建一个"Initialize variable"动作来获取工作流中的所有数据,如下截图所示:
然后我们可以发现工作流中的数据是:
{
"id": "/subscriptions/*****/resourceGroups/huryTest/providers/Microsoft.Logic/workflows/hurylogicblob",
"name": "hurylogicblob",
"type": "Microsoft.Logic/workflows",
"location": "eastus",
"tags": {},
"run": {
"id": "/subscriptions/*****/resourceGroups/huryTest/providers/Microsoft.Logic/workflows/hurylogicblob/runs/*****",
"name": "*****",
"type": "Microsoft.Logic/workflows/runs"
}
}
包含资源组名称,所以我们只需要获取属性 "id"并对其进行子字符串化即可得到资源组名称。 "resourceGroups/" 的长度是 15,所以在下面的表达式中我使用了 add(,15) 和 sub(,15).
您可以使用如下表达式:
substring(workflow()['id'],add(indexOf(workflow()['id'],'resourceGroups/'),15),sub(sub(indexOf(workflow()['id'],'/providers'),indexOf(workflow()['id'],'resourceGroups/')),15))
最后得到逻辑应用的资源组名称:
一个简单的公式可能是:
split(workflow().id, "/")[4]
如果您使用 ARM 模板部署逻辑应用程序(例如,在 Visual Studio 中编辑,检查 Azure DevOps git 存储库并使用发布管道进行部署),您可以创建一个 ARM 参数:
"resGroup_ARM": {
"type": "string",
"defaultValue": "[resourceGroup().name]",
"metadata": {
"description": "Resouce group name"
}
}
然后,您可以创建工作流参数:
"resGroup_LA": {
"type": "string",
"defaultValue": "ResGroup LA default"
}
...并在参数初始化部分给它一个值:
"resGroup_LA": {
"value": "[parameters('resGroup_ARM')]"
}
您可以通过类似的方式获取 resourceGroup() 的所有其他属性,请参阅:https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-functions-resource?tabs=json#resourcegroup
在 Azure 逻辑应用中,如何获取包含当前逻辑应用的资源组的名称?
我想在发送到另一个系统的 JSON 输出中包含一些跟踪详细信息。
我可以获得 运行 标识符(使用 @{workflow()['run']['name']}),
和当前逻辑应用名称(使用 @{workflow()['name']})
但是,我不知道如何获取逻辑应用部署到的资源组的名称。
不得已,我会使用部署模板使用的资源组名称,但如果稍后移动逻辑应用程序,那将是错误的。 我也可以使用标签,但如果移动逻辑应用程序,这可能会再次失调。
谢谢
首先我们可以创建一个"Initialize variable"动作来获取工作流中的所有数据,如下截图所示:
然后我们可以发现工作流中的数据是:
{
"id": "/subscriptions/*****/resourceGroups/huryTest/providers/Microsoft.Logic/workflows/hurylogicblob",
"name": "hurylogicblob",
"type": "Microsoft.Logic/workflows",
"location": "eastus",
"tags": {},
"run": {
"id": "/subscriptions/*****/resourceGroups/huryTest/providers/Microsoft.Logic/workflows/hurylogicblob/runs/*****",
"name": "*****",
"type": "Microsoft.Logic/workflows/runs"
}
}
包含资源组名称,所以我们只需要获取属性 "id"并对其进行子字符串化即可得到资源组名称。 "resourceGroups/" 的长度是 15,所以在下面的表达式中我使用了 add(,15) 和 sub(,15).
您可以使用如下表达式:
substring(workflow()['id'],add(indexOf(workflow()['id'],'resourceGroups/'),15),sub(sub(indexOf(workflow()['id'],'/providers'),indexOf(workflow()['id'],'resourceGroups/')),15))
最后得到逻辑应用的资源组名称:
一个简单的公式可能是:
split(workflow().id, "/")[4]
如果您使用 ARM 模板部署逻辑应用程序(例如,在 Visual Studio 中编辑,检查 Azure DevOps git 存储库并使用发布管道进行部署),您可以创建一个 ARM 参数:
"resGroup_ARM": {
"type": "string",
"defaultValue": "[resourceGroup().name]",
"metadata": {
"description": "Resouce group name"
}
}
然后,您可以创建工作流参数:
"resGroup_LA": {
"type": "string",
"defaultValue": "ResGroup LA default"
}
...并在参数初始化部分给它一个值:
"resGroup_LA": {
"value": "[parameters('resGroup_ARM')]"
}
您可以通过类似的方式获取 resourceGroup() 的所有其他属性,请参阅:https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-functions-resource?tabs=json#resourcegroup