监控阿里云多账号余额 明天一早要赶去医院(保佑没啥大事),所以也是长话短说。。。 已经算是半成品,凭借我的聪明才智(开玩笑,哈哈哈),今天做的。 一、需求引入 我们公司有很多个阿里云账号,每次登录进去看用户余额,让我不胜其烦(各种加载,网络慢的各种转圈),甚至试过一次忘记充值,导致被停机,搞到写故障报告。曾经试过配置到短信转发器SmsForwarder,但是那玩意经常抽风,不发到钉钉上,所以形同虚设。 所以我觉得非常有必要,借他山之石(阿里云的api接口)进行监控账号余额,解放我的双手。 二、需求实现 首先准备一个yaml的文件,记录多个账号下的accesskey和secret,多数阿里的接口用这个来保证安全性。 假设叫 acc.yaml,里面内容类似这样,记录阿里子账号的akID和akSecret:
账号1的名字: akId: 账号1 的 akID akSecret: 账号1 的 akSecret 账号2的名字:
akId: 账号2 的 akID
akSecret: 账号2 的 akSecret
。。。。
主程序:
1 # -*- coding: utf-8 -*- 2 # This file is auto-generated, don't edit it. Thanks. 3 import sys 4 5 from typing import List 6 7 from alibabacloud_bssopenapi20171214.client import Client as BssOpenApi20171214Client 8 from alibabacloud_tea_openapi import models as open_api_models 9 from alibabacloud_tea_util import models as util_models 10 from alibabacloud_tea_util.client import Client as UtilClient 11 12 from aliyunsdkcore.client import AcsClient 13 14 from aliyunsdkbssopenapi.request.v20171214.QueryAccountBalanceRequest import QueryAccountBalanceRequest 15 16 import json 17 import yaml 18 19 20 ## 1、获得每个账号下 ak 的值 21 def yaml_data(n, k): 22 with open('acc.yaml','r',encoding='utf-8') as f: 23 #使用yaml.safe_load方法进行读取yaml 24 25 data = yaml.safe_load(f) 26 try: 27 if n in data.keys(): 28 return data[n][k] 29 else: 30 print(f"n:{n}不存在") 31 32 except Exception as e : 33 print(f"key值{e}不存在") 34 35 ## 2、根据 ak 查询账户余额 36 def AvailableAmount(Name, Akid, AkSecret): 37 client = AcsClient(Akid, AkSecret, 'cn-shenzhen') 38 request = QueryAccountBalanceRequest() 39 request.set_accept_format('json') 40 41 result = client.do_action_with_exception(request) 42 res_json = json.loads(str(result, encoding="utf-8")) 43 44 if res_json is not None and res_json["Code"] == "200": 45 availableAmount = res_json["Data"]["AvailableAmount"] 46 print("用户(%s)余额为: %s" %(Name,availableAmount)) 47 48 if __name__ == '__main__': 49 aliaccount = ["账号1名字","账号2名字"] 50 51 for i in range(0, len(aliaccount)): 52 akId = yaml_data(aliaccount[i], "akId") 53 akSecret = yaml_data(aliaccount[i], "akSecret") 54 55 AvailableAmount(aliaccount[i], akId, akSecret)运行完就是这个样子
后面需要陆续把子账号下的ak加进去 acc.yaml,然后就是设置阈值,最后就是钉钉报警。。。。
最后万分感谢给我帮助的文档,排名不分先后~~
参考:
(1)python-读取yaml文件中的数据:https://blog.csdn.net/weixin_43632687/article/details/125216361
(2)python实现监控阿里云账户余额:https://blog.csdn.net/baidu_19473529/article/details/103544403
(3)获取阿里云账户余额并通过飞书通知:https://www.jianshu.com/p/08bddff16cef
做个好梦,洗洗睡~~~~
标签:账号,云多,yaml,json,阿里,akSecret,import From: https://www.cnblogs.com/windysai/p/17228498.html