Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure 如何在内联数据源绑定中使用endpointUrl?_Azure_Azure Pipelines Build Task_Azure Pipelines Release Pipeline - Fatal编程技术网

Azure 如何在内联数据源绑定中使用endpointUrl?

Azure 如何在内联数据源绑定中使用endpointUrl?,azure,azure-pipelines-build-task,azure-pipelines-release-pipeline,Azure,Azure Pipelines Build Task,Azure Pipelines Release Pipeline,我正在编写一个自定义任务,以将文档发布到Azure API门户。我希望任务的UI列出所选订阅和资源组的可用API管理服务。根据,从技术上讲,这应该可以通过指定与我的数据源绑定内联的endpointUrl来实现。在Azure RM Web部署任务中,我尝试在数据源之后对端点进行建模,但似乎无法使其正常工作。在我的任务中,我可以选择我的订阅,选择我的资源组,但我的自定义数据源的选择列表始终为空。我没有在我的任务定义中做任何显式的身份验证,所以我不确定这是否有某种关联。以下是我的任务的输入和数据源绑定

我正在编写一个自定义任务,以将文档发布到Azure API门户。我希望任务的UI列出所选订阅和资源组的可用API管理服务。根据,从技术上讲,这应该可以通过指定与我的数据源绑定内联的endpointUrl来实现。在Azure RM Web部署任务中,我尝试在数据源之后对端点进行建模,但似乎无法使其正常工作。在我的任务中,我可以选择我的订阅,选择我的资源组,但我的自定义数据源的选择列表始终为空。我没有在我的任务定义中做任何显式的身份验证,所以我不确定这是否有某种关联。以下是我的任务的输入和数据源绑定:

"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}开头的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)"
      }
    }
现在的问题是,出于某种原因,endpoint.url解析为https://management.core.windows.net 对于Azure RM端点类型。Azure RM API托管在https://management.azure.com. 因此,我收到了403,因为我的端点凭据用于Azure RM服务主体,而不是Azure Classic管理API

我也用这些信息更新了我的帐户。我相信这是一个bug,Azure RM服务端点的endpoint.url应该解析为https://management.azure.com. 如果查看在Azure RM服务端点中定义的数据源,它们都引用托管在中的APIhttps://managemnet.azure.com 不https://management.core.windows.net.

检查,您不能在task.json中对数据源绑定使用endpointUrl和resultSelector。用于在vss-extension.json文件中定义自定义服务端点。您还错过了门户的数据源名称

如果要使用URL调用Rest API并使用task.json中的选择器,可以使用sourceDefinitions而不是dataSourceBindings。有关详细信息,请参阅中我的回答。但是,sourceDefinitions目前只支持基本身份验证,这意味着这也不适用于您的场景


因此,您需要创建一个定制的服务端点来实现目前所需的功能。

您的extension.json是什么样子的?您的数据源必须在那里定义。签出:@jessehouwing我可以在自定义服务端点之外定义数据源吗?实际上,我想使用现有的AzureRM订阅端点,但只是使用额外的数据源对其进行扩展,而这些数据源不是现成的。这在vsts代理repo或vsts任务库repo上可能值得一提。请尝试通过开发人员工具捕获实际请求。@Eddie MFST这不完全正确。如果URL以{{endpoint.URL}开头,我可以使用endpointUrl。我已经用其他信息更新了我的问题。