首先通过boto3 调用CostExplorer接口拿到数据具体代码如下:
import boto3 import datetime from datetime import timedelta now = datetime.datetime.now() #本周第一天和最后一天 this_week_start = now - timedelta(days=1+now.weekday()) this_week_end = now + timedelta(days=5-now.weekday()) #生成client client = boto3.client('ce') response = client.get_cost_and_usage( TimePeriod={ 'Start': this_week_star.strftime('%Y-%m-%d'), 'End': this_week_end.strftime('%Y-%m-%d') }, Granularity='DAILY', Metrics=['BlendedCost'], GroupBy=[ {'Type': 'DIMENSION', 'Key': 'SERVICE'} ] )
2.根据返回的按天的数据合并成DataFrame
import pandas as pd #生成空的pd含AWS Resource一列 result = pd.DataFrame(columns=['AWS Resource']) #生成df for project in response["ResultsByTime"]: resources = [] costs = [] for obj in project['Groups']: resources.append(obj['Keys'][0]) costs.append(float(obj['Metrics']['BlendedCost']['Amount'])) dataset = { 'AWS Resource': resources, project['TimePeriod']['Start']: costs } df = pd.DataFrame.from_dict(dataset) #合并df并替换NA result = pd.merge(result, df, how='outer', on='AWS Resource').fillna(0)统计这周aws费用并排序
#按列求和保留小数点后3位 result['this_week_total_cost'] = result.sum(axis=1).round(3) result.sort_values("this_week_total_cost")
查看更多关于python+pandas通过boto3分析aws费用的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did169008