使用aws java sdk来获取计费信息

时间:2014-11-26 19:10:18

标签: amazon-web-services amazon-ec2 aws-sdk

我尝试使用java api从aws获取ec2实例,s3存储桶和ebs卷的计费信息。我想创建api,它提供特定的实体明智的每小时结算报告。是否有任何java api获得相同的?我在aws java sdk api文档中找不到相同的内容。

5 个答案:

答案 0 :(得分:10)

没有API可以获取AWS结算信息。相反,你可以做的是:

  1. 启用详细的结算报告(来自信息中心)
  2. 配置您想要的帐单报告
  3. AWS将开始将计费信息作为CSV文件推送到(预)配置的存储桶,每小时数次
  4. 使用REST API或S3 Java API在需要时从存储桶中获取信息。
  5. 有关详细信息:See here

答案 1 :(得分:3)

更新答案,因为它不再是正确答案。 AWS已发布Java SDK的CostExplorer API。您可以在此处找到文档:https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/index.html

public GetCostAndUsageResult getCostAndUsage(GetCostAndUsageRequest request) 
  

检索帐户的费用和使用指标。您可以   指定与成本和使用相关的指标,例如BlendedCosts或   UsageQuantity,您希望请求返回。你也可以   按各种维度过滤和分组您的数据,例如SERVICE或   AZ,在特定时间范围内。有关有效尺寸的完整列表,   请参阅GetDimensionValues操作。掌握账户   AWS Organizations中的组织可以访问所有成员帐户。

答案 2 :(得分:2)

除了@helloV回答之外,如果您想要在几天/几小时甚至几分钟内查看您的AWS Billings。您可以使用aws-elk-billing工具。目前拉取请求正在等待与the main repository合并。它使用ELK Stack来可视化AWS成本和使用报告

(尽管它可能仍然适用于AWS详细结算报告,其中包含一些额外的列以及AWS成本和使用情况报告中的所有列。)

这是Kibana仪表板的完整屏幕截图。

AWS Billing Kibana Dashboard

答案 3 :(得分:2)

您可以使用AWS Java SDK获取成本和使用情况数据。这是一个功能样本。

import com.amazonaws.auth.AWSStaticCredentialsProvider;

import com.amazonaws.auth.profile.ProfileCredentialsProvider;

import com.amazonaws.regions.Regions;

import com.amazonaws.services.costexplorer.AWSCostExplorer;

import com.amazonaws.services.costexplorer.AWSCostExplorerClientBuilder;

import com.amazonaws.services.costexplorer.model.DateInterval;

import com.amazonaws.services.costexplorer.model.GetCostAndUsageRequest;

import com.amazonaws.services.costexplorer.model.GetCostAndUsageResult;

public class AwsCostExplorer {

    private static AWSCostExplorer awsCostExplorerClient;

    public static void main(String arg[]){

AWSCostExplorerClientBuilder builder =AWSCostExplorerClientBuilder.standard();

        awsCostExplorerClient = builder.withCredentials(new AWSStaticCredentialsProvider(new ProfileCredentialsProvider("profile-name").getCredentials()))
                .withRegion(Regions.US_EAST_1).build();

        GetCostAndUsageRequest request = new GetCostAndUsageRequest()
                .withTimePeriod(new DateInterval().withStart("2018-07-01").withEnd("2018-07-25"))
                .withGranularity("DAILY")
                .withMetrics("BlendedCost");

        GetCostAndUsageResult result = awsCostExplorerClient.getCostAndUsage(request);

        result.getResultsByTime().forEach(resultByTime -> {
            System.out.println(resultByTime.toString());
        });

        awsCostExplorerClient.shutdown();
    }
}

答案 4 :(得分:0)

@bagui

根据AWS官方文档,没有可用的API功能来获取实际的结算用户数据。相反,您可以获得预期的结算数据:

要开始使用,您只需为结算数据提供Amazon S3存储桶,授予AWS Billing系统写入权限,并访问“结算首选项”页以启用编程访问:

完成此操作后,我们将每天多次生成预估帐单并将其存储在存储桶中,您可以根据需要下载和处理该帐单。我们还将在每个结算周期结束时生成最终账单。

结算报告以CSV文件格式生成,并包含大量详细信息:

以下是字段列表(有关详细信息,请参阅文档):

  • 发票ID
  • 付款人帐户名称和ID
  • 关联的帐户名称和ID(用于合并结算)
  • 记录类型
  • 记录ID
  • 结算期开始日期和结束日期
  • 发票日期
  • 纳税地址
  • 付款人采购订单编号
  • 产品代码
  • 产品名称
  • 记录卖方
  • 使用类型
  • 操作
  • 费率ID
  • 项目说明
  • 使用开始和使用结束日期和时间
  • 使用数量
  • 混合费率(针对合并结算)
  • 货币代码
  • 税前成本
  • 积分
  • 税额
  • 税种
  • 总费用

推荐的AWS文档: Programmatic Access to AWS Billing Data

由于