Azure APIポータルにドキュメントを公開するカスタムタスクを作成しています。タスクのUIで、選択したサブスクリプションおよびリソースグループの利用可能なAPI管理サービスを一覧にしたいとします。 this issueによれば、私のデータソースバインディングでendpointUrl inlineを指定することで、これは技術的に可能です。 Azure RM Web Deploymentタスクのデータソースの後にエンドポイントをモデル化しようとしましたが、動作させることができません。自分のサブスクリプションを選択して自分のリソースグループを選択することができますが、私のカスタムデータソースのpickListは常に空です。私は自分の仕事定義で明示的な認証をしていないので、どういう関係かどうかは分かりません。以下は私の仕事のためのinputs
とdataSourceBindings
です:インラインデータソースバインディングで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}}
で始まらないURLを呼び出すことができないことを示すエラーメッセージを受け取ったChromeでコンソールを検査した後。私はルートに{{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
は、AzureのRMエンドポイントタイプについてhttps://management.core.windows.net
に解決されることです。 Azure RM APIはhttps://management.azure.com
でホストされています。その結果、エンドポイントの資格情報がAzure RMサービスプリンシパルのものであり、Azureクラシック管理APIのものではないので、私は403を受け取っています。
この情報でもGithub Issueを更新しました。これはバグだと思うし、Azure RMサービスエンドポイントのendpoint.url
はhttps://management.azure.com
に解決されるはずです。 Azure RMサービスエンドポイントで定義されているデータソースを見ると、https://managemnet.azure.com
にホストされているAPIはすべて、https://management.core.windows.net
ではありません。
extension.jsonの外観はどうですか?あなたのデータソースはそこで定義されていなければなりません。 – jessehouwing
チェックアウト:https://github.com/Microsoft/vsts-tasks/issues/973 – jessehouwing
@jessehouwingカスタムサービスエンドポイントの外でデータソースを定義できましたか?私は実際には既存のAzureRMサブスクリプションエンドポイントを使用したいが、それを箱から出さない追加のデータソースで拡張するだけだ。 – mclark1129