【问题标题】:How to get cost for each EC2, not total cost for all EC2 from AWS API如何从 AWS API 获取每个 EC2 的成本,而不是所有 EC2 的总成本
【发布时间】:2021-08-14 01:31:55
【问题描述】:

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

所以,我使用的是 AWS Cost Explorer Service。

它具有“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 实例的每次使用量和成本?

【问题讨论】:

    标签: amazon-web-services amazon-ec2


    【解决方案1】:

    这比我想象的要难,所以我分享一下以防其他人需要。

    aws ce get-cost-and-usage \
        --filter file://filters.json \
        --time-period Start=2021-08-01,End=2021-08-14 \
        --granularity DAILY \
        --metrics "BlendedCost" \
        --group-by Type=TAG,Key=Name
    

    filters.json 的内容:

    {
        "Dimensions": {
            "Key": "SERVICE",
            "Values": [
                "Amazon Elastic Compute Cloud - Compute"
            ]
        }
    }
    

    --- 可用指标 ---
    摊销成本
    混合成本
    净摊销成本
    净非混合成本
    标准化使用量
    未混合成本
    使用数量

    除使用情况外的大多数指标的说明:https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/ce-advanced.html

    【讨论】:

      【解决方案2】:

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

      您需要为整个月的预留实例和每月 1/2 的按需实例付费 - 但是哪个实例是预留的,哪个是按需实例?你说不出来;预留实例的概念只是一个计费概念,与特定实例无关。

      您或许能够大致了解您要查找的内容 - 但存在一些限制。

      【讨论】:

        【解决方案3】:

        您可以使用标签来跟踪资源的成本。在 EC2 的情况下,您可以分配像 Project: myprojcet 或 Application: myapp 这样的标签,然后在成本资源管理器中按标签过滤费用并使用已放置的标签来跟踪费用。如果实例在某个时间点包含在预留计划中,则标签只会显示您的费用未涵盖期间的成本。

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-10-03
            • 1970-01-01
            • 2016-10-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-07
            相关资源
            最近更新 更多