ITPub博客

首页 > > > 阿里云账单费用api调用

阿里云账单费用api调用

作者:gray1982 时间:2020-01-15 10:36:10 0 删除 编辑

现在也快过新年了,每年的年底和新年的年初公司都会了解下各资源使用和费用的情况,尤其还是不同部门的需求,上报到公司的部分也不同。虽然说阿里云也提供了费用账单和各项目的使用情况,但毕竟是大众化的展示,对我们自己实际的使用虽然有一定的帮助,但也是非常的不方便。

比如,查询19年每个产品使用的费用和19年总的费用。

如果使用阿里云提供的账单可能需要做个excel表格,然后填上几十个项目的名称和每个月的费用开销,最后再算一个加法求总和。

虽然最后也得到了想要的结果,但是花费的时间可能不是一点两点,效率极其的低下。

如果内容还会经常的变动话.............


出于这种原来吧,我把我这常用的需求写了一段代码,这样在每个ppt、方案、文档等需要的时候,我可以很快、很准备、很方便的得到结果,这种效率可不是一般的高啊..........


#coding=utf-8



from aliyunsdkbssopenapi.request.v20171214.QueryBillOverviewRequest import QueryBillOverviewRequest

from conf.settings import *

from util.check_sth import *

from aliyunsdkbssopenapi.request.v20171214.QueryInstanceBillRequest import QueryInstanceBillRequest

from aliyunsdkbssopenapi.request.v20171214.QueryOrdersRequest import QueryOrdersRequest


class query_bill(object):

    def __init__(self,account):

        self.client = AcsClient(token[account+'_accesskey'], token[account+'_accesspasswd'], region['bj'])

        self.request = QueryBillOverviewRequest()

        self.request.set_accept_format('json')

        self.year = 2019

        global  true,false

        false = "false"

        true = "true"


    def query_bill_data(self):

        month_data_list=[]

        print ('正在计算中.........')

        for month in range(1,13):

            # true = "true"

            self.request.set_BillingCycle(f"{self.year}-{str(month).zfill(2)}")

            self.response = self.client.do_action_with_exception(self.request)

            month_data_list.append(eval(str(self.response, encoding='utf-8'))['Data']['Items']['Item'])

        return month_data_list

    

    

    def query_year_bill(self):

        year_bill =

        items_bill_dic = {}

        for month_bill_data in self.query_bill_data():

            for month_detail in month_bill_data:

                year_bill += month_detail['PretaxAmount']

                items_bill_dic.setdefault(month_detail['ProductName'], []).append(month_detail['PretaxAmount'])

        for item,bill in items_bill_dic.items():

            # print(f'{item}:{round(sum(bill), 2)}')

            print(f'{self.year}年项目-{item}-共消费了:{round(sum(bill), 2)}')

        print(f'{self.year}年全年可开发票的开销总费用为:{round(year_bill,2)}')

        

        


if __name__ == ‘__main__':

   account=sys.argv[1] if check_input_lens() else 'krb'

   query_bill(account).query_year_bill()






得到的最后结果是如下:

正在计算中.........

2019年项目-对象存储 OSS-共消费了:XXXX

2019年项目-高速通道-共消费了:XXXX

2019年项目-云服务器 ECS-共消费了:XXXX

2019年项目-云安全中心(态势感知)-共消费了:XXXX

2019年项目-负载均衡-共消费了:XXXX

2019年项目-弹性公网IP-共消费了:XXXX

2019年项目-CDN-共消费了:XXXX

2019年项目-块存储-共消费了:XXXX

2019年项目-云市场三方-共消费了:XXXX

2019年项目-云市场-共消费了:XXXX

2019年项目-消息队列 MQ-共消费了:XXXX

2019年项目-云数据库 POLARDB-共消费了:XXXX

2019年项目-云数据库 Redis 版-共消费了:XXXX

2019年项目-IPv6转换服务-共消费了:XXXX

2019年项目-Web应用防火墙-共消费了:XXXX

2019年项目-云数据库 MongoDB 版-共消费了:XXXX

2019年项目-时序时空数据库-共消费了:XXXX

2019年项目-企业邮箱-共消费了:XXXX

2019年项目-域名-共消费了:XXXX

         ……………


2019年全年可开发票的开销总费用为:XXXX

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10915175/viewspace-3132241/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2017-03-31

  • 博文量
    3
  • 访问量
    281