尝试访问 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#示例应用程序运行可能就足够了,当然是一个良好的开端。
使用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?
答案 0 :(得分:1)
首先,您需要确保政府订阅实际支持结算API。我似乎无法在互联网上找到关于可支持性的官方参考。在https://azure.microsoft.com/en-us/global-infrastructure/government/contact/
询问这个问题要好得多如果支持,通常您需要将您注册的客户端应用添加到政府订阅中。
在访问控制(IAM)刀片下,单击添加。选择角色下的阅读器(如果您只是需要获取信息而不做任何更改)。在“选择”下,您可以查找客户端应用程序名称(具有关联的客户端ID),也可以复制客户端ID并粘贴到此字段。
如果获得适当的许可,您注册的客户端应用程序无法读取您的政府资源以通过REST API检索结算信息。
P / S:如果您想明确控制访问权限,还有一个名为结算阅读器的角色。
答案 1 :(得分:0)
Microsoft支持部门现已证明,企业帐户(也未在CSP帐户中)无法访问RateCard API。
感谢所有试图提供帮助的人。