使用 REST API 匯出排放數據
若要使用 REST API 匯出排放數據,您必須建立並授權服務主體存取您的排放數據。 接著,您可以使用服務主體來取得授權令牌,然後使用 REST API 匯出排放數據。
建立並授權服務主體導出排放數據
服務主體是一個應用程式,其令牌可用來使用 Microsoft Entra ID 來驗證和授與特定 Azure 資源的存取權(先前 Azure Active Directory)。 資源包括使用者應用程式、服務或自動化工具。
建立可存取資源的Microsoft Entra 應用程式和服務 主體。
儲存應用程式的租使用者標識碼、新的用戶端標識碼和客戶端密碼值,以用於令牌要求。
應用程式必須針對您想要匯出排放數據的資源指派 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 主機:management.azure.com Content-Type: application/json Authorization: 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 |
針對指定日期範圍,跨所選範圍和訂用帳戶匯總的排放量,並依指定類別細分。 |
依類別的排放數據 |
匯出排放 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 報告的詳細資訊,請參閱 碳服務 - 列出碳排放報告。