在 AWS 成本和使用情况报告中针对资源 ID 添加实例 names/fleet name/ASG 名称
Add instance names/fleet name/ASG name against resource IDs in AWS Cost & Usage report
我在 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 的标准分组方式)。您需要在计费控制台中启用标签..成本分配标签?
那么每个标签都有一列
我在 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 的标准分组方式)。您需要在计费控制台中启用标签..成本分配标签?
那么每个标签都有一列