访问来自Government Cloud,Region usgovvirgia的RateCard API

时间:2018-03-14 21:53:51

标签: azure billing azure-api-management ratecard-api

尝试访问 Government Cloud,Region usgovvirgia 中的 RateCard 信息,并在github:https://github.com/Azure-Samples/billing-dotnet-usage-api上的示例中进行操作。

GitHub示例抛出未处理的异常:AADSTS65005(参见下面的链接)

这里提到了这个错误,但是在重新修改过程的参考部分时,我还没有找到解决这个问题的方法,并且强烈怀疑问题是由于美国Gov Cloud的差异造成的。 (请参阅下面的图片,了解门户网站中的应用程序设置)。

我的RegisteredApp:
  RateCardHM,appId / clientID:XXXXXXXX-4ba0-47a3-811e-ca0b0b74118a - >     要求的权限 - > (委托 - NoApplicationPermissionsAvailable)       以组织用户身份访问Azure Service Management(预览)

  

RequiresAdmin:否{“AADSTS65005:资源无效。客户端有   请求访问未在请求中列出的资源   客户端应用程序注册中的权限。客户端应用ID:   XXXXXXXX-XXXX-47a3-811e-ca0b0b74118a。来自请求的资源价值:   https://management.usgovcloudapi.net/。资源应用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 Region协调​​。

<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#示例应用程序运行可能就足够了,当然是一个良好的开端。

My App Configuration

更新后续(更多信息):

使用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}

这可能意味着美国Gov Cloud不会在任何地区提供这些API?

下图显示了已将应用程序添加为Reader的警报: enter image description here

enter image description here

2 个答案:

答案 0 :(得分:1)

首先,您需要确保政府订阅实际支持结算API。我似乎无法在互联网上找到关于可支持性的官方参考。在https://azure.microsoft.com/en-us/global-infrastructure/government/contact/

询问这个问题要好得多

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

enter image description here

在访问控制(IAM)刀片下,单击添加。选择角色下的阅读器(如果您只是需要获取信息而不做任何更改)。在“选择”下,您可以查找客户端应用程序名称(具有关联的客户端ID),也可以复制客户端ID并粘贴到此字段。

enter image description here

如果获得适当的许可,您注册的客户端应用程序无法读取您的政府资源以通过REST API检索结算信息。

P / S:如果您想明确控制访问权限,还有一个名为结算阅读器的角色。

enter image description here

答案 1 :(得分:0)

Microsoft支持部门现已证明,企业帐户(也未在CSP帐户中)无法访问RateCard API。

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

Azure资源RateCard API(预览)

  • 使用Azure Resource RateCard API获取可用列表 Azure资源和每个的估计定价信息。 API 包括:Azure基于角色的访问控制 - 配置您的访问权限 Azure门户上的策略或通过Azure PowerShell cmdlet 指定哪些用户或应用程序可以访问RateCard 数据。呼叫者必须使用标准Azure Active Directory令牌 认证。将调用者添加到Reader,Owner或 用于访问特定用户数据的贡献者角色 Azure订阅。
  • 支持现收现付,MSDN,货币承诺和货币 信用优惠(不支持EA和CSP ) - 此API提供Azure 报价级别的费率信息。此API的调用者必须传入 提供信息以获取资源详细信息和费率。我们现在 无法提供EA费率,因为EA提供定制费率 每次报名。

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