全部产品
云市场

利用 Api 实现资源和成本管理

更新时间:2019-09-06 10:02:57

利用 BssOpenApi 实现资源和成本管理

BssOpenApi 提供的功能

BssOpenApi 是阿里云提供的实例、订单、账单和卡券管理等系列工具的API集合产品。
通过 BssOpenApi 我们可以实现实现从产品基本信息查询,到钱账票的统一管理功能。
功能概览

资源概念

BssOpenApi 是面向资源概念设计的一套API。在使用的过程中,需要明确由哪些要素去确定一个唯一的云资源概念。

在 BssOpenApi 中,我们使用 产品code + 产品类型 + 付费类型 + 实例id 四个概念去唯一确定一个云资源。

比如我们想要查询 instanceId = rords-1, productCode = rds, productType = rords, subscriptionType= Subscription 的实例属性详情,代表查询rords-1的预付费只读rds的实例属性详情。
资源概念

典型使用场景分析

在线交易

用户通过在阿里云上浏览产品特性,挑选和组装对应的云产品组合配置,对云产品的配置的价格进行估算。然后下单购买,创建一套云资源。
在云资源的具体使用过程中,会根据具体的业务场景,比如业务高低峰流量,对资源的配置做提升和降低。
同时我们也会查询和筛选出一批即将到期的实例列表,对实例执行续费动作。如果觉得手动续费的动作太繁琐,我们希望能够设置自动续费,阿里云自动续费服务将按照您的设定规则执行自动续费任务。

扩展开来,包含如下具体场景。

查询产品信息和价格

  1. 查询产品概览信息 QueryProductList
  2. 查询产品详细模块信息 DescribePricingModule
  3. 查询价格 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 来获取具体的配置价格。

查看账户情况

  1. 查询账户余额 QueryAccountBalance
  2. 各类可用卡券查询
    • 代金券查询 QueryCashCoupons
    • 储值卡查询 QueryPrepaidCards
    • 提货券查询 QueryRedeem

在对具体配置进行下单购买之前,我们可以通过 QueryAccountBalance / QueryCashCoupons / QueryPrepaidCards / QueryRedeem 对账户余额和各类卡包情况进行查询,以初步判断当前用户状况满足目标配置的购买需求(比如余额+代金券总额,是否大于待购买配置的应付金额)。

实例生命周期管理

  1. 创建实例 CreateInstance
  2. 实例配置变更 ModifyInstance
  3. 切换付费类型 ConvertChargeType
  4. 实例列表查询 QueryAvailableInstances
  5. 实例续费 RenewInstance
  6. 设置实例自动续费状态 SetRenewal

上面说到,我们通过 DescribePricingModule 查询得到了目标产品的具体配置信息,并对具体配置通过 GetPayAsYouGoPrice 询价接口获得了相应的价格。
当我们需要对目标配置执行购买和创建时,可以通过 CreateInstance 传入具体的 产品 + 配置信息 对具体配置的实例执行创建。
接口将返回创建实例关联的订单id,和创建成功得到的实例id。如果是预付费实例的话,CreateInstance 所需支付的费用,将在用户的账户余额、代金券等卡券上自动执行抵扣。

如果遇到业务高峰,我们需要对原有资源的配置进行升级,比如将 eip 的带宽峰值从 1M 升高到 2M,此时我们可以通过 ModifyInstance 对某个eip实例做配置升级动作。同时升级动作也将产生一个对应的订单号。

同时我们也可以通过 ConvertChargeType 来对资源的付费类型做转换,比如后付费转换为预付费。

我们可以通过 QueryAvailableInstances 来查询账户名下保有的所有资源列表,资源详情里面包含实例的到期时间、region等信息。

我们可以根据 QueryAvailableInstances 的结果,筛选出所有即将到期的资源列表。用 RenewInstance 对其进行续费动作。如果觉得手动续费太繁琐,那么可以通过 SetRenewal 接口对资源配置自动续费规则。阿里云的自动续费系统,将根据配置的规则,在到期时间前进行自动续费。

由于内部系统架构限制,BssOpenApi 产品的 CreateInstance 接口不支持 ECS & RDS 系列产品的实例创建、续费、变配和转换付费类型服务。如需相关功能,可以去对应产品的API列表页查找和索取相关服务。

资源包相关

  1. 查询某个资源包服务详情 DescribeResourcePackageProduct
  2. 资源包产品询价 GetResourcePackagePrice
  3. 创建资源包 GetResourcePackagePrice
  4. 查询拥有的资源包列表 QueryResourcePackageInstances
  5. 资源包续费 QueryResourcePackageInstances
  6. 资源包升级 UpgradeResourcePackage

资源包是一类比较特殊的云资源,流量包可以自动抵扣对应类型资源的使用量费用。
BssOpenApi同样提供了系列API来对资源包,提供查询产品详情、询价、创建、续费、升级、查询列表的服务。

计费财账

上面在线交易部分,介绍到了我们怎么通过系列API来对云资源实现查询、询价和创建、变配等管理功能。
资源的创建和使用过程中,会产生相关的费用。
预付费类型的资源,创建时的订单支付产生一笔确定的费用。
后付费类型的资源,在使用中,每个计费周期会持续产生账单费用。账单的结算也会持续地消耗用户的账户余额或卡券。

BssOpenApi 提供了系列工具,使用户可以获取到账户下所有的订单、账单详情信息,以此基础数据,来再加工实现自己的资源成本分析的逻辑。

同时我们也可以获取到发票信息,结合账单信息,以此来实现钱、票、账一致的稽核对账逻辑。

订单

  1. 订单列表查询 QueryOrders
  2. 订单详情查询 GetOrderDetail

通过订单查询接口,可以查询订单关联的资源实例、实付金额等信息。因为对预付费资源的任何操作:新购、续费、升级、降配、退款等操作,都会生成对应的操作订单。订单上关联了实例资源id和费用信息,所以通过这部分数据,可以得到所有预付费资源操作相关的付费金额信息。

计量详情

  1. 产品计量数据详情 QueryUserOmsData

计量详情数据,作为后付费产品计费账单的数据基础。有如下公式:
某计量项应付价格 = 计量数据使用量 * 该计量项的单价
单价信息,可以通过 GetPayAsYouGoPrice 接口获得。

账单

  1. 账单总览查询 QueryBillOverview
  2. 账单查询 QueryBill
  3. 实例账单查询 QueryInstanceBill
  4. 月费用分摊服务 QueryInstanceGaapCost

账单查询接口,提供了总览、详情、按实例分组、月费用分摊等维度的账单数据。

比如 QueryBillOverview 呈现了 按照产品类型聚合的账单总览数据。如账户在 201908账期保有 A B C 三种类型的资源,那么总览数据将呈现 A B C 各消费 / 退款的金额信息。
因为每次账务额度的变化,都一定是由预付费订单或者后付费账单的支付结算引起的。所以QueryBill 接口,以 订单号/账单号 为最细维度,统计了对应的账单详情信息。
在获得了最细粒度的账单详情数据之后,我们往往希望得知,我的某台ECS实例,在一个账务周期内,一共消耗了我多少的成本。所以 QueryInstanceBill 提供了按照实例聚合的账单详情数据。
在以月为账期维度结算的场景下,除了获取实例资源关联的详细账单数据外,QueryInstanceGaapCost 提供了月费用分摊费用信息。
同时

上述账单接口,提供了各个维度的账单详情数据信息。结合订单详情数据,我们可以清晰地知道账户整体、或者某个具体的云资源的费用消耗情况。
以此实现资源和成本的有效管理的目的。

总结

BssOpenApi 提供了从资源创建和管理,到订单账单详情管理的体系工具,用户能够据此实现自己的资源和成本管理体系。