如何使用CloudWatch API获取AWS账户/服务成本?

时间:2017-10-10 12:41:00

标签: amazon-web-services aws-sdk aws-cli billing

我知道,为了获得AWS账户的详细成本,我需要启用程序化计费访问,并将计费报告推送到相应AWS账户中的S3存储桶。

这种方法对我来说很好。但是,问题是要下载和处理的账单大小很大,只能获得过去几个月所有链接的AWS账户的账户和服务级别成本。

我正在尝试探索AWS CloudWatch API以获取关联的帐户级别费用。我试图使用以下命令获取所有链接帐户的列表及其使用的服务:

aws cloudwatch list-metrics --namespace "AWS/Billing"

完全按预期工作并正确返回结果。但是,在尝试使用以下命令获取这些帐户的成本时:

aws cloudwatch get-metric-statistics --namespace "AWS/Billing"
--dimensions "Name=LinkedAccount,Value=<linked-account-id>" --metric-name=EstimatedCharges --start-time=2017-10-01T19:30:00Z --end-time=2017-10-10T19:30:00Z --period=3600 --statistics=Sum

我得到了一个几乎为空的以下形式的JSON:

{
    "Datapoints": [],
    "Label": "EstimatedCharges"
}

我确保使用正确的关联帐户ID,并且提供的其他参数如上所述。我在这里想要获得帐户或服务水平的费用是什么?

编辑1:我已将配置文件中的区域设置为us-east-1,因为该区域是命令工作的必填字段。这是某种原因吗?如果是,那么修复/解决方法是什么?

更新1:我可以使用上述API获取整体AWS账户成本(主要账户成本+关联账户成本),只需调整维度,但仍然无法获得个人帐户/服务费用(主帐户和关联帐户的个人费用)。

更新2 :当我使用我需要的费用的帐户中的IAM用户时,我可以获得关联的帐户费用。但是,LinkedAccount维度仍无效:当我使用主帐户的IAM用户使用LinkedAccount维度获取其关联帐户的费用时,仍会返回空结果。我的期望是,因为我可以获得关联帐户&#39;主账户账单中的成本,我可以看到关联账户&#39;当我登录AWS门户网站时,我应该可以获得关联的帐户&#39;使用CloudWatch API的成本。仍然试图获得一个解决方案来获取关联帐户&#39;使用CW API使用主帐户的IAM用户的费用。

1 个答案:

答案 0 :(得分:0)

在结算首选项下,您可以启用程序化访问权限,

https://aws.amazon.com/blogs/aws/new-programmatic-access-to-aws-billing-data/

  

结算 - &gt; S3(触发器)CSV文件 - &gt; Lambda - &gt; S3(Billing for   具体账户)

您可以获取lambda警报并处理所有链接帐户的生成的csv文件。

希望它有所帮助。

<强> EDIT1:

如果您想对这些费用进行民意调查,

  

aws cloudwatch get-metric-statistics --metric-name EstimatedCharges   --start-time 2017-04-08T23:18:00 --end-time 2017-04-09T23:18:00--period 3600 --namespace AWS / Billing --statistics Sum --dimensions Name = LinkedAccount,Value = accountid --dimensions   名称=货币,值= USD

您还需要提及其他货币维度。

如果cloudwatch没有任何数据,您将无法获得任何结果。

以下是我为关联帐户获得的结果

{
    "Datapoints": [
        {
            "Timestamp": "2017-04-09T06:00:00Z", 
            "Sum": 70.34, 
            "Unit": "None"
        }, 
        {
            "Timestamp": "2017-04-09T22:00:00Z", 
            "Sum": 76.4, 
            "Unit": "None"
        }, 
        {
            "Timestamp": "2017-04-09T10:00:00Z", 
            "Sum": 73.37, 
            "Unit": "None"
        }, 
        {
            "Timestamp": "2017-04-09T14:00:00Z", 
            "Sum": 73.37, 
            "Unit": "None"
        }, 
        {
            "Timestamp": "2017-04-09T02:00:00Z", 
            "Sum": 70.34, 
            "Unit": "None"
        }, 
        {
            "Timestamp": "2017-04-09T18:00:00Z", 
            "Sum": 76.4, 
            "Unit": "None"
        }
    ], 
    "Label": "EstimatedCharges"
}