【问题标题】:Add instance names/fleet name/ASG name against resource IDs in AWS Cost & Usage report在 AWS 成本和使用情况报告中针对资源 ID 添加实例名称/队列名称/ASG 名称
【发布时间】:2021-04-30 17:38:05
【问题描述】:

我在 s3 存储桶中设置了成本和使用情况报告。我正在尝试从报告中获取 EC2 实例的不同成本,我需要添加一个自定义列,其中包含针对实例 ID 的队列名称或 ASG 名称类型的详细信息。

我在字典中使用 EC2 API 获得了实例名称及其 ID,但我无法将我的自定义列添加到报告中,以便我可以使用 groupBy 来获取与实例相关的不同类型的成本。

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-ec2 aws-billing


    【解决方案1】:

    没有直接的方法可以做到这一点。我们必须向从 csv 文件(成本和使用报告)派生的数据框添加一个新列,然后使用使用 ec2 API 派生的实例信息(使用标签选项)。一旦我们填充了新列,我们可以在新列上使用 groupby() 从数据框中获取我们想要的数据

    running_instances = ec2_cli.instances.filter(Filters=[{
            'Name': 'instance-state-name',
            'Values': ['running']}])
        ec2info = defaultdict()
    
    for instance in running_instances:
        for tag in instance.tags:
            if 'Name'in tag['Key']:
                name = tag['Value']
        ec2info[instance.id] = {
                'Name': name,
                'Type': instance.instance_type
        }
    
    df.insert(loc=17, column='Instance_Name', value='Other')
    instance_id = []
    
    def update_col(x):
        for key, val in ec2info.items():
            if x == key:
                if ('MyAgg' in val['Name']) | ('MyAgg-AutoScalingGroup' in val['Name']):
                    return 'SharkAggregator'
                if ('MyColl AS Group' in val['Name']) | ('MyCollector-AutoScalingGroup' in val['Name']):
                    return 'SharkCollector'
                if ('MyMetric AS Group' in val['Name']) | ('MyMetric-AutoScalingGroup' in val['Name']):
                    return 'Metric'
    
    df['Instance_Name'] = df.ResourceId.apply(update_col)
    df.Instance_Name.fillna(value='Other', inplace=True)
    

    【讨论】:

      猜你喜欢
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-12
      相关资源
      最近更新 更多