python-根据标签获取快照成本

我正在尝试通过boto3使用Cost Explorer 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']
                      }}, #Dimensions end
        {'Tags':{
             'Key': 'test',
             'Values': ['aj']
         } # Tags ed
     } ] }# Filter ends

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

但这总是显示0成本.

解决方法:

可以在过滤器中添加“标签”,如下所示:

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'
    },
],

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

我确认您的标记值和键都匹配.

上一篇:JavaScript中异步/等待的用法和理解


下一篇:AWS Firewall Manager