0

在尝试访问政府云中的RateCard信息时,区域 usgovvirgia并从 github 上的示例工作:https ://github.com/Azure-Samples/billing-dotnet-usage-api 。

GitHub 示例引发未处理的异常:AADSTS65005(请参见下面的链接)

那里提到了这个错误,但是在修改程序的引用部分时,我还没有找到解决这个问题的方法,并且强烈怀疑这个问题是由于美国政府云的差异造成的。(有关门户中的应用程序设置,请参见下图)。

我的 RegisteredApp:
RateCardHM,appId/clientID:XXXXXXXX-4ba0-47a3-811e-ca0b0b74118a -> 所需权限->(委托 -- NoApplicationPermissionsAvailable)以组织用户身份访问 Azure 服务管理(预览版)

RequiresAdmin: No {"AADSTS65005: Invalid resource. 客户端请求访问未在客户端应用程序注册中请求的权限中列出的资源。客户端应用程序 ID: XXXXXXXX-XXXX-47a3-811e-ca0b0b74118a。来自请求的资源值: https://management.usgovcloudapi.net/ . 资源app ID: 40a69793-8fe6-4db1-9591-dbc5c57b17d8. 来自app注册的有效资源列表: 797f4846-ba00-4fd7-ba43-dac1f8f63013, 00000002-0000-0000- c000-000000000000。跟踪 ID:6c1f3716-12ca-489e-b183-99cb6f730300 相关 ID:57dbf637-8e01-42f2-873c-4723f1814254 时间戳:2018-03-14 18:43:33Z"}

由于 usgovvirginia 可能没有“2 字母 ISO 代码”,应该使用什么?

https://msdn.microsoft.com/en-us/library/azure/mt219004.aspx表示:
•将{RegionInfo} 设置为购买优惠的2 字母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?

下图显示了已将应用程序添加为阅读器的警报: 在此处输入图像描述

在此处输入图像描述

4

2 回答 2

1

首先,您需要确保政府订阅实际上支持 Billing API。我似乎无法在 Internet 上找到有关可支持性的官方参考资料。最好在这里问一下https://azure.microsoft.com/en-us/global-infrastructure/government/contact/

如果支持,通常您需要将您注册的客户端应用程序添加到政府订阅。

在此处输入图像描述

在访问控制 (IAM) 边栏选项卡下,单击添加。在Role下选择Reader(以防您只需要获取信息而不进行任何更改)。在选择下,您可以查找您的客户端应用程序名称(与客户端 ID 关联的名称),您还可以复制客户端 ID 并粘贴到此字段。

在此处输入图像描述

如果没有适当的权限,您注册的客户端应用程序无法读取您的政府资源以通过 REST API 检索账单信息。

P/S:如果您想明确控制访问,还有一个名为Billing Reader的角色。

在此处输入图像描述

于 2018-03-15T16:54:38.697 回答
0

Microsoft 支持人员现已证明,企业帐户(或 CSP 帐户)无法访问 RateCard API。

https://docs.microsoft.com/en-us/azure/billing/billing-usage-rate-card-overview#azure-resource-ratecard-api-preview

Azure 资源费率卡 API(预览版)

  • 使用 Azure Resource RateCard API 获取可用 Azure 资源的列表以及每个资源的估计定价信息。API 包括: Azure 基于角色的访问控制 - 在 Azure 门户上或通过 Azure PowerShell cmdlet 配置访问策略,以指定哪些用户或应用程序可以访问 RateCard 数据。调用方必须使用标准 Azure Active Directory 令牌进行身份验证。将调用者添加到 Reader、Owner 或 Contributor 角色,以访问特定 Azure 订阅的使用数据。
  • 支持即用即付、MSDN、货币承诺和货币信用优惠(不支持 EA 和 CSP)- 此 API 提供 Azure 优惠级别的费率信息。此 API 的调用者必须传入报价信息以获取资源详细信息和费率。我们目前无法提供 EA 费率,因为 EA 提供的每个注册都有自定义费率。

感谢所有试图提供帮助的人。

于 2018-03-17T02:30:04.037 回答