使用 REST API 导出排放数据
若要使用 REST API 导出排放数据,必须创建并授权服务主体访问排放数据。 然后,可以使用服务主体获取授权令牌,然后使用 REST API 导出排放数据。
创建并授权服务主体导出排放数据
服务主体是一个应用程序,其令牌可用于使用 Microsoft Entra ID(以前 Azure Active Directory)对特定 Azure 资源进行身份验证和授予访问权限。 资源包括用户应用、服务或自动化工具。
创建可访问资源的Microsoft Entra 应用程序和服务主体。
保存应用的租户 ID、新客户端 ID 和客户端机密值,以便在令牌请求中使用。
必须为应用分配要导出排放数据的资源的 Carbon Optimization Reader
角色。 如果计划使用应用导出许多资源的排放数据,可以在资源组或订阅级别分配角色。 有关详细信息,请参阅 使用 Azure 门户分配 Azure 角色。
获取授权令牌
在命令提示符或使用 Postman 等客户端发送以下请求。
curl -X POST 'https://login.microsoftonline.com/<tennant ID>/oauth2/token' \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=<your apps client ID>' \
--data-urlencode 'client_secret=<your apps client secret' \
--data-urlencode 'resource=https://management.azure.com'
此时会显示响应正文:
{
"token_type": "Bearer",
"expires_in": "86399",
"ext_expires_in": "86399",
"expires_on": "1672826207",
"not_before": "1672739507",
"resource": "https://management.azure.com",
"access_token": "eyJ0eXAiOiJKV1Qi....gpHWoRzeDdVQd2OE3dNsLIvUIxQ"
}
使用从响应中获取的访问令牌进行后续的 HTTP 请求。
使用 REST API 导出排放数据
POST /providers/Microsoft.Carbon/carbonEmissionReports?api-version=2023-04-01-preview Host: management.azure.com Content-Type: application/json Authorization: Bearer <token value>
示例请求
POST /providers/Microsoft.Carbon/carbonEmissionReports?api-version=2023-04-01-preview
Host: management.azure.com
Content-Type: application/json
Authorization: Bearer eyJ0eXAiOiJKJ...gVBNrsvg
{
"reportType": "OverallSummaryReport",
"subscriptionList": [
"abcd1234-a1b2-d3c4-e3f5-976543210abc"
],
"carbonScopeList": [
"Scope1",
"Scope2",
"Scope3"
],
"dateRange": {
"start": "2023-12-01",
"end": "2023-12-01"
}
}
curl 示例:
curl --location 'https://management.azure.com/providers/Microsoft.Carbon/carbonEmissionReports?api-version=2023-04-01-preview' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJ0eXA...2-KgVBNrsvg' \
--data '{
"reportType": "OverallSummaryReport",
"subscriptionList": [
"abcd1234-a1b2-d3c4-e3f5-976543210abc"
],
"carbonScopeList": [
"Scope1",
"Scope2",
"Scope3"
],
"dateRange": {
"start": "2023-12-01",
"end": "2023-12-01"
}
}
'
示例输出
{
"value": [
{
"dataType": "OverallSummaryData",
"totalCarbonEmission": 7000.622265493289,
"totalCarbonEmission12MonthsAgo": 0,
"totalCarbonEmissionLastMonth": 7480.374908590786,
"changeRatioFor12Months": 0,
"changeRatioForLastMonth": -0.06413483935765417,
"changeValueMonthOverMonth": 0
}
]
}
报表类型
报表类型 |
描述 |
何时使用 |
总体总结报告 |
输入中指定的所有订阅范围和日期范围的总排放量。 |
需要高级报表数据 |
月度总结报告 |
日期范围中指定的每个月的所有订阅和排放范围的排放量。 |
每月明细 |
顶部项目汇总报告 |
跨订阅、排放、范围、类别和指定日期范围聚合的前 X 项的排放,按类别细分。 |
按类别划分的顶部项的数据 |
每月顶级项目汇总报告 |
每个月在指定日期范围内,汇总订阅、排放、范围和类别的每类最高 X 项的排放量。 排放按类别细分。 前 X 项基于上个月的排放量。 |
按类别和月份划分的顶级项的数据 |
项目详情报告 |
针对特定日期范围,对选定范围和订阅 ID 的排放进行了聚合,并按指定类别进行细分。 |
按类别划分的排放数据 |
导出排放 API 参数
下表介绍了可用于使用 REST API 导出排放数据的参数。
参数 |
类型 |
描述 |
reportType |
字符串 |
报表类型名称。 支持的值: OverallSummaryReport
MonthlySummaryReport
TopItemsSummaryReport TopItemsMonthlySummaryReport ItemDetailsReport |
subscriptionList |
[字符串] |
要查询的订阅ID列表。 客户端应有权访问这些订阅。 |
resourceGroupUrlList |
[字符串] |
要获取其数据的 resourceGroup 的 URL 列表。 例如: “resourceGroupUrlList”: [ “/subscriptions/sub-id-1111/resourcegroups/rg_name” ] 数组中的字符串值必须遵循以下格式: “/subscriptions/{sub_id}/resourcegroups/{rg_name}” |
carbonScopeList |
[字符串] |
碳排放范围列表。 支持的值:Scope1 、Scope2 和 Scope3 。 此列表可以是这三个作用域的任意组合。 |
dateRange |
结构 |
支持过去 12 个月中的任意一个月。 开始和结束月应相等,它应该是一个月的第一天。 如果未满足此条件,系统将引发异常。 例如 dateRange“: { “start”: “2023年03月01日”, “end”: “2023-03-01}
start 和 end 格式:yyyy-mm-dd。 目前,碳排放数据每月刷新。 因此,dateRange start 和 end 属性值必须是每个月的第一天。 |
注意
dateRange
支持每次一个月(在过去的 12 个月内)。 当开始和结束日期不同时,将引发异常。
报表特定参数
下表显示了每个报表类型所需的其他参数。
附加参数 |
类型 |
描述 |
报告 |
categoryType |
字符串 |
支持五种类别类型: Subscription
Location
ServiceType
ResourceGroup
Resource
|
TopItemsSummaryReport TopItemsMonthlySummaryReport
ItemDetailsReport
|
topItemsCount |
整数 |
要显示的顶部 x 项(>5) |
TopItemsSummaryReport TopItemsMonthlySummaryReport
|
ItemDetailsReport |
category |
字符串 |
类别名称。 例如,“category”:“ResourceGroup” |
pageSize |
整数 |
查询结果的页面大小。 默认值为 1000。 最大值为 2000。 |
ItemDetailsReport |
orderBy |
字符串 |
请参阅下表,查看受支持的值以及支持的类别类型。 |
ItemDetailsReport |
sortDirection |
字符串 |
支持值:Desc 、Asc |
ItemDetailsReport |
groupCategory |
字符串 |
这可以设置为空字符串。 有效值:ResourceGroup 和 SubscriptionId |
ItemDetailsReport |
按列排序
以下结果列支持 orderBy
参数。
按列名排序 |
类别类型 |
Name |
除 Subscription 之外的所有 |
TotalCarbonEmission |
所有 |
TotalCarbonEmissionLastMonth |
都 |
ResourceGroup |
仅适用于 Resource 类别 |
SubscriptionId |
Subscription 、Resource 和 ResourceGroup 类别 |
ChangeRatioForLastMonth |
都 |
ChangeValueMonthOverMonth |
都 |
有关 REST API 报告的详细信息,请参阅 碳服务 - 列出碳排放报告。