首页 > 其他分享 >监控阿里云多账号余额

监控阿里云多账号余额

时间:2023-03-17 22:44:27浏览次数:31  
标签:账号 云多 yaml json 阿里 akSecret import

监控阿里云多账号余额   明天一早要赶去医院(保佑没啥大事),所以也是长话短说。。。   已经算是半成品,凭借我的聪明才智(开玩笑,哈哈哈),今天做的。   一、需求引入   我们公司有很多个阿里云账号,每次登录进去看用户余额,让我不胜其烦(各种加载,网络慢的各种转圈),甚至试过一次忘记充值,导致被停机,搞到写故障报告。曾经试过配置到短信转发器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

相关文章