ExpressRoute CrossConnections API の開発と統合
ExpressRoute Partner Resource Manager API を利用すると、ExpressRoute パートナーは顧客の ExpressRoute 回路のレイヤー 2 とレイヤー 3 構成を管理することができます。 ExpressRoute Partner Resource Manager API では、新しいリソースの種類 expressRouteCrossConnections が導入されています。 パートナーはこのリソースを使用して、顧客の ExpressRoute 回路を管理します。
ワークフロー
expressRouteCrossConnections リソースは、ExpressRoute 回路に対するシャドウ リソースです。 Azure の顧客が ExpressRoute 回路を作成し、特定の ExpressRoute パートナーを選択した場合、Microsoft ではパートナーの Azure ExpressRoute 管理サブスクリプションに expressRouteCrossConnections リソースを作成します。 その際に、Microsoft では expressRouteCrossConnections リソースが作成されるリソース グループを定義します。 リソース グループの名前付けの標準は、CrossConnection-PeeringLocation です。PeeringLocation = ExpressRoute の場所となります。 たとえば、顧客がデンバーに ExpressRoute 回線を作成した場合、リソース グループ CrossConnections-Denver 内でパートナーの Azure サブスクリプションに CrossConnection が作成されます。
ExpressRoute パートナーは、expressRouteCrossConnections リソースに対して REST 操作を発行することで、レイヤー 2 とレイヤー 3 構成を管理します。
メリット
expressRouteCrossConnections リソースへの移行のメリット:
ExpressRoute パートナー向けの今後の機能強化はすべて、ExpressRouteCrossConnection リソースで利用可能になる予定です。
パートナーは、Azure ロールベースのアクセス制御 (Azure RBAC) を expressRouteCrossConnection リソースに適用できます。 これらの制御では、expressRouteCrossConnection リソースと add/update/delete ピアリングの構成を変更できるユーザー アカウントへのアクセス許可を定義できます。
expressRouteCrossConnection リソースでは、ExpressRoute 接続のトラブルシューティングに役立つ可能性のある API が公開されています。 これには、ARP テーブル、BGP ルート テーブルの概要、および BGP ルート テーブルの詳細が含まれます。 この機能は、従来のデプロイ API ではサポートされていません。
パートナーは、RouteFilter リソースを使用して、Microsoft ピアリング上で公開されているコミュニティを検索することもできます。
API の開発と統合の手順
Partner API に対して開発を行うには、ExpressRoute パートナーはテスト顧客とテスト パートナーの設定を利用します。 テスト顧客の設定は、ダミーのデバイスとポートにマップする ExpressRoute 回路をテスト ピアリングの場所に作成するために使用されます。 テスト パートナーの設定は、テスト ピアリングの場所に作成された ExpressRoute 回路を管理するために使用されます。
1.サブスクリプションを登録する
テスト パートナーとテスト顧客の設定を要求するには、ExpressRoute の技術担当者に連絡して、2 つの従量課金制 Azure サブスクリプションを登録します。
ExpressRoute_API_Provider_Sub: このサブスクリプションは、ピアリングの場所に作成された運用環境の ExpressRoute 回路を管理するために使用されます。
ExpressRoute_API_Dev_Provider_Sub: このサブスクリプションは、ダミーのデバイスとポート上でテスト ピアリングの場所に作成された ExpressRoute 回路を管理するために使用されます。
ExpressRoute_API_Dev_Customer_Sub: このサブスクリプションは、ダミーのデバイスとポートにマップされた ExpressRoute 回路をテスト ピアリングの場所に作成するために使用されます。
テスト ピアリングの場所: ダミーのデバイスとポートは既定で、運用環境の顧客には公開されません。 テスト設定にマップする ExpressRoute 回路を作成するためには、サブスクリプション機能フラグを有効にする必要があります。
2.Dev_Provider サブスクリプションを登録して expressRouteCrossConnections API にアクセスする
expressRouteCrossConnections API にアクセスするためには、パートナー サブスクリプションが Microsoft.Network Resource Provider に登録されている必要があります。 「Azure リソース プロバイダーと種類」の記事にある手順に従って、登録プロセスを完了します。
3.Azure Resource Manager REST API の呼び出し用に認証を設定する
ほとんどの Azure サービスでは、サービス API を呼び出す前に、有効な資格情報を使用して Resource Manager で認証を行うためのクライアント コードが必要になります。 認証は、Microsoft Entra ID によってさまざまなアクターを連携させて行われ、認証の証拠としてクライアントにアクセス トークンが提供されます。
認証プロセスには、2 つの主な手順があります。
4.クライアント アプリケーションに対するネットワーク共同作成者のアクセス許可を提供する
認証が正常に構成されたら、Dev_Provider_Sub 下で、クライアント アプリケーションへのネットワーク共同作成者のアクセス権を付与する必要があります。 アクセス許可を付与するには、Azure portal にサインインして、次の手順を完了します。
- [サブスクリプション] に移動して、Dev_Provider_Sub を選択する
- [アクセス制御 (IAM)] に移動する
- ロールの割り当てを追加する
- [ネットワーク共同作成者] ロールを選択する
- Microsoft Entra ユーザー、グループ、またはサービス プリンシパルへのアクセスの割り当て
- クライアント アプリケーションを選択する
- 変更を保存する
5.開発
expressRouteCrossConnections API に対する開発を行います。
接続管理ワークフロー
ターゲット顧客から ExpressRoute サービス キーを受け取った後に、次のワークフローとサンプル API の操作に従って、ExpressRoute 接続を構成します。
- expressRouteCrossConnection の一覧を表示する: ExpressRoute 接続を管理するには、ターゲット expressRouteCrossConnection リソースの Name と ResourceGroup を特定する必要があります。 expressRouteCrossConnection の Name は、顧客の ExpressRoute 回線のターゲット サービス キーです。 ResourceGroupName を見つけるには、プロバイダー サブスクリプション内のすべての expressRouteCrossConnections を一覧表示し、ターゲット サービス キーの結果を検索する必要があります。 ここから、ResourceGroupName を記録し、GET expressRouteCrossConnection API 呼び出しを形成できます。
GET /subscriptions/<ProviderManagementSubscription>/providers/Microsoft.Network/expressRouteCrossConnections?api-version=2018-02-01 HTTP/1.1
Host: management.azure.com
Authorization: Bearer eyJ0eXAiOiJKV...
User-Agent: ARMClient/1.2.0.0
Accept: application/json
x-ms-request-id: f484de7d-6c19-412f-a5eb-e5c9dd247d3c
---------- Response (601 ms) ------------
HTTP/1.1 200 OK
Pragma: no-cache
x-ms-request-id: 620ec7bf-4fd1-446f-96e9-97fbae16722f
Strict-Transport-Security: max-age=31536000; includeSubDomains
Cache-Control: no-cache
Server: Microsoft-HTTPAPI/2.0; Microsoft-HTTPAPI/2.0
x-ms-ratelimit-remaining-subscription-reads: 14999
x-ms-correlation-request-id: 6e484d0b-2f2e-4cef-9e18-87a9b7441bc4
x-ms-routing-request-id: WESTUS:20180501T192531Z:6e484d0b-2f2e-4cef-9e18-87a9b7441bc4
X-Content-Type-Options: nosniff
Date: Tue, 01 May 2018 19:25:31 GMT
{
"value": [
{
"name": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"id": "/subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/24e6ea2b-6940-4bec-b0b3-3a9e5471e512",
"etag": "W/\"19fa7ada-5189-4817-a9d6-499b02e379cc\"",
"type": "Microsoft.Network/expressRouteCrossConnections",
"location": "eastus2euap",
"properties": {
"provisioningState": "Succeeded",
"expressRouteCircuit": {
"id": "/subscriptions/<TargetCustomerSubscription>/resourceGroups/Karthikcrossconnectiontest/providers/Microsoft.Network/expressRouteCircuits/TestCircuit2"
},
"peeringLocation": "EUAP Test",
"bandwidthInMbps": 200,
"serviceProviderProvisioningState": "Provisioned",
"peerings": []
}
},
{
"name": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/<ProviderManagementSubscription>",
"etag": "W/\"f07a267f-4a5c-4538-83e5-de1fcb183801\"",
"type": "Microsoft.Network/expressRouteCrossConnections",
"location": "eastus2euap",
"properties": {
"provisioningState": "Succeeded",
"expressRouteCircuit": {
"id": "/subscriptions/<ProviderManagementSubscription>/resourceGroups/Karthikcrossconnectiontest/providers/Microsoft.Network/expressRouteCircuits/TestCircuitXYZ"
},
"peeringLocation": "EUAP Test",
"bandwidthInMbps": 200,
"serviceProviderProvisioningState": "NotProvisioned",
"peerings": []
}
}
]
}
- GET expressRouteCrossConnection: ターゲット expressRouteCrossConnection リソースの Name と ResourceGroupName の両方を特定したら、GET expressRouteCrossConnection API 呼び出しを実行する必要があります。
GET /subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f?api-version=2018-02-01 HTTP/1.1
Host: management.azure.com
Authorization: Bearer eyJ0eXAiOiJKV...
User-Agent: ARMClient/1.2.0.0
Accept: application/json
x-ms-request-id: d17924c4-f977-4c82-b933-d66c5fa334dd
---------- Response (3317 ms) ------------
HTTP/1.1 200 OK
Pragma: no-cache
x-ms-request-id: 41621c90-2e59-4220-9a32-3b29b1198bf5
Strict-Transport-Security: max-age=31536000; includeSubDomains
Cache-Control: no-cache
Server: Microsoft-HTTPAPI/2.0; Microsoft-HTTPAPI/2.0
x-ms-ratelimit-remaining-subscription-reads: 14999
x-ms-correlation-request-id: 85e08ce4-5a8f-4fe4-a434-e3fddef250d4
x-ms-routing-request-id: WESTUS:20180501T193230Z:85e08ce4-5a8f-4fe4-a434-e3fddef250d4
X-Content-Type-Options: nosniff
Date: Tue, 01 May 2018 19:32:29 GMT
{
"name": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
"id": "/subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
"etag": "W/\"f07a267f-4a5c-4538-83e5-de1fcb183801\"",
"type": "Microsoft.Network/expressRouteCrossConnections",
"location": "eastus2euap",
"properties": {
"provisioningState": "Succeeded",
"expressRouteCircuit": {
"id": "/subscriptions/<TargetCustomerSubscription>/resourceGroups/Karthikcrossconnectiontest/providers/Microsoft.Network/expressRouteCircuits/TestCircuitXYZ"
},
"peeringLocation": "EUAP Test",
"bandwidthInMbps": 200,
"serviceProviderProvisioningState": "NotProvisioned",
"primaryAzurePort": "EUAP-ARMTEST-06GMR-CIS-1-PRI-A",
"secondaryAzurePort": "EUAP-ARMTEST-06GMR-CIS-2-SEC-A",
"sTag": 3,
"peerings": []
}
}
- PUT expressRouteCrossConnection: レイヤー 2 接続をプロビジョニングしたら、ServiceProviderProvisioningState を Provisioned に更新します。 この時点で、顧客は Microsoft またはプライベート ピアリングを構成し、ExpressRoute 回線から顧客のサブスクリプションにデプロイされた仮想ネットワーク ゲートウェイへの接続を作成できます。
PUT /subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f?api-version=2018-02-01 HTTP/1.1
Host: management.azure.com
Authorization: Bearer eyJ0eXAiOiJKV...
User-Agent: ARMClient/1.2.0.0
Accept: application/json
x-ms-request-id: d867c3c9-2acf-4c54-a0f0-d7ca50fc7b9b
{
"properties": {
"serviceProviderProvisioningState": "Provisioned",
"peeringLocation": "EUAP Test",
"expressRouteCircuit": {
"id": "/subscriptions/<ProviderManagementSubscription>/resourceGroups/Karthikcrossconnectiontest/providers/Microsoft.Network/expressRouteCircuits/TestCircuitXYZ"
},
"bandwidthInMbps": 200
},
"location": "East US 2 EUAP"
}
---------- Response (1740 ms) ------------
HTTP/1.1 200 OK
Pragma: no-cache
Retry-After: 10
x-ms-request-id: cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a
Azure-AsyncOperation: https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Network/locations/eastus2euap/operations/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a?api-version=2018-02-01
Strict-Transport-Security: max-age=31536000; includeSubDomains
Cache-Control: no-cache
Server: Microsoft-HTTPAPI/2.0; Microsoft-HTTPAPI/2.0
x-ms-ratelimit-remaining-subscription-writes: 1199
x-ms-correlation-request-id: d2d38c28-0dbe-4b40-8824-c74968c46b50
x-ms-routing-request-id: WESTUS:20180501T222105Z:d2d38c28-0dbe-4b40-8824-c74968c46b50
X-Content-Type-Options: nosniff
Date: Tue, 01 May 2018 22:21:04 GMT
{
"name": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
"id": "/subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
"etag": "W/\"ecdcb1a4-873b-4dad-ae56-a4b17795a84a\"",
"type": "Microsoft.Network/expressRouteCrossConnections",
"location": "eastus2euap",
"properties": {
"provisioningState": "Updating",
"expressRouteCircuit": {
"id": "/subscriptions/<TargetCustomerSubscription>/resourceGroups/Karthikcrossconnectiontest/providers/Microsoft.Network/expressRouteCircuits/TestCircuitXYZ"
},
"peeringLocation": "EUAP Test",
"bandwidthInMbps": 200,
"serviceProviderProvisioningState": "Provisioned",
"primaryAzurePort": "",
"secondaryAzurePort": "",
"sTag": 0,
"peerings": []
}
}
C:\Users\Admin\Documents\Expressroute\Partner APIs\ARMClient-master\ARMClient-master>armclient get https://management.azure.com/subscriptions/<ProviderManagementSubscription>/providers/Microsoft.Network/locations/eastus2euap/operations/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a?api-version=2018-02-01
{
"status": "Succeeded"
}
- (省略可能) プライベート ピアリングを構成する PUT expressRouteCrossConnection レイヤー 3 BGP 接続を管理する場合は、プライベート ピアリングを有効にできます
PUT /subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/peerings/AzurePrivatePeering?api-version=2018-02-01 HTTP/1.1
Host: management.azure.com
Authorization: Bearer eyJ0eXAiOiJKV...
User-Agent: ARMClient/1.2.0.0
Accept: application/json
x-ms-request-id: 9c1413a5-6d27-4e87-b075-1fedb15d63a3
{
"properties": {
"peeringType": "AzurePrivatePeering",
"peerASN": 500,
"primaryPeerAddressPrefix": "10.0.0.0/30",
"secondaryPeerAddressPrefix": "10.0.0.4/30",
"sharedKey": "A1B2C3D4",
"vlanId": 200
},
"name": "AzurePrivatePeering"
}
---------- Response (2354 ms) ------------
HTTP/1.1 201 Created
Pragma: no-cache
Retry-After: 10
x-ms-request-id: dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b
Azure-AsyncOperation: https://management.azure.com/subscriptions/<ProviderManagementSubscription>/providers/Microsoft.Network/locations/eastus2euap/operations/dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b?api-version=2018-02-01
Strict-Transport-Security: max-age=31536000; includeSubDomains
Cache-Control: no-cache
Server: Microsoft-HTTPAPI/2.0; Microsoft-HTTPAPI/2.0
x-ms-ratelimit-remaining-subscription-writes: 1199
x-ms-correlation-request-id: b5d08e36-339c-423a-ac2c-b6ec2063c8a6
x-ms-routing-request-id: WESTUS:20180501T194026Z:b5d08e36-339c-423a-ac2c-b6ec2063c8a6
X-Content-Type-Options: nosniff
Date: Tue, 01 May 2018 19:40:26 GMT
{
"name": "AzurePrivatePeering",
"id": "/subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/peerings/AzurePrivatePeering",
"properties": {
"provisioningState": "Updating",
"peeringType": "AzurePrivatePeering",
"azureASN": 0,
"peerASN": 500,
"primaryPeerAddressPrefix": "10.0.0.0/30",
"secondaryPeerAddressPrefix": "10.0.0.4/30",
"sharedKey": "A1B2C3D4",
"state": "Disabled",
"vlanId": 200,
"lastModifiedBy": ""
}
}
C:\Users\kaanan\Documents\Expressroute\Partner APIs\ARMClient-master\ARMClient-master>armclient get https://management.azure.com/subscriptions/<ProviderManagementSubscription>/providers/Microsoft.Network/locations/eastus2euap/operations/dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b?api-version=2018-02-01
{
"status": "Succeeded"
}
- (省略可能) Microsoft ピアリングを構成する PUT expressRouteCrossConnection レイヤー 3 BGP 接続を管理する場合は、Microsoft ピアリングを有効にできます
PUT /subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/peerings/MicrosoftPeering?api-version=2018-02-01 HTTP/1.1
Host: management.azure.com
Authorization: Bearer eyJ0eXAiOiJKV...
User-Agent: ARMClient/1.2.0.0
Accept: application/json
x-ms-request-id: af4527eb-7b68-4a50-b953-c0606524d8f3
{
"properties": {
"peeringType": "MicrosoftPeering",
"peerASN": 900,
"primaryPeerAddressPrefix": "203.0.113.0/30",
"secondaryPeerAddressPrefix": "203.0.113.4/30",
"vlanId": 300,
"microsoftPeeringConfig": {
"advertisedPublicPrefixes": [
"203.0.113.128/25"
],
"customerASN": 45,
"routingRegistryName": "ARIN"
}
},
"name": "MicrosoftPeering"
}
---------- Response (2530 ms) ------------
HTTP/1.1 201 Created
Pragma: no-cache
Retry-After: 10
x-ms-request-id: eeee4efe-ff5f-aa6a-bb7b-cccccc8c8c8c
Azure-AsyncOperation: https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Network/locations/eastus2euap/operations/eeee4efe-ff5f-aa6a-bb7b-cccccc8c8c8c?api-version=2018-02-01
Strict-Transport-Security: max-age=31536000; includeSubDomains
Cache-Control: no-cache
Server: Microsoft-HTTPAPI/2.0; Microsoft-HTTPAPI/2.0
x-ms-ratelimit-remaining-subscription-writes: 1199
x-ms-correlation-request-id: 8e26bc5d-f1cd-4305-a373-860aaf7bb694
x-ms-routing-request-id: WESTUS:20180501T213857Z:8e26bc5d-f1cd-4305-a373-860aaf7bb694
X-Content-Type-Options: nosniff
Date: Tue, 01 May 2018 21:38:56 GMT
{
"name": "MicrosoftPeering",
"id": "/subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/peerings/MicrosoftPeering",
"properties": {
"provisioningState": "Updating",
"peeringType": "MicrosoftPeering",
"azureASN": 0,
"peerASN": 900,
"primaryPeerAddressPrefix": "203.0.113.0/30",
"secondaryPeerAddressPrefix": "203.0.113.4/30",
"state": "Disabled",
"vlanId": 300,
"lastModifiedBy": "",
"microsoftPeeringConfig": {
"advertisedPublicPrefixes": [
"203.0.113.128/25"
],
"advertisedPublicPrefixesState": "NotConfigured",
"customerASN": 45,
"legacyMode": 0,
"routingRegistryName": "ARIN"
}
}
}
C:\Users\Admin\Documents\Expressroute\Partner APIs\ARMClient-master\ARMClient-master>armclient get https://management.azure.com/subscriptions/<ProviderManagementSubscription>/providers/Microsoft.Network/locations/eastus2euap/operations/eeee4efe-ff5f-aa6a-bb7b-cccccc8c8c8c?api-version=2018-02-01
{
"status": "Succeeded"
}
REST API
REST API のドキュメントについては、ExpressRoute CrossConnections REST API に関する記事を参照してください。
次のステップ
すべての ExpressRoute REST API に関する詳細については、「ExpressRoute REST API」を参照してください。