我正在编写一个自定义任务来将文档发布到 Azure API 门户。我希望任务的 UI 列出所选订阅和资源组的可用 API 管理服务。根据这个问题,这在技术上应该可以通过在我的数据源绑定中指定 endpointUrl 来实现。我试图在 Azure RM Web 部署任务中的数据源之后为端点建模,但我似乎无法让它工作。在我的任务中,我可以选择我的订阅,选择我的资源组,但我的自定义数据源的 pickList 始终为空。我没有在我的任务定义中进行任何明确的身份验证,所以我不确定这是否有某种相关性。以下是我的任务的inputs
和:dataSourceBindings
"inputs": [
{
"name": "ConnectedServiceName",
"type": "connectedService:AzureRM",
"label": "Azure RM Subscription",
"defaultValue": "",
"required": true,
"helpMarkDown": "Select the Azure Resource Manager subscription for the deployment."
},
{
"name": "ResourceGroupName",
"label": "Resource Group",
"type": "pickList",
"required": true,
"helpMarkDown": "Select resource group which contains the API portal"
},
{
"name": "ApiPortalName",
"type": "pickList",
"label": "API Portals",
"defaultValue": "",
"required": true,
"properties": {
"EditableOptions": "True"
},
"helpMarkDown": "Select the Azure Resource Manager subscription for the deployment."
}
],
"dataSourceBindings": [
{
"target": "ResourceGroupName",
"endpointId": "$(ConnectedServiceName)",
"dataSourceName": "AzureResourceGroups"
},
{
"name": "ApiPortals",
"target": "ApiPortalName",
"endpointId": "$(ConnectedServiceName)",
"endpointUrl": "https://management.azure.com/subscriptions/$(endpoint.subscriptionId)/resourceGroups/$(ResourceGroupName)/providers/Microsoft.ApiManagement/service?api-version=2016-07-07",
"resultSelector": "jsonpath:$.value[*].name",
"parameters": {
"ResourceGroupName": "$(ResourceGroupName)"
}
}
更新
在 Chrome 中检查控制台后,我收到一条错误消息,指出我无法调用不以{{endpoint.url}}
. 我在根目录更新了我的任务,{{endpoint.url}}
我确实看到它试图进行我期望的 API 调用:
{
"name": "ApiPortals",
"target": "ApiPortalName",
"endpointId": "$(ConnectedServiceName)",
"endpointUrl": "{{endpoint.url}}/subscriptions/$(endpoint.subscriptionId)/resourceGroups/$(ResourceGroupName)/providers/Microsoft.ApiManagement/service?api-version=2016-07-07",
"resultSelector": "jsonpath:$.value[*].name",
"parameters": {
"ResourceGroupName": "$(ResourceGroupName)"
}
}
现在的问题是,由于某种原因,Azure RM 终结点类型已endpoint.url
解决https://management.core.windows.net
。Azure RM API 托管在https://management.azure.com
. 结果,我收到了 403,因为我的端点凭据适用于 Azure RM 服务主体,而不是 Azure 经典管理 API。
我也用这些信息更新了我的Github 问题。我相信这是一个错误,endpoint.url
Azure RM 服务端点应该解析为https://management.azure.com
. 如果查看 Azure RM 服务终结点中定义的数据源,它们都引用托管在https://managemnet.azure.com
not的 API https://management.core.windows.net
。