【问题标题】:How to get Resource Group name from within Logic App如何从逻辑应用程序中获取资源组名称
【发布时间】:2019-09-19 16:29:43
【问题描述】:

在 Azure 逻辑应用中,如何获取包含当前逻辑应用的资源组的名称?

我想在发送到另一个系统的 JSON 输出中包含一些跟踪详细信息。

我可以获得运行标识符(使用 @{workflow()['run']['name']} ),

以及当前的逻辑应用名称(使用 @{workflow()['name']} )

但是,我不知道如何获取部署逻辑应用的资源组的名称。

作为最后的手段,我将使用部署模板使用的资源组名称,但如果稍后移动逻辑应用,那将是错误的。 我也可以使用标签,但如果逻辑应用被移动,这可能会失步。

谢谢

【问题讨论】:

    标签: azure-logic-apps


    【解决方案1】:

    一个简单的公式可能是:

    split(workflow().id, "/")[4]
    

    【讨论】:

      【解决方案2】:

      如果您使用 ARM 模板部署逻辑应用程序(例如,在 Visual Studio 中编辑,签入 Azure DevOps git repo 并使用发布管道进行部署),您可以创建一个 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

      【讨论】:

        【解决方案3】:

        首先我们可以创建一个“初始化变量”动作来获取工作流中的所有数据,如下图所示:

        那么我们可以发现工作流中的数据是:

        {
            "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))
        

        终于得到了逻辑应用的资源组名:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-10-09
          • 1970-01-01
          • 1970-01-01
          • 2015-01-30
          • 1970-01-01
          • 2020-08-31
          • 1970-01-01
          相关资源
          最近更新 更多