首页 > 编程语言 > 详细

python+pandas通过boto3分析aws费用

时间:2020-09-18 08:53:47      阅读:79      评论:0      收藏:0      [点我收藏+]
  • 首先通过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费用

    原文:https://blog.51cto.com/aegis8/2534562

    (0)
    (0)
       
    举报
    评论 一句话评论(0
    关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
    © 2014 bubuko.com 版权所有
    打开技术之扣,分享程序人生!