阿里云统计每日各类目消费

领导都想知道自己的钱买了哪些服务(资源),针对各个资源的消费如何做个统计呢?下面就简单的介绍下阿里云下每日报表的统计方法,以及通过钉钉发送每日报表

里面涉及到oss存储、删除操作以及解析csv文档

一:阿里云账单功能转储到oss,把每日消费转到oss存储

二:通过每日定时拉取oss存储,把昨天消费记录下载至本地 指定csv文档名称

三:解析csv,统计各个类型的消费

四:钉钉发送(当然可以做成自动化,自动录入数据库,每月消费自动生成图表,接口已经做好,感兴趣的留言回复)

1:首先返回oss的bucket对象

   def get_info(key_id, key_secret, name, point):

        # 首先初始化AccessKeyId、AccessKeySecret、Endpoint等信息。
        access_key_id = os.getenv('OSS_TEST_ACCESS_KEY_ID', key_id)
        access_key_secret = os.getenv('OSS_TEST_ACCESS_KEY_SECRET', key_secret)
        bucket_name = os.getenv('OSS_TEST_BUCKET', name)
        endpoint = os.getenv('OSS_TEST_ENDPOINT', point)

        # 确认上面的参数都填写正确了
        for param in (access_key_id, access_key_secret, bucket_name, endpoint):
                assert '<' not in param, '请设置参数:' + param

        # 创建Bucket对象,所有Object相关的接口都可以通过Bucket对象来进行
        bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
        return bucket
2:下载对应日前下需要解析的文档,放入download.csv,删除前一天的存储文档,节约存储空间(存储也是收费的)
def main():
        #设置参数
        key_id = ''
        key_secret = ''
        name = ''
        point = 'oss-cn-hangzhou-internal.aliyuncs.com'
        #下载之后的文件名
        filename = 'download.csv'

        #获取时间格式为日期前缀,拿到Object下的文件
        times = 86400 * 2
        day = date.fromtimestamp(time.time()).strftime("%Y-%m-%d")
        old = date.fromtimestamp(time.time() - times).strftime("%Y-%m-%d")
        bucket = get_info(key_id, key_secret, name, point)
        '''删除旧文件'''
        for b in oss2.ObjectIterator(bucket, prefix=old):
                bucket.delete_object(b.key)

        #下载文件
        for obj in oss2.ObjectIterator(bucket, prefix=day):
                bucket.get_object_to_file(obj.key, filename)

        # 解析download.csv,获取日消费
        cost_values = get_costs()
3:解析download.csv,方法就是get_costs(),附主要解析代码
 
def total_cost(name):

        #打开消费文件
        with open("download.csv", "r") as f:

                #消费额度初始化
                total_costs=0

                #读取文件
                reader = csv.reader(f)
                reader = [row[5:22] for row in reader]
                reader = reader[1:]

                #额度计费
                for row in reader:

                    if name == 'all':
                        total_costs=total_costs+float(row[-1])
                    if name in row[0]:
                        total_costs=total_costs+float(row[-1])
                return total_costs

  #如果你想获取到昨天总消费:

 
#昨天总消费
total = total_cost('all')
#如果是ecs
ecs = total_cost('云服务器ECS')
 

4:发送钉钉

 

webhook = ''
ding = DingtalkChatbot(webhook)
ding.send_text(msg="时间:" + str(cost_values[0]) + "后面各种类型的消费都可以统计出来了" ,is_at_all=False)
 

说明:

上面第二点下 point 参数,如果你是阿里云下ECS可以带internal

 

如果想要做成自动化,看每月消费报表的也完全没问题

上月各个类型资源的消费信息

 

@app.route("/getTypecosts", methods=["GET"])
 

每月总消费信息

 

@app.route("/getMonthcosts", methods=["GET"])

取时间段内(各个月分),每种类型的消费信息

 

@app.route("/getAllTypeMonthcosts", methods=["GET"])

 

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值