Разработка и интеграция API CrossConnnections в ExpressRoute

API Resource Manager для партнеров ExpressRoute позволяет партнерам ExpressRoute управлять конфигурацией пользовательских каналов ExpressRoute уровня 2 и уровня 3. В API Resource Manager для партнеров ExpressRoute появился новый тип ресурса expressRouteCrossConnections. Партнеры используют данный ресурс для управления пользовательскими каналами ExpressRoute.

Workflow

ЕxpressRouteCrossConnections является теневым ресурсом канала ExpressRoute. Когда пользователь Azure создает канал ExpressRoute и выбирает конкретного партнера ExpressRoute, корпорация Майкрософт создает ресурс expressRouteCrossConnections в партнерской подписке управления Azure ExpressRoute. При этом корпорация Майкрософт определяет группу ресурсов для создания в ней ресурса expressRouteCrossConnections. Стандартом именования группы ресурсов является CrossConnection-PeeringLocation; где PeeringLocation — это расположение службы ExpressRoute. Например, если пользователь создает канал ExpressRoute в Денвере, CrossConnection создается в партнерской подписке Azure в группе ресурсов: CrossConnnection-Denver.

Партнеры ExpressRoute управляют конфигурацией уровня 2 и уровня 3 путем выдачи операций REST для ресурса expressRouteCrossConnections.

Льготы

Преимущества перехода на ресурс expressRouteCrossConnections:

  • Дальнейшие совершенствования для партнеров ExpressRoute будут доступны в ресурсе ExpressRouteCrossConnection.

  • Партнеры могут применять Управление доступом на основе ролей Azure (Azure RBAC) к ресурсу ExpressRouteCrossConnection. Эти элементы управления могут определять разрешения, для которых учетные записи пользователей могут изменять ресурс ExpressRouteCrossConnection, а также добавлять, обновлять и удалять конфигурации пиринга.

  • Ресурс ExpressRouteCrossConnection предоставляет интерфейсы API, которые могут использоваться при устранении неполадок с подключениями ExpressRoute. Сюда входят таблица ARP, сводная таблица маршрутизации BGP и сведения о таблице маршрутизации BGP. Эта возможность не поддерживается классическими API-интерфейсами развертывания.

  • Партнеры также могут просматривать объявленные сообщества на пиринге Майкрософт с помощью ресурса RouteFilter.

Этапы разработки и интеграции API

Для разработки партнерского API партнеры ExpressRoute используют тестовую пользовательскую и тестовую партнерскую настройку. Тестовая пользовательская настройка используется для создания каналов ExpressRoute в расположениях тестового пиринга, сопоставляемых с фиктивными устройствами и портами. Тестовая партнерская настройка используется для управления каналами ExpressRoute, созданными в расположении тестового пиринга.

1. Внесение в список подписок

Чтобы запросить тестовую пользовательскую и тестовую партнерскую настройку, включите в список вашего контакта по техническим вопросам ExpressRoute две подписки Azure с оплатой по мере использования:

  • ExpressRoute_API_Provider_Sub. Эта подписка будет использоваться для управления рабочими каналами ExpressRoute, созданными в расположениях пиринга.

  • ExpressRoute_API_Dev_Provider_Sub: эта подписка будет использоваться для управления каналами ExpressRoute, созданными в расположениях тестового пиринга на фиктивных устройствах и портах.

  • ExpressRoute_API_Dev_Customer_Sub: эта подписка будет использоваться для создания каналов ExpressRoute в расположениях тестового пиринга, сопоставляемых с фиктивными устройствами и портами.

Расположения тестового пиринга: по умолчанию фиктивные устройства и порты не предоставляются производственным пользователям. Чтобы создать каналы ExpressRoute, сопоставленные с тестовой настройкой, необходимо установить флаг функции подписки.

2. Регистрация подписки Dev_Provider для доступа к API ExpressRouteCrossConnection

Чтобы получить доступ к API ExpressRouteCrossConnection, партнерскую подписку необходимо включить в Поставщик ресурсов Microsoft. Network. Выполните действия, описанные в статье Поставщики и типы ресурсов Azure, чтобы завершить процесс регистрации.

3. Настройка проверки подлинности для вызовов REST API диспетчера ресурсов Azure Resource Manager

Чтобы вызвать API служб, большинству служб Azure требуется клиентский код для проверки подлинности в Resource Manager посредством действительных учетных данных. Проверка подлинности координируется между различными субъектами с помощью идентификатора Microsoft Entra и предоставляет клиенту маркер доступа в качестве подтверждения проверки подлинности.

Процесс проверки подлинности состоит из двух основных этапов:

  1. Регистрация клиента.
  2. Создание запроса на доступ.

4. Предоставление клиентскому приложению разрешения участника сетей

После успешной настройки проверки подлинности необходимо предоставить участнику сетей доступ к клиентскому приложению в рамках подписки Dev_Provider_Sub. Чтобы предоставить разрешение, войдите на портал Azure и выполните следующие действия:

  1. Перейдите к разделу "Подписки" и выберите подписку Dev_Provider_Sub
  2. Перейдите на вкладку "Управление доступом (IAM)"
  3. Добавьте назначение ролей
  4. Выберите роль "Участник сетей"
  5. Назначение доступа пользователю, группе или субъекту-службе Microsoft Entra
  6. Выберите клиентское приложение
  7. Сохранить изменения

5. Разработка

Выполните разработку API expressRouteCrossConnections.

Рабочий процесс управления подключениями

После получения ключа службы ExpressRoute от целевого клиента следуйте приведенному ниже рабочему процессу и примерам операций API, чтобы настроить подключение ExpressRoute.

  1. LIST expressRouteCrossConnection. Для управления подключением ExpressRoute необходимо определить значения Name и ResourceGroup для целевого ресурса expressRouteCrossConnection. Значение Name expressRouteCrossConnection — это ключ целевой службы в канале ExpressRoute клиента. Чтобы найти значение ResourceGroupName, необходимо вывести список (LIST) всех ресурсов expressRouteCrossConnection в подписке поставщика и в результатах выполнить поиск ключа целевой службы. На этом этапе можно записать значение ResourceGroupName и сформировать вызов API GET expressRouteCrossConnection.
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": "24e6ea2b-6940-4bec-b0b3-3a9e5471e512",
      "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": "9ee700ad-50b2-4b98-a63a-4e52f855ac24",
      "id": "/subscriptions/8030cec9-2c0c-4361-9949-1655c6e4b0fa/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": []
      }
    }
  ]
}
  1. GET expressRouteCrossConnection. После определения значений Name и ResourceGroupName целевого ресурса expressRouteCrossConnection необходимо выполнить вызов API GET expressRouteCrossConnection.
GET /subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/9ee700ad-50b2-4b98-a63a-4e52f855ac24?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": "9ee700ad-50b2-4b98-a63a-4e52f855ac24",
  "id": "/subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/9ee700ad-50b2-4b98-a63a-4e52f855ac24",
  "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": []
  }
}
  1. PUT expressRouteCrossConnection. После подготовки подключения уровня 2 обновите значение ServiceProviderProvisioningState до Подготовлено. На этом этапе клиент может настроить пиринг Майкрософт или частный пиринг и создать подключение из канала ExpressRoute к виртуальному сетевому шлюзу, развернутому в подписке клиента.
PUT /subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/9ee700ad-50b2-4b98-a63a-4e52f855ac24?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: 0a8d458b-8fe3-44e6-89c9-1b156b946693
Azure-AsyncOperation: https://management.azure.com/subscriptions/8030cec9-2c0c-4361-9949-1655c6e4b0fa/providers/Microsoft.Network/locations/eastus2euap/operations/0a8d458b-8fe3-44e6-89c9-1b156b946693?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": "9ee700ad-50b2-4b98-a63a-4e52f855ac24",
  "id": "/subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/9ee700ad-50b2-4b98-a63a-4e52f855ac24",
  "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\kaanan\Documents\Expressroute\Partner APIs\ARMClient-master\ARMClient-master>armclient get https://management.azure.com/subscriptions/<ProviderManagementSubscription>/providers/Microsoft.Network/locations/eastus2euap/operations/0a8d458b-8fe3-44e6-89c9-1b156b946693?api-version=2018-02-01
{
  "status": "Succeeded"
}
  1. (Необязательно) PUT expressRouteCrossConnection для настройки частного пиринга Если вы управляете подключением BGP уровня 3, вы можете включить частный пиринг.
PUT /subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/9ee700ad-50b2-4b98-a63a-4e52f855ac24/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: 344eccc8-2958-4958-aa6f-3958f3fd5648
Azure-AsyncOperation: https://management.azure.com/subscriptions/<ProviderManagementSubscription>/providers/Microsoft.Network/locations/eastus2euap/operations/344eccc8-2958-4958-aa6f-3958f3fd5648?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/9ee700ad-50b2-4b98-a63a-4e52f855ac24/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/344eccc8-2958-4958-aa6f-3958f3fd5648?api-version=2018-02-01
{
  "status": "Succeeded"
}
  1. (Необязательно) PUT expressRouteCrossConnection для настройки пиринга Майкрософт Если вы управляете подключением BGP уровня 3, вы можете включить пиринг Майкрософт.
PUT /subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/9ee700ad-50b2-4b98-a63a-4e52f855ac24/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": "123.0.0.0/30",
    "secondaryPeerAddressPrefix": "123.0.0.4/30",
    "vlanId": 300,
    "microsoftPeeringConfig": {
      "advertisedPublicPrefixes": [
        "123.1.0.0/24"
      ],
      "customerASN": 45,
      "routingRegistryName": "ARIN"
    }
  },
  "name": "MicrosoftPeering"
}
---------- Response (2530 ms) ------------

HTTP/1.1 201 Created
Pragma: no-cache
Retry-After: 10
x-ms-request-id: e3aa0bbd-4709-4092-a1f1-aa78080929d0
Azure-AsyncOperation: https://management.azure.com/subscriptions/8030cec9-2c0c-4361-9949-1655c6e4b0fa/providers/Microsoft.Network/locations/eastus2euap/operations/e3aa0bbd-4709-4092-a1f1-aa78080929d0?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/9ee700ad-50b2-4b98-a63a-4e52f855ac24/peerings/MicrosoftPeering",
  "properties": {
    "provisioningState": "Updating",
    "peeringType": "MicrosoftPeering",
    "azureASN": 0,
    "peerASN": 900,
    "primaryPeerAddressPrefix": "123.0.0.0/30",
    "secondaryPeerAddressPrefix": "123.0.0.4/30",
    "state": "Disabled",
    "vlanId": 300,
    "lastModifiedBy": "",
    "microsoftPeeringConfig": {
      "advertisedPublicPrefixes": [
        "123.1.0.0/24"
      ],
      "advertisedPublicPrefixesState": "NotConfigured",
      "customerASN": 45,
      "legacyMode": 0,
      "routingRegistryName": "ARIN"
    }
  }
}

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/e3aa0bbd-4709-4092-a1f1-aa78080929d0?api-version=2018-02-01
{
  "status": "Succeeded"
}

REST API

См. раздел REST API ExpressRoute CrossConnections с документацией REST API.

Следующие шаги

Дополнительные сведения о всех REST API для ExpressRoute см. в разделе API-интерфейсы для ExpressRoute.