使用 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
}
]
}
报表类型
报表类型 |
描述 |
何时使用 |
OverallSummaryReport |
输入中指定的所有订阅范围和日期范围的总排放量。 |
需要高级报表数据 |
MonthlySummaryReport |
日期范围中指定的每个月的所有订阅和排放范围的排放量。 |
每月明细 |
TopItemsSummaryReport |
跨订阅、排放、范围、类别和指定日期范围聚合的前 X 项的排放,按类别细分。 |
按类别划分的顶部项的数据 |
TopItemsMonthlySummaryReport |
跨订阅、排放、范围和类别聚合的前 X 项的排放量,每个月在日期范围内指定。 排放按类别细分。 前 X 项基于上个月的排放量。 |
按类别和月份划分的顶级项的数据 |
ItemDetailsReport |
针对给定日期范围跨所选范围和订阅 ID 聚合的排放,并按指定类别细分。 |
按类别划分的排放数据 |
导出排放 API 参数
下表介绍了可用于使用 REST API 导出排放数据的参数。
参数 |
类型 |
描述 |
reportType |
字符串 |
报表类型名称。 支持的值: OverallSummaryReport
MonthlySummaryReport
TopItemsSummaryReport TopItemsMonthlySummaryReport ItemDetailsReport |
subscriptionList |
[字符串] |
要查询的 subscriptionId 列表。 客户端应有权访问这些订阅。 |
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 个月起)。 当开始和结束日期不同时,将引发异常。
报表特定的参数
下表显示了每个报表类型所需的其他参数。
AdditionalParameter |
类型 |
描述 |
报告 |
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 报告的详细信息,请参阅 碳服务 - 列出碳排放报告。