首页 > 编程语言 >基于python实现将AWS-ElastiCache-的Reserved_Cache_Nodes-预留节点及费用的信息统计

基于python实现将AWS-ElastiCache-的Reserved_Cache_Nodes-预留节点及费用的信息统计

时间:2023-04-29 15:34:19浏览次数:55  
标签:-% Reserved python Cache AWS ReservedCacheNode StartTime Duration datetime

在AWS-ElastiCache中,Reserved_Cache_Nodes-预留节点,也就类似于EC2与RDS的RI(预留实例),

都是为了节省成本而选择预付费用的一种方式 ,当AWS账号有多个时,如何通过编程的方式批量获取所有账号所有区域Region的RN信息呢

我们可以通过aws cli的方式,也可以通过AWS SDK for Python (Boto3)的方式,这里笔者将使用后者进行实现

首先,我们先看一个RN的数据信息结构,是json格式,详细如下:

{'ReservedCacheNodeId': 'webporoject2023', 'ReservedCacheNodesOfferingId': '65048c7a-79cc-48bf-a45a-163570d48906', 'CacheNodeType': 'cache.t2.micro', 'StartTime': datetime.datetime(2020, 8, 20, 9, 44, 48, 102000, tzinfo=tzutc()), 'Duration': 31536000, 'FixedPrice': 460.0, 'UsagePrice': 0.0, 'CacheNodeCount': 1, 'ProductDescription': 'redis', 'OfferingType': 'Heavy Utilization', 'State': 'retired', 'RecurringCharges': [{'RecurringChargeAmount': 0.052, 'RecurringChargeFrequency': 'Hourly'}], 'ReservationARN': 'arn:aws-cn:elasticache:cn-north-1:221234567891:reserved-instance:webporoject2023'}

这样我们可以通过 ElastiCacheclientclient.describe_reserved_cache_nodes()的方式获取如下一些关键的字段信息

那么,这里就会缺少,我们可能更希望直接看到的EndTime与AWS_Account ,对于AWS_Account 当然可以通过profile变量得到,可以设计成一样

对于EndTime,则我们可以自己计算出来,逻辑为Endtime=StartTime+Duration , 其中Duration的数字为秒数,一般来说就1年或者3年的秒数

接下来就是通过代码进行实现,笔者整理的核心代码如下:

ReservedCacheNodesResponse=ElastiCacheclient.describe_reserved_cache_nodes()

for ReservedCacheNode in ReservedCacheNodesResponse["ReservedCacheNodes"]:
    ReservedCacheNodeId=ReservedCacheNode["ReservedCacheNodeId"]
    ReservedCacheNodesOfferingId=ReservedCacheNode["ReservedCacheNodesOfferingId"]
    CacheNodeType=ReservedCacheNode["CacheNodeType"]
    Duration=ReservedCacheNode["Duration"]
    StartTime=(ReservedCacheNode["StartTime"]+datetime.timedelta(hours=8)).strftime("%Y-%m-%d %H:%M:%S")
    # Regarding Endtime, we can calculate it based on the StartTime and Duration
    EndTime=(ReservedCacheNode["StartTime"]+datetime.timedelta(seconds=Duration)+datetime.timedelta(hours=8)).strftime("%Y-%m-%d %H:%M:%S")
    FixedPrice=ReservedCacheNode["FixedPrice"]
    UsagePrice=ReservedCacheNode["UsagePrice"]
    CacheNodeCount=ReservedCacheNode["CacheNodeCount"]
    ProductDescription=ReservedCacheNode["ProductDescription"]
    OfferingType=ReservedCacheNode["OfferingType"]
    State=ReservedCacheNode["State"]
    RecurringChargeAmount=ReservedCacheNode["RecurringCharges"][0]["RecurringChargeAmount"]
    RecurringChargeFrequency=ReservedCacheNode["RecurringCharges"][0]["RecurringChargeFrequency"]
    ReservationARN=ReservedCacheNode["ReservationARN"]

最后再将结果输出到Excel文件,通过邮件发送到reviwer的邮箱即可,结果大致如下:

 

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/17364043.html

 

标签:-%,Reserved,python,Cache,AWS,ReservedCacheNode,StartTime,Duration,datetime
From: https://www.cnblogs.com/5201351/p/17364043.html

相关文章

  • 关于AWS-ElastiCache的Reserved nodes预留节点支付类型-费用说明
    关于AWS-ElastiCache的Reservednodes的购买(类似于EC2的RI),可以节省成本引擎,可以选择Redis或者Memcached,期限一般大多都支持1年或者3年的对于Offeringtype-产品类型,这里分类比其他产品要复杂一点、,分为【标准预留节点产品】与【旧式预留节点产品】这个还与节点类型有关系......
  • Python 基于win32com客户端实现Excel操作
    测试环境Python3.6.2代码实现非多线程场景下使用新建并保存EXCELimportwin32com.clientfromwin32apiimportRGBdefsave_something_to_excel(result_file_path):excel_app=win32com.client.Dispatch('Excel.Application')excel_app.Visible=False#设......
  • 关于AWS-ElastiCache的总体介绍
    AmazonElastiCachemakesiteasytosetup,manage,andscaledistributedin-memorycacheenvironmentsintheAWSCloud.Itprovidesahighperformance,resizable,andcost-effectivein-memorycache,whileremovingcomplexityassociatedwithdeployingand......
  • python高阶用法汇总——(1)高阶函数
    lambda1defsum(a,b):2returna+b3print(sum(1,5))45lab=lambdaa,b:a+b6print(lab(1,3))1-3行正常用法,5-6lambda用法。lambda:冒号之前的全是参数,即函数括号里面的 sum(a,b)冒号之后的是表达式,即return的结果。lambda只能写在一行。一般情况下,我们不使用......
  • 【python基础】创建和删除目录
    前言importosimportshutilpath='/home/tfl19671/out'ifnotos.path.exists(path):os.mkdir(path)else:shutil.rmtree(path,True)os.mkdir(path)其中shutil.rmtree(filepath,ignore_errors=True)删除整个filepath路径的内容。如果ignore_errors=True,则表示删除......
  • Python数据类型详解
    Python最基本的内置数据类型包括:布尔型(表示真假的类型,仅包含True和False两种取值);整型(整数,例如42、10000000);浮点型(小数,例如3.14159,或用科学计数法表示的数字,例如1.0e8,它表示1乘以10的8次方,也可写作10000000.0);字符串型(字符组成的序列);一、变量Python里所有数据——布尔值、整数、浮点......
  • Windows安装Python3
    1、Python安装Python是跨平台的编程语言,它可以运行在windowS、Mac和各种Linux/Unix系统上。也就是说,假设在windows系统下编写的Python程序,在Mac或Linux系统下也是可以运行的。目前,Python的版本主要分为两大类,即Python3.X版和Python2.x版,这两个版本是不兼容的。由于Python3.x......
  • Python自动化办公——Selenium控制浏览器
    Python之selenium创建多个标签页码夫破石2022-11-04原文最近在做一个项目,需要用到cookies登录,想法是,在同一个浏览器下,打开两个标签页进行。让其自动获取cookies,先记录,不行的话,到时候再手动加载cookies。1'''2#selenium加载新标签页3'''4#导入所需库5fromseleniumi......
  • Python元组传参, cv2.rectangle的奇怪错误
    colors=(np.array(colors)*255).astype(np.int)color=colors[i]cv2.rectangle(img,(x0,y0),(x1,y1),color,2)"""tuple(colors[i])(0,255,0)tuple(colors[i])==(0,255,0)Truecv2.rectangle(img,(x0,y0),(x1,y1),colors[i],2)Tra......
  • 树莓派Python读取DHT11温湿度数据
    树莓派4使用Python通过GPIO从DHT11温湿度传感器读取数据原文地址:https://blog.zeruns.tech/archives/625.html介绍DHT11是一款有已校准数字信号输出的温湿度传感器。其精度湿度±5%RH,温度±2℃,量程湿度20-90%RH,温度0~50℃。精度不高,但价格低廉。DHT11使用单总线通信。供电电......