根据 AWS 成本和使用情况报告中的资源 ID 添加实例名称/队列名称/ASG 名称



我在s3存储桶中设置了一个成本和使用情况报告。我试图从报告中获得EC2实例的不同成本,我需要添加一个自定义列,该列具有与实例ID相对应的舰队名称或ASG名称类型的详细信息。

我已经在字典中使用EC2 API获得了实例名称和它们的ID,但我无法将我的自定义列添加到报告中,这样我就可以使用groupBy获得与实例相关联的不同类型的成本。

没有直接的方法可以做到这一点。我们必须在从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)

您可以通过标记实例来实现这一点(可以说这是aws的标准分组方式(。您需要在计费控制台中启用标签。。成本分配标签?

然后你会有一列每个标签

最新更新