Есть ли API для перечисления всех регионов Azure?

Я хотел бы перечислить все местоположения Azure через некоторый API (мне нужно создать несколько файлов конфигурации для каждого региона и использовать точное наименование, которое Azure делает, чтобы избежать опечаток). Я нашел этот вопрос, но в нем перечислены только те регионы, которым разрешено использовать определенную подписку.

Я хочу перечислить все регионы, которые существуют, независимо от того, имеет ли моя подписка доступ или нет.

7 ответов

Решение

Get-AzureRMLocation предоставит вам список местоположений для вашей учетной записи / арендатора / подписки, с которыми вы работаете.

az account list-locations -o table

даст вам стол, как:

DisplayName          Latitude    Longitude    Name
-------------------  ----------  -----------  ------------------
East Asia            22.267      114.188      eastasia
Southeast Asia       1.283       103.833      southeastasia
Central US           41.5908     -93.6208     centralus
East US              37.3719     -79.8164     eastus
East US 2            36.6681     -78.3889     eastus2
West US              37.783      -122.417     westus
North Central US     41.8819     -87.6278     northcentralus
South Central US     29.4167     -98.5        southcentralus
North Europe         53.3478     -6.2597      northeurope
West Europe          52.3667     4.9          westeurope
Japan West           34.6939     135.5022     japanwest
Japan East           35.68       139.77       japaneast
Brazil South         -23.55      -46.633      brazilsouth
Australia East       -33.86      151.2094     australiaeast
Australia Southeast  -37.8136    144.9631     australiasoutheast
South India          12.9822     80.1636      southindia
Central India        18.5822     73.9197      centralindia
West India           19.088      72.868       westindia
Canada Central       43.653      -79.383      canadacentral
Canada East          46.817      -71.217      canadaeast
UK South             50.941      -0.799       uksouth
UK West              53.427      -3.084       ukwest
West Central US      40.890      -110.234     westcentralus
West US 2            47.233      -119.852     westus2
Korea Central        37.5665     126.9780     koreacentral
Korea South          35.1796     129.0756     koreasouth
France Central       46.3772     2.3730       francecentral
France South         43.8345     2.1972       francesouth
Australia Central    -35.3075    149.1244     australiacentral
Australia Central 2  -35.3075    149.1244     australiacentral2
South Africa North   -25.731340  28.218370    southafricanorth
South Africa West    -34.075691  18.843266    southafricawest

Это старый вопрос, на который уже есть принятый ответ. Но учитывая, что в модули Azure было внесено несколько изменений, поэтому здесь добавлена ​​последняя команда.

Я не думаю, что API для определения местоположения все еще существует. Но с последней версией модуля Powershell Az вы можете получать местоположения

Get-AzLocation | select DisplayName, Location | Format-Table

Это дает вам некоторую свободу выбора необходимого свойства и форматирования вывода в табличном формате. Команда AZ CLI остается такой же, как указано выше.

Я нашел способ сделать это здесь:

На момент написания этой статьи на странице состояния Azure перечислены виртуальные машины как доступные везде. Итак, я запустил команду Azure PowerShell:

Login-AzureRmAccount
Get-AzureRmResourceProvider -ProviderNamespace Microsoft.Compute
$resources.ResourceTypes.Where{($_.ResourceTypeName -eq 'virtualMachines')}.Locations

Примечание. Это НЕ перечисляет регионы в Azure National Clouds; (Обратите внимание, что страница состояния Azure включает в себя 2 региона Германии, но не другие области национального облака). Когда я запустил это, API возвратил 26 общедоступных областей публичного облака (см. Ниже). Я вручную сопоставил это со списком регионов Azure, и это правильно на момент написания статьи.

East US
East US 2
West US
Central US
North Central US
South Central US
North Europe
West Europe
East Asia
Southeast Asia
Japan East
Japan West
Australia East
Australia Southeast
Brazil South
South India
Central India
West India
Canada Central
Canada East
West US 2
West Central US
UK South
UK West
Korea Central
Korea South

Я предполагаю, что если вы запустили вышеописанное с учетной записью Azure в Германии, вы увидите регионы Германии.

Возможным решением с использованием сценария powershell было бы проанализировать ответ с URL-адреса: https://azure.microsoft.com/en-us/regions/. Используя это, вы можете получить информацию о недавно объявленных регионах.

Если вы не против использования Java или C#, то нижеприведенные решения также удобны.

  1. Для списка регионов в java зависимость в maven - это azure-mgmt-resources, расположенный по адресу https://github.com/Azure/azure-libraries-for-java/tree/master/azure-mgmt-resources. Документация: https://azure.github.io/azure-sdk-for-java/com/microsoft/azure/management/resources/fluentcore/arm/Region.html

  2. В случае, если вы используете C#, зависимость в nuget - это Microsoft.Azure.Management.ResourceManager.Fluent. И для справки, URL исходного кода: https://github.com/Azure/azure-libraries-for-net/blob/master/src/ResourceManagement/ResourceManager/Region.cs

Я искал способ получить регионы Azure без аутентификации в Azure и наткнулся на этот поток. Как и в ответе @girip11, я опирался на общедоступную документацию Azure. Это скрипт Python для получения данных:

      import requests
import pandas as pd
from re import search


def list_azure_regions():
    url = 'https://azure.microsoft.com/en-us/explore/global-infrastructure/geographies/'
    html = requests.get(url).content
    df_list = pd.read_html(html)

    regions_list = []
    locations_list = []

    for df in df_list:
        for dc in list(df):
            if search('Regions', dc):
                pass
            else:
                if search('Coming soon', dc):
                    state = 'planned'
                else:
                    state = 'active'

                location = df[dc][0]
                region = dc.removesuffix('  Start free')
                region = region.removesuffix('  Get started')
                region = region.removesuffix('  Coming soon')
                if region in regions_list:
                    pass
                else:
                    regions_list.append(region)
                    locations_list.append(
                        dict({
                            'display_name': region,
                            'name': region.replace(' ','').lower(),
                            'location': location,
                            'state': state
                        })
                    )

    return locations_list

azure_regions = list_azure_regions()
print(azure_regions)

Скрипт возвращает ответ типа<class 'list'>но при необходимости его можно преобразовать во что-то более читаемое. IE при работе в Windows:

      > python .\get-azure-regions.py | ConvertFrom-Json

display_name         name               location        state
------------         ----               --------        -----
East Asia            eastasia           Hong Kong       active
Southeast Asia       southeastasia      Singapore       active
Australia Central    australiacentral   Canberra        active
Australia East       australiaeast      New South Wales active
Australia Southeast  australiasoutheast Victoria        active
China East           chinaeast          Shanghai        active
China East 2         chinaeast2         Shanghai        active
China North          chinanorth         Beijing         active
China North 2        chinanorth2        Beijing         active
China North 3        chinanorth3        Hebei           active
Central India        centralindia       Pune            active
India South Central  indiasouthcentral  Hyderabad       active
South India          southindia         Chennai         active
Indonesia Central    indonesiacentral   Jakarta         planned
Japan East           japaneast          Tokyo, Saitama  active
Japan West           japanwest          Osaka           active
Korea Central        koreacentral       Seoul           active
Malaysia West        malaysiawest       Kuala Lumpur    planned
New Zealand North    newzealandnorth    Auckland        planned
Taiwan North         taiwannorth        Taipei          planned
Austria East         austriaeast        Vienna          planned
Belgium Central      belgiumcentral     Brussels        active
...

Вы можете использовать следующий REST API:https://management.azure.com/subscriptions/**YOUR_SUBSCRIPTION_ID**/providers?api-version=2020-10-01

ВИДЕТЬ:

Но, как и PowerShell и командная строка AZ, здесь отображаются только регионы центра обработки данных, доступные для указанной подписки.

Другие вопросы по тегам