Azure 具有托管标识的事件网格API连接的ARM模板

Azure 具有托管标识的事件网格API连接的ARM模板,azure,azure-logic-apps,azure-resource-manager,azure-eventgrid,Azure,Azure Logic Apps,Azure Resource Manager,Azure Eventgrid,从逻辑应用程序创建新事件网格连接时,可以从以下3种连接身份验证方法中进行选择: 登录 服务负责人 托管标识 1登录要求用户以交互方式登录/验证 2服务主体要求提供租户、客户端ID和客户端机密值 很明显,这种API连接的ARM模板需要如何修改:需要添加如下内容 "parameterValues": { "token:clientId": "[parameters('ConnectionClientId')]", "tok

从逻辑应用程序创建新事件网格连接时,可以从以下3种连接身份验证方法中进行选择:

登录 服务负责人 托管标识 1登录要求用户以交互方式登录/验证

2服务主体要求提供租户、客户端ID和客户端机密值

很明显,这种API连接的ARM模板需要如何修改:需要添加如下内容

"parameterValues": {
  "token:clientId": "[parameters('ConnectionClientId')]",
  "token:clientSecret": "[parameters('ConnectionClientSecret')]",
  "token:TenantId": "[parameters('ConnectionTenantId')]",
  "token:resourceUri": "https://management.core.windows.net/",
  "token:grantType": "client_credentials"
}
3托管标识只要求选择托管标识。虽然很清楚如何以交互方式创建这样一个API连接,但我找不到关于这种身份验证方法的ARM模板格式的任何信息

因此,问题是——具有托管标识的事件网格连接的ARM模板究竟应该是什么样子?因此,创建的API连接如下所示:


如果要使用托管标识创建事件网格API连接,请参考以下步骤

在Azure Logic app中启用系统分配的标识 允许身份访问资源 有关详细信息,请参阅


答案似乎是,目前,鉴于这一点仍在讨论中

要使用ARM模板创建托管标识api连接,需要包括参数ValueType:Alternative

"properties": {
  "displayName": "ARM API connection",
  "customParameterValues": {},
  "parameterValueType": "Alternative",
  "api": {
    "id": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/arm')]"
  }
}

我找不到这家酒店的任何文件。我发现的唯一原因是通过查看我使用门户创建的api连接的原始json视图。

这不会创建使用托管身份验证的api连接。步骤3将创建一个API连接,该连接仍然需要用户手动进行身份验证。我已经有一个托管标识,并且我可以使用此托管标识用户分配(而不是系统分配)从Logic App designer手动创建事件网格API连接。请参见我问题中创建的API连接的屏幕截图。我需要能够通过ARM模板而不是手动创建这样的API连接。有人知道如何使用托管身份验证创建连接吗?谢谢@Bjorn,我已经尝试了你的建议。我认为应该使用“/managedApis/arm”而不是“/managedApis/azureeventgrid”。我看到的唯一与标准模板不同的是parameterValueType:Alternative。由于某些原因,部署会开始,但永远不会完成。我等了一会儿,然后不得不取消。另外,我希望在某个地方提供托管标识ID。如果不清楚需要使用什么托管标识,我看不出部署如何成功。知道如何在模板中指定它吗?是的,它应该是azureeventgrid。我自己还没有这方面的经验,但我认为它对这些连接器的工作方式是相同的。至于托管标识,正如Jim Xu所说,它是通过在逻辑应用程序的arm模板中插入标识:{type:SystemAssigned}来提供的。Azure将在部署的模板中插入适当的ID,因为它是一个托管标识。您可以在门户的resourcegroup中查看部署。这可能会给你一些线索来解释它失败的原因。您还可以尝试手动删除所有试图部署的资源,以查看这是否有帮助。必须在逻辑应用程序之前部署API连接。当从Logic App通过前端创建API连接并转到其属性时,会显示此连接只能与托管标识一起使用,并且无法进行任何更改。请参见屏幕截图。托管标识详细信息已在此处预配置。如果API连接是从ARM模板创建的,并且您转到其属性,则它有一个授权按钮,可用于更新连接。在逻辑应用程序中包含身份详细信息不会影响API连接配置,首先部署API连接配置。同一事件网格API连接可由不同的逻辑应用程序使用-当我手动创建API连接时,它对我非常有效。我在逻辑应用程序模板中有标识:{type:UserAssigned,userAssignedIdentities:{…:{}}}}。尽管在逻辑应用程序中设置了用户分配的标识,但API连接模板还必须以某种方式指定托管标识。
{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Authorization/roleAssignments",
            "apiVersion": "2018-09-01-preview",
            "name": "[guid(resourceGroup().id)]",
            "properties": {
                "roleDefinitionId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]",
                "principalId": "[reference(resourceId('Microsoft.Logic/workflows','<logic app name>'),'2016-06-01','Full').identity.principalId]"
            }
        }
    ]
}
{
            "type": "Microsoft.Web/connections",
            "apiVersion": "2016-06-01",
            "name": "",
            "location": "",
            "kind": "V1",
            "properties": {
                "displayName": "test",
                "customParameterValues": {},
                "api": {
                    "id": "/subscriptions/<>/providers/Microsoft.Web/locations/<>/managedApis/azureeventgrid"
                }
            }
        }
{
    "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json",
        "actions": {},
        "contentVersion": "1.0.0.0",
        "outputs": {},
        "parameters": {
            "$connections": {
                "defaultValue": {},
                "type": "Object"
            }
        },
        "triggers": {
            "When_a_resource_event_occurs": {
                "inputs": {
                    "body": {
                        "properties": {
                            "destination": {
                                "endpointType": "webhook",
                                "properties": {
                                    "endpointUrl": "@{listCallbackUrl()}"
                                }
                            },
                            "topic": ""
                        }
                    },
                    "host": {
                        "connection": {
                            "name": "@parameters('$connections')['azureeventgrid']['connectionId']"
                        }
                    },
                    "path": "/subscriptions/{Azure-subscription-ID}/providers/{}/resource/eventSubscriptions",
                    "queries": {
                        "x-ms-api-version": "2017-09-15-preview"
                    }
                },
                "splitOn": "@triggerBody()",
                "type": "ApiConnectionWebhook"
            }
        }
    },
    "parameters": {
        "$connections": {
            "value": {
                "azureeventgrid": {
                    "connectionId": "/subscriptions/{Azure-subscription-ID}/resourceGroups/{resourcegroup}/providers/Microsoft.Web/connections/{connection-name}",
                    "connectionName": "{connection-name}",
                    "connectionProperties": {
                        "authentication": {
                            "type": "ManagedServiceIdentity"
                        }
                    },
                    "id": "/subscriptions/{Azure-subscription-ID}/providers/Microsoft.Web/locations/{Azure-region}/managedApis/azureeventgrid"
                }
            }
        }
    }
"properties": {
  "displayName": "ARM API connection",
  "customParameterValues": {},
  "parameterValueType": "Alternative",
  "api": {
    "id": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/arm')]"
  }
}