Azure API 포털에 문서를 게시하는 사용자 지정 작업을 작성하고 있습니다. 선택한 구독 및 리소스 그룹에 사용할 수있는 API 관리 서비스를 나열하는 작업 UI를 원합니다. this issue에 따르면, 내 데이터 소스 바인딩을 사용하여 endpointUrl 인라인을 지정하여 기술적으로 가능해야합니다. Azure RM 웹 배포 작업의 데이터 소스 다음에 엔드 포인트 모델을 만들려고했으나 제대로 작동하지 않는 것 같습니다. 내 작업에서 내 구독을 선택할 수 있지만 내 리소스 그룹을 선택하지만 내 맞춤 데이터 소스의 pickList는 항상 비어 있습니다. 내 작업 정의에서 명시적인 인증을 수행하지 않기 때문에 어떻게 든 관련이 있는지 확실하지 않습니다. 다음은 내 작업의 inputs
및 dataSourceBindings
이다 : 나는 {{endpoint.url}}
로 시작하지 않는 URL을 호출 할 수 없음을 나타내는 오류 메시지를 수신 크롬에서 콘솔을 검사 한 후인라인 데이터 소스 바인딩에서 endpointUrl은 어떻게 사용합니까?
"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)"
}
}
UPDATE
. 나는 루트에 {{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
는 푸른 RM 엔드 포인트 유형에 대한 https://management.core.windows.net
로 확인한다는 것입니다. Azure RM API는 https://management.azure.com
에서 호스팅됩니다. 결과적으로 내 끝점 자격 증명은 Azure RM 서비스 사용자 (Azure RM Service Principal)가 아니고 Azure Classic Management API가 아니기 때문에 403이 표시됩니다.
나는 Github Issue도이 정보로 업데이트했습니다. 나는 이것이 버그이고 Azure RM 서비스 엔드 포인트에 대한 endpoint.url
이 https://management.azure.com
으로 해결되어야한다고 생각합니다. Azure RM 서비스 끝점에 정의 된 데이터 소스를 보면 https://managemnet.azure.com
이 아닌 https://management.core.windows.net
에 호스팅 된 모든 API를 참조합니다.
extension.json의 모양은 무엇입니까? 귀하의 데이터 소스가 거기에 정의되어야합니다. – jessehouwing
체크 아웃 : https://github.com/Microsoft/vsts-tasks/issues/973 – jessehouwing
@jessehouwing 맞춤 서비스 엔드 포인트 외부에서 데이터 소스를 정의 할 수 있습니까? 실제로는 기존의 AzureRM 구독 엔드 포인트를 사용하고 싶지만 상자 밖의 추가 데이터 소스로 확장하면됩니다. – mclark1129