Доступ к API RateCard из Правительственного Облака, Регион usgovvirgia
При попытке получить доступ к информации о RateCard в Правительственном облаке, Region usgovvirgia и работе с примером на github: https://github.com/Azure-Samples/billing-dotnet-usage-api.
Примеры бросков GitHub Необработанное исключение: AADSTS65005 (см. Ссылки ниже)
Эта ошибка упоминается там, но при переработке упомянутых разделов процедуры я не нашел способа исправить это и сильно подозреваю, что проблема связана с различиями в US Gov Cloud. (См. Изображение ниже для настроек приложения на портале).
My RegisteredApp:
RateCardHM, appId / clientID: XXXXXXXX-4ba0-47a3-811e-ca0b0b74118a -> Обязательные разрешения-> (делегированный - NoApplicationPermissionsAvailable) Доступ к управлению службами Azure от имени пользователей организации (предварительный просмотр)
RequireAdmin: Нет {"AADSTS65005: недопустимый ресурс. Клиент запросил доступ к ресурсу, который не указан в запрошенных разрешениях при регистрации приложения клиента. Идентификатор приложения клиента: XXXXXXXX-XXXX-47a3-811e-ca0b0b74118a. Значение ресурса из запроса: https://management.usgovcloudapi.net/. Идентификатор приложения ресурса: 40a69793-8fe6-4db1-9591-dbc5c57b17d8. Список допустимых ресурсов из регистрации приложения: 797f4846-ba00-4fd7-ba43-dac1f8f63013, 00000002-0000-0000-c000-000000000000. Идентификатор трассировки: 6c1f3716-12ca-489e-b183-99cb6f730300 Идентификатор корреляции: 57dbf637-8e01-42f2-873c-4723f1814254 Метка времени: 2018-03-14 18:43:33Z"}
Так как, вероятно, не существует "двухбуквенного кода ISO" для usgovvirginia, что следует использовать?
https://msdn.microsoft.com/en-us/library/azure/mt219004.aspx Указывает:
• Установите {RegionInfo} на двухбуквенный код ISO, в котором было куплено предложение. Примирить с usgovvirginia Регион.
<appSettings>
<add key="ADALServiceURL" value="https://login.microsoftonline.us"/>
<add key="ADALRedirectURL" value="http://localhost"/>
<add key="ARMBillingServiceURL" value="https://management.usgovcloudapi.net"/>
<add key="TenantDomain" value="XXXXX.onmicrosoft.com"/>
<add key="SubscriptionID" value="XXXXXXXX-1293-4060-a2ed-0da3db612bcc"/>
<add key="ClientId" value="XXXXXXXX-4ba0-47a3-811e-ca0b0b74118a"/>
<add key="RegionInfo" value="usgovvirginia"/> <!-- WHAT to use here? -->
</appSettings>
Я бы предпочел получить доступ с помощью PowerShell, но заставить работать приложение-образец C#, скорее всего, будет достаточно и, безусловно, хорошее начало.
ОБНОВЛЕНИЕ СЛЕДУЕТ (подробнее):
После входа в PowerShell AzureRM (как я) "Местоположения" для Microsoft.Commerce и RateCard API пусты:
(Get-AzureRmResourceProvider -ListAvailable | ? ProviderNamespace -eq Microsoft.Commerce)
# Outputs with LOCATION 'empty':
ProviderNamespace : Microsoft.Commerce
RegistrationState : Registered
ResourceTypes : {UsageAggregates, RateCard, operations}
Locations : {}
(Get-AzureRmResourceProvider -ListAvailable | ? ProviderNamespace -eq Microsoft.Commerce).ResourceTypes | ? ResourceTypeName -eq RateCard
# Outputs with LOCATION 'empty' also:
ResourceTypeName : RateCard
Locations : {}
ApiVersions : {2016-08-31-preview, 2015-06-01-preview, 2015-05-15}
Возможно, это означает, что US Gov Cloud не предлагает эти API в каком-либо регионе?
На следующем рисунке показано предупреждение о том, что приложение было добавлено в качестве приложения Reader:
2 ответа
Во-первых, вы должны убедиться, что Billing API действительно поддерживается в рамках государственной подписки. Кажется, я не могу найти официальную ссылку в Интернете о поддержке. Было бы намного лучше спросить об этом здесь https://azure.microsoft.com/en-us/global-infrastructure/government/contact/
Если это поддерживается, обычно вам нужно добавить свое клиентское приложение, которое вы зарегистрировали, в государственную подписку.
В колонке "Контроль доступа (IAM)" нажмите " Добавить". Выберите Reader под ролью (на случай, если вам просто нужно получить информацию без каких-либо изменений). В разделе "Выбор" вы можете найти имя вашего клиентского приложения (к которому привязан идентификатор клиента), вы также можете скопировать идентификатор клиента и вставить его в это поле.
Без вашего соответствующего разрешения ваше зарегистрированное клиентское приложение не может читать данные вашего правительственного ресурса для получения платежной информации через REST API.
P / S: Существует также роль с именем Billing Reader, если вы хотите явно контролировать доступ.
Служба поддержки Майкрософт подтвердила, что доступ к API RateCard недоступен ни для учетной записи предприятия (ни для учетной записи CSP).
https://docs.microsoft.com/en-us/azure/billing/billing-usage-rate-card-overview
Azure Resource RateCard API (предварительный просмотр)
- Используйте API Azure Resource RateCard, чтобы получить список доступных ресурсов Azure и информацию о приблизительной цене для каждого из них. API включает: Управление доступом на основе ролей Azure. Настройте политики доступа на портале Azure или с помощью командлетов Azure PowerShell, чтобы указать, какие пользователи или приложения могут получить доступ к данным RateCard. Абоненты должны использовать стандартные токены Azure Active Directory для аутентификации. Добавьте абонента в роль "Читатель", "Владелец" или "Участник", чтобы получить доступ к данным об использовании для определенной подписки Azure.
- Поддержка предложений Pay-as-you-go, MSDN, денежных обязательств и денежных кредитов (EA и CSP не поддерживаются). Этот API-интерфейс предоставляет информацию о ставке уровня предложения Azure. Вызывающий этот API должен передать информацию о предложении, чтобы получить информацию о ресурсах и расценки. В настоящее время мы не можем предоставить тарифы EA, поскольку в предложениях EA действуют индивидуальные тарифы для каждого участника.
Спасибо всем, кто пытался помочь.