首页 > 解决方案 > 根据特定标签获取 AWS 资源成本

问题描述

我已经跨 EC2、存储、负载均衡器、网络等创建了不同的 AWS 资源。我将每个资源标记GroupName为键和值,每个组都不同,例如group1,group2等。

现在,我想获得每个组的成本。我写了以下代码

    GroupDefinition groupDefinition =
        new GroupDefinition().withType(GroupDefinitionType.TAG).withKey("Cluster");

    GetCostAndUsageRequest costAndUsageRequest
        = new GetCostAndUsageRequest()
          .withGroupBy(groupDefinition)
          .withGranularity("MONTHLY")
          .withMetrics("UnblendedCost");

    GetCostAndUsageResult costAndUsage = 
         awsCostExplorer.getCostAndUsage(costAndUsageRequest);

现在,我希望costAndUsage有基于每个标签的组。但它总是给我总账单。我可以给任何随机值,withKey但结果总是一样的。

Maven依赖:

    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk</artifactId>
        <version>1.11.453</version>
    </dependency>

这是我得到的回应(首先resultByTime为简洁起见)

{
   "timePeriod":{
      "start":"2018-11-01",
      "end":"2018-12-01"
   },
   "total":{

   },
   "groups":[
      {
         "keys":[
            "Cluster$"
         ],
         "metrics":{
            "UnblendedCost":{
               "amount":"26712.9751185906",
               "unit":"USD"
            }
         }
      }
   ],
   "estimated":false
}

我想要的是

Cluster1 -> 1500 USD Cluster2 -> 1000 USD

假设我有一堆用 keyCluster和 values标记的资源Cluster1Cluster2.

响应中没有按每个实际标签值分组。我在这里想念什么?

标签: amazon-web-servicesaws-java-sdkaws-billing

解决方案


代码工作正常。我没有正确接收,因为需要在父收款人帐户上执行其他步骤。

你需要

  1. 转到 AWS 账单门户
  2. 选择要启用成本计算的标签,在我的例子中Cluster
  3. 启用成本分配
  4. 这需要大约 24 小时才能生效。

注意:如果您有 AWS 子账户,您的父收款人账户将有权执行上述步骤。

有关更多详细信息,请参阅文档


24 小时后,如果运行代码将看到如下所示的响应

{
   "timePeriod":{
      "start":"2018-12-01",
      "end":"2018-12-31"
   },
   "total":{

   },
   "groups":[
      {
         "keys":[
            "Cluster$"
         ],
         "metrics":{
            "UnblendedCost":{
               "amount":"23434.5469766795",
               "unit":"USD"
            }
         }
      },
      {
         "keys":[
            "Cluster$cluster-1"
         ],
         "metrics":{
            "UnblendedCost":{
               "amount":"2343.3888413893",
               "unit":"USD"
            }
         }
      },
      {
         "keys":[
            "Cluster$cluster-2"
         ],
         "metrics":{
            "UnblendedCost":{
               "amount":"23464.8057597427",
               "unit":"USD"
            }
         }
      }
   ],
   "estimated":true
}

推荐阅读