【问题标题】:Getting snapshot cost based on tags根据标签获取快照成本
【发布时间】:2019-06-16 13:18:34
【问题描述】:

我正在尝试通过 boto3 使用成本资源管理器 API。我正在尝试获取 EC2 快照的成本。这些快照具有与之关联的自定义标签。我要检索的是具有特定标签的快照的成本。

我编写了以下脚本:

import boto3
client = boto3.client('ce')
response = client.get_cost_and_usage(
    TimePeriod={
        'Start': '2019-01-20',
        'End': '2019-01-24'
    },
    Metrics=['BLENDED_COST','USAGE_QUANTITY','UNBLENDED_COST'],
    Granularity='MONTHLY',
    Filter={
        'Dimensions': {
            'Key':'USAGE_TYPE_GROUP',
            'Values': ['EC2: EBS - Snapshots']
        }
    }
)

这给了我成本。但这是快照使用的总成本,即所有卷的总成本。有没有办法根据快照上的标签进行过滤?

我尝试添加休闲过滤器:

Filter={
    'And': [
        {
            'Dimensions': {
               'Key':'USAGE_TYPE_GROUP',
               'Values': ['EC2: EBS - Snapshots']
            }
        },
        {
            'Tags':{
                'Key': 'test',
                'Values': ['aj']
        } 
    }
]
}

我在其中添加了该标签的 1 个快照。我检查了日期范围,快照是在该时间范围内创建的,并且仍然可用。我也尝试将粒度更改为DAILY

但这总是显示 0 成本。

【问题讨论】:

    标签: python amazon-web-services amazon-ec2 boto3


    【解决方案1】:

    'Tags' 可以按如下方式添加到您的过滤器中:

    response = client.get_cost_and_usage(
        TimePeriod={
            'Start': '2019-01-10',
            'End': '2019-01-15'
        },
        Metrics=['BLENDED_COST','USAGE_QUANTITY','UNBLENDED_COST'],
        Granularity='MONTHLY',
        Filter={
            'Dimensions': {
                'Key':'USAGE_TYPE',
                'Values': ['APN1-EBS:SnapshotUsage']
             },
             'Tags': {
                 'Key': 'keyName',
                 'Values': [
                     'keyValue',
                  ]
             }
         }
    )
    

    您可以在boto3 cost explorer API reference 中找到确切的用法。

    你也可以像这样按标签键分组:

    Filter={
        'Dimensions': {
            'Key':'USAGE_TYPE',
            'Values': ['APN1-EBS:SnapshotUsage']
         }
     },
     GroupBy=[
        {
            'Type': 'DIMENSION'|'TAG',
            'Key': 'string'
        },
    ],
    

    它不会过滤掉标签,但它会按标签键对返回的数据进行分组。这将返回与标签键匹配的所有标签值,因此它可能过于宽泛,但您可以使用它来解决任何其他问题。

    我会确认您的标签值和键都匹配。

    【讨论】:

    • 谢谢。我试过了。 (问题中更新的代码)。但这真的会过滤快照标签吗?它总是返回 0 作为成本。
    • @aaj 这应该可以。 Here's AWS GetCostAndUsage API 文档提供了一些说明。深入研究标签。我添加了另一种方法来帮助解决问题。
    • 嗨,我可以按超过 1 个标签过滤我的费用吗?从文档看来我不能...
    【解决方案2】:

    要使用标签查询快照甚至其他服务,您需要在计费菜单中激活它们。 参考链接激活需要查询的标签:

    https://console.aws.amazon.com/billing/home?region=us-east-1#/preferences/tags

    注意:只有组织中的主账户和不属于组织成员的单个账户才能访问成本分配标签。

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-21
      • 1970-01-01
      • 1970-01-01
      • 2016-09-23
      • 2021-03-18
      • 1970-01-01
      • 2018-01-10
      相关资源
      最近更新 更多