利用 API 實現資源和成本管理
利用 BssOpenAPI 實現資源和成本管理
BssOpenAPI 提供的功能
BssOpenAPI 是阿里云提供的實例、訂單、賬單和卡券管理等系列工具的API集合產品。 通過 BssOpenAPI 我們可以實現從產品基本信息查詢,到錢賬票的統一管理功能。
資源概念
BssOpenAPI 是面向資源概念設計的一套API。在使用的過程中,需要明確由哪些要素去確定一個唯一的云資源概念。
在 BssOpenAPI 中,我們使用 產品code + 產品類型 + 付費類型 + 實例ID 四個概念去唯一確定一個云資源。
比如我們想要查詢 instanceID = roRDS-1, productCode = RDS, productType = roRDS, subscriptionType= Subscription 的實例屬性詳情,代表查詢roRDS-1的預付費只讀RDS的實例屬性詳情。
典型使用場景分析
在線交易
用戶通過在阿里云上瀏覽產品特性,挑選和組裝對應的云產品組合配置,對云產品的配置的價格進行估算。然后下單購買,創建一套云資源。 在云資源的具體使用過程中,會根據具體的業務場景,比如業務高低峰流量,對資源的配置做提升和降低。 同時我們也會查詢和篩選出一批即將到期的實例列表,對實例執行續費動作。如果覺得手動續費的動作太繁瑣,我們希望能夠設置自動續費,阿里云自動續費服務將按照您的設定規則執行自動續費任務。
擴展開來,包含如下具體場景。
查詢產品概覽信息 QueryProductList
查詢產品詳細模塊信息 DescribePricingModule
查詢價格 GetSubscriptionPrice / GetPayAsYouGoPrice
我們通過 QueryProductList 查詢到阿里云的產品列表概覽,獲取到了待購買的目標產品的 ProductCode & ProductType & SubscriptionType 等信息。而后可以通過 DescribePricingModule 去查詢目標產品的具體細節配置信息。
比如我們通過 QueryProductList 去查詢到了 后付費彈性公網IP 產品的基本信息,ProductCode=eip, SubscriptionType=PayAsYouGo。 想要去查看一款 eip 產品下面包含哪些具體配置,就可以通過 上述信息,去DescribePricingModule 接口查詢詳情信息,獲取到 eip 包含 cn-qingdao-cm5-a01、cn-beijing-btc-a01 等可選region,可以選擇按流量計費或者按固定帶寬計費等。
最后根據我們的業務類型,選取了 cn-qingdao-cm5-a01 region下,按照固定帶寬計費類型的 eip,可以使用 GetPayAsYouGoPrice 來獲取具體的配置價格。
查詢賬戶余額 QueryAccountBalance
各類可用卡券查詢
在對具體配置進行下單購買之前,我們可以通過 QueryAccountBalance / QueryCashCoupons / QueryPrepaIDCaRDS / QueryRedeem 對賬戶余額和各類卡包情況進行查詢,以初步判斷當前用戶狀況滿足目標配置的購買需求(比如余額+代金券總額,是否大于待購買配置的應付金額)。
創建實例 CreateInstance
實例配置變更 ModifyInstance
切換付費類型 ConvertChargeType
實例列表查詢 QueryAvailableInstances
實例續費 RenewInstance
設置實例自動續費狀態 SetRenewal
上面說到,我們通過 DescribePricingModule 查詢得到了目標產品的具體配置信息,并對具體配置通過 GetPayAsYouGoPrice 詢價接口獲得了相應的價格。 當我們需要對目標配置執行購買和創建時,可以通過 CreateInstance 傳入具體的 產品 + 配置信息 對具體配置的實例執行創建。 接口將返回創建實例關聯的訂單ID,和創建成功得到的實例ID。如果是預付費實例的話,CreateInstance 所需支付的費用,將在用戶的賬戶余額、代金券等卡券上自動執行抵扣。
如果遇到業務高峰,我們需要對原有資源的配置進行升級,比如將 eip 的帶寬峰值從 1M 升高到 2M,此時我們可以通過 ModifyInstance 對某個eip實例做配置升級動作。同時升級動作也將產生一個對應的訂單號。
同時我們也可以通過 ConvertChargeType 來對資源的付費類型做轉換,比如后付費轉換為預付費。
我們可以通過 QueryAvailableInstances 來查詢賬戶名下保有的所有資源列表,資源詳情里面包含實例的到期時間、region等信息。
我們可以根據 QueryAvailableInstances 的結果,篩選出所有即將到期的資源列表。用 RenewInstance 對其進行續費動作。如果覺得手動續費太繁瑣,那么可以通過 SetRenewal 接口對資源配置自動續費規則。阿里云的自動續費系統,將根據配置的規則,在到期時間前進行自動續費。
由于內部系統架構限制,BssOpenAPI 產品的 CreateInstance 接口不支持 ECS & RDS 系列產品的實例創建、續費、變配和轉換付費類型服務。如需相關功能,可以去對應產品的API列表頁查找和索取相關服務。
查詢某個資源包服務詳情 DescribeResourcePackageProduct
資源包產品詢價 GetResourcePackagePrice
創建資源包 GetResourcePackagePrice
查詢擁有的資源包列表 QueryResourcePackageInstances
資源包續費 QueryResourcePackageInstances
資源包升級 UpgradeResourcePackage
資源包是一類比較特殊的云資源,流量包可以自動抵扣對應類型資源的使用量費用。 BssOpenAPI同樣提供了系列API來對資源包,提供查詢產品詳情、詢價、創建、續費、升級、查詢列表的服務。
計費財賬
上面在線交易部分,介紹到了我們怎么通過系列API來對云資源實現查詢、詢價和創建、變配等管理功能。 資源的創建和使用過程中,會產生相關的費用。 預付費類型的資源,創建時的訂單支付產生一筆確定的費用。 后付費類型的資源,在使用中,每個計費周期會持續產生賬單費用。賬單的結算也會持續地消耗用戶的賬戶余額或卡券。
BssOpenAPI 提供了系列工具,使用戶可以獲取到賬戶下所有的訂單、賬單詳情信息,以此基礎數據,來再加工實現自己的資源成本分析的邏輯。
同時我們也可以獲取到發票信息,結合賬單信息,以此來實現錢、票、賬一致的稽核對賬邏輯。
訂單列表查詢 QueryOrders
訂單詳情查詢 GetOrderDetail
通過訂單查詢接口,可以查詢訂單關聯的資源實例、實付金額等信息。因為對預付費資源的任何操作:新購、續費、升級、降配、退款等操作,都會生成對應的操作訂單。訂單上關聯了實例資源ID和費用信息,所以通過這部分數據,可以得到所有預付費資源操作相關的付費金額信息。
產品計量數據詳情 QueryUserOmsData
計量詳情數據,作為后付費產品計費賬單的數據基礎。有如下公式: 某計量項應付價格 = 計量數據使用量 * 該計量項的單價 單價信息,可以通過 GetPayAsYouGoPrice 接口獲得。
賬單總覽查詢 QueryBillOverview
賬單查詢 QueryBill
實例賬單查詢 QueryInstanceBill
月費用分攤服務 QueryInstanceGaapCost
賬單查詢接口,提供了總覽、詳情、按實例分組、月費用分攤等維度的賬單數據。
比如 QueryBillOverview 呈現了 按照產品類型聚合的賬單總覽數據。如賬戶在 201908賬期保有 A B C 三種類型的資源,那么總覽數據將呈現 A B C 各消費 / 退款的金額信息。 因為每次賬務額度的變化,都一定是由預付費訂單或者后付費賬單的支付結算引起的。所以QueryBill 接口,以 訂單號/賬單號 為最細維度,統計了對應的賬單詳情信息。 在獲得了最細粒度的賬單詳情數據之后,我們往往希望得知,我的某臺ECS實例,在一個賬務周期內,一共消耗了我多少的成本。所以 QueryInstanceBill 提供了按照實例聚合的賬單詳情數據。 在以月為賬期維度結算的場景下,除了獲取實例資源關聯的詳細賬單數據外,QueryInstanceGaapCost 提供了月費用分攤費用信息。 同時
上述賬單接口,提供了各個維度的賬單詳情數據信息。結合訂單詳情數據,我們可以清晰地知道賬戶整體、或者某個具體的云資源的費用消耗情況。 以此實現資源和成本的有效管理的目的。
總結
BssOpenAPI 提供了從資源創建和管理,到訂單賬單詳情管理的體系工具,用戶能夠據此實現自己的資源和成本管理體系。