我正在尝试使用 java api 从 aws 获取 ec2 实例、s3 存储桶和 ebs 卷的计费信息。我想创建提供特定实体明智的每小时计费报告的 api。有没有相同的java api?我在 aws java sdk api 文档中找不到相同的内容。
5 回答
没有用于获取 AWS 账单信息的 API。相反,您可以做的是:
- 打开详细的计费报告(从仪表板)
- 配置您想要什么样的计费报告
- AWS 将开始每小时数次将账单信息作为 CSV 文件推送到(预)配置的存储桶
- 需要时使用 REST API 或 S3 Java API 从存储桶中获取信息。
欲了解更多信息:请参阅此处
更新答案,因为它不再是正确的答案。AWS 已发布适用于 Java 开发工具包的 CostExplorer API。您可以在此处找到文档:https ://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/index.html
public GetCostAndUsageResult getCostAndUsage(GetCostAndUsageRequest request)
检索您帐户的成本和使用指标。您可以指定希望请求返回的成本和使用相关指标,例如 BlendedCosts 或 UsageQuantity。您还可以在特定时间范围内按不同维度(例如 SERVICE 或 AZ)对数据进行过滤和分组。有关有效维度的完整列表,请参阅 GetDimensionValues 操作。AWS Organizations 中组织中的主账户可以访问所有成员账户。
除了@helloV 回答之外,如果您想查看您的 AWS 账单日/小时甚至数分钟。您可以使用aws-elk-billing工具。目前拉取请求正在等待与主存储库合并。它使用 ELK Stack 可视化 AWS 成本和使用情况报告
(尽管它可能仍适用于 AWS 详细账单报告,其中包含一些额外的列以及 AWS 成本和使用报告中的所有列)。
这是 Kibana 仪表板的完整屏幕截图。
您可以使用 AWS Java 开发工具包获取成本和使用数据。这是一个功能示例。
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();
}
}
@bagui
根据 AWS 官方文档,没有可用于获取实际账单使用数据的 API 功能。相反,您可以获得预期的计费数据:
要开始,您需要做的就是为您的账单数据提供一个 Amazon S3 存储桶,授予 AWS 账单系统写入它的权限,然后访问账单首选项页面以启用编程访问:
完成此操作后,我们将每天多次生成估算账单并将其存储在存储桶中,您可以在其中根据需要下载和处理它。我们还将在每个计费期结束时生成最终账单。
计费报告以 CSV 文件的形式生成,并包含大量详细信息:
以下是字段列表(请阅读文档以获取更多信息):
- 发票编号
- 付款人帐户名称和 ID
- 关联帐户名称和 ID(用于合并帐单)
- 记录类型
- 记录编号
- 计费周期开始和结束日期
- 发票日期
- 税务地址
- 付款人采购订单号
- 产品代码
- 产品名称
- 记录卖方
- 使用类型
- 手术
- 费率 ID
- 商品描述
- 使用开始和使用结束日期和时间
- 使用量
- 混合费率(用于合并计费)
- 货币代码
- 税前成本
- 学分
- 税额
- 税种
- 总消耗
参考的 AWS 文档: 以编程方式访问 AWS 账单数据
谢谢