如何从每个EC2获得成本,而不是从AWS API获取所有EC2的总成本

时间:2018-04-06 08:24:52

标签: amazon-web-services amazon-ec2

我正在研究AWS api以检索有关我的EC2实例的必要信息。

所以,我正在使用AWS Cost Explorer服务。

它具有“GetCostAndUsage”功能,例如,它可以发送以下信息。 (这是官方AWS文档中的一个示例)

{
"TimePeriod": {
"Start":"2017-09-01",
"End": "2017-10-01"
},
"Granularity": "MONTHLY",
"Filter": {      
"Dimensions": {
  "Key": "SERVICE",
  "Values": [
    "Amazon Simple Storage Service"
  ]
}
},
"GroupBy":[
{
  "Type":"DIMENSION",
  "Key":"SERVICE"
},
{
  "Type":"TAG",
  "Key":"Environment"
}
],
 "Metrics":["BlendedCost", "UnblendedCost", "UsageQuantity"]
}

并检索以下信息。 (这是官方AWS文档中的一个示例)

{
"GroupDefinitions": [
{
  "Key": "SERVICE",
  "Type": "DIMENSION"
},
{
  "Key": "Environment",
  "Type": "TAG"
}
],
"ResultsByTime": [
{
  "Estimated": false,
  "Groups": [
    {
      "Keys": [
        "Amazon Simple Storage Service",
        "Environment$Prod"
      ],
      "Metrics": {
        "BlendedCost": {
          "Amount": "39.1603300457",
          "Unit": "USD"
        },
        "UnblendedCost": {
          "Amount": "39.1603300457",
          "Unit": "USD"
        },
        "UsageQuantity": {
          "Amount": "173842.5440074444",
          "Unit": "N/A"
        }
      }
    },
    {
      "Keys": [
        "Amazon Simple Storage Service",
        "Environment$Test"
      ],
      "Metrics": {
        "BlendedCost": {
          "Amount": "0.1337464807",
          "Unit": "USD"
        },
        "UnblendedCost": {
         "Amount": "0.1337464807",
          "Unit": "USD"
        },
        "UsageQuantity": {
          "Amount": "15992.0786663399",
          "Unit": "N/A"
        }
      }
    }
  ],
  "TimePeriod": {
    "End": "2017-10-01",
    "Start": "2017-09-01"
  },
  "Total": {}
}
]
}

我猜测关键'度量标准'中检索到的数据,这是总成本。不是每一个。 那么,我如何获得每个EC2实例的每种使用和成本?

3 个答案:

答案 0 :(得分:0)

将确切的成本与每个实例联系起来很困难 - 简单的例子,您有2个相同大小的实例 - 一个保留,一个按需 - 您每月运行1/2然后在本月的第二个半月关闭其中一个。

您将支付整个月的预留实例和每月1/2的按需实例 - 但是哪个实例是保留的并且是按需的?你不能说;保留实例的概念只是一种计费概念,并不与特定实例相关联。

您可能能够估算出您正在寻找的内容 - 但也有局限性。

答案 1 :(得分:0)

您可以使用标签来跟踪资源成本。对于EC2,您可以在Project Explorer中分配诸如Project:myprojcet或Application:myapp之类的标签,然后按标签过滤费用,并使用已放置的标签来跟踪费用。如果某个实例在某个时候被预订计划涵盖,则该标签只会显示未涵盖您的费用的期间的费用。

答案 2 :(得分:0)

知道这个问题很老,但您需要使用 GetCostAndUsageWithResources 调用,而不是 GetCostAndUsage。

https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ce/get-cost-and-usage-with-resources.html