【问题标题】:How to fetch the AWS cost as per the Account?如何根据账户获取 AWS 成本?
【发布时间】:2021-06-26 16:20:39
【问题描述】:

假设我有组织,并且我想根据帐户明智地获得成本。我怎样才能得到它?

我将aws-sdk 用于nodejs。如何列出所有帐户并明智地获取成本帐户?

我为此使用 AWS lambda。任何帮助将不胜感激。

我正在尝试在下面使用单个帐户但我无法设置维度,并且我对在线资源无能为力

var params = {
  Granularity: DAILY | MONTHLY | HOURLY, /* required */
  Metric: BLENDED_COST | UNBLENDED_COST | AMORTIZED_COST | NET_UNBLENDED_COST | NET_AMORTIZED_COST | USAGE_QUANTITY | NORMALIZED_USAGE_AMOUNT, /* required */
  TimePeriod: { /* required */
    End: 'STRING_VALUE', /* required */
    Start: 'STRING_VALUE' /* required */
  },
  Filter: { /* Expression */
    And: [
      /* recursive Expression */,
      /* more items */
    ],
    CostCategories: {
      Key: 'STRING_VALUE',
      MatchOptions: [
        EQUALS | ABSENT | STARTS_WITH | ENDS_WITH | CONTAINS | CASE_SENSITIVE | CASE_INSENSITIVE,
        /* more items */
      ],
      Values: [
        'STRING_VALUE',
        /* more items */
      ]
    },
    Dimensions: {
      Key: AZ | INSTANCE_TYPE | LINKED_ACCOUNT | LINKED_ACCOUNT_NAME | OPERATION | PURCHASE_TYPE | REGION | SERVICE | SERVICE_CODE | USAGE_TYPE | USAGE_TYPE_GROUP | RECORD_TYPE | OPERATING_SYSTEM | TENANCY | SCOPE | PLATFORM | SUBSCRIPTION_ID | LEGAL_ENTITY_NAME | DEPLOYMENT_OPTION | DATABASE_ENGINE | CACHE_ENGINE | INSTANCE_TYPE_FAMILY | BILLING_ENTITY | RESERVATION_ID | RESOURCE_ID | RIGHTSIZING_TYPE | SAVINGS_PLANS_TYPE | SAVINGS_PLAN_ARN | PAYMENT_OPTION | AGREEMENT_END_DATE_TIME_AFTER | AGREEMENT_END_DATE_TIME_BEFORE,
      MatchOptions: [
        EQUALS | ABSENT | STARTS_WITH | ENDS_WITH | CONTAINS | CASE_SENSITIVE | CASE_INSENSITIVE,
        /* more items */
      ],
      Values: [
        'STRING_VALUE',
        /* more items */
      ]
    },
    Not: /* recursive Expression */,
    Or: [
      /* recursive Expression */,
      /* more items */
    ],
    Tags: {
      Key: 'STRING_VALUE',
      MatchOptions: [
        EQUALS | ABSENT | STARTS_WITH | ENDS_WITH | CONTAINS | CASE_SENSITIVE | CASE_INSENSITIVE,
        /* more items */
      ],
      Values: [
        'STRING_VALUE',
        /* more items */
      ]
    }
  },
  PredictionIntervalLevel: 'NUMBER_VALUE'
};
costexplorer.getCostForecast(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
}); 

【问题讨论】:

  • 您似乎将 SDK 文档复制到了您的应用中?这甚至可以毫无错误地运行吗?您需要花时间实际查看参数,并设置所需参数的值,而不是将整个文档复制/粘贴到代码中。像维度应该是LINKED_ACCOUNTLINKED_ACCOUNT_NAME 以获取特定帐户的费用。
  • 告诉我这个错误ValidationException: Dimensions expression must have key and values set\n

标签: javascript node.js amazon-web-services aws-lambda aws-billing


【解决方案1】:

试试这个代码...确保您在 (~/.aws/credentials) 中有凭据文件或按照https://stackoverflow.com/a/67059810/10214650 中的步骤操作

report.js

var AWS = require('aws-sdk');
AWS.config.update({region:'us-east-1'});

var costexplorer = new AWS.CostExplorer({apiVersion: '2017-10-25'});
var params = {
  Metrics: [ 
    'UNBLENDED_COST',
 ],
  TimePeriod: { 
    End: '', /* Fill the end date */
    Start: '' /* Fill the start date  */
  },
  Granularity: 'DAILY', /* MONTHLY or HOURLY */
  GroupBy: [
    {
      Key: 'LINKED_ACCOUNT',
      Type: 'DIMENSION' 
    },
  ]
};
costexplorer.getCostAndUsage(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

此代码提供贵组织中各个帐户的成本报告。

【讨论】:

    【解决方案2】:

    根据原始问题的 cmets,您似乎是在直接复制官方 AWS API 文档。

    如果您不习惯使用 AWS Cost Explorer API,获取每个账户成本的一种免费托管解决方案是注册Vantage account。当您将您的主 AWS 账户与 Vantage 连接时,默认情况下它会自动导入所有成员账户。从那里,如果您导航到他们控制台的“应计费用”部分,您可以按会员帐户过滤费用。

    作为免责声明,我在 Vantage 工作,并且个人花了几个月的时间使用 Cost Explorer API,如果您不知道自己在做什么,它们往往相当复杂,所以我想我会推荐这个作为替代方案解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-13
      • 2020-12-20
      • 2022-11-16
      • 1970-01-01
      • 1970-01-01
      • 2014-02-03
      • 2020-12-08
      • 2019-08-08
      相关资源
      最近更新 更多