【发布时间】:2014-11-26 19:10:18
【问题描述】:
我正在尝试使用 java api 从 aws 获取 ec2 实例、s3 存储桶和 ebs 卷的计费信息。我想创建提供特定实体明智的每小时计费报告的 api。有没有相同的java api?我在 aws java sdk api 文档中找不到相同的内容。
【问题讨论】:
标签: amazon-web-services amazon-ec2 aws-sdk
我正在尝试使用 java api 从 aws 获取 ec2 实例、s3 存储桶和 ebs 卷的计费信息。我想创建提供特定实体明智的每小时计费报告的 api。有没有相同的java api?我在 aws java sdk api 文档中找不到相同的内容。
【问题讨论】:
标签: amazon-web-services amazon-ec2 aws-sdk
没有用于获取 AWS 账单信息的 API。相反,您可以做的是:
欲了解更多信息:See here
【讨论】:
除了@helloV 回答之外,如果您想查看您的 AWS 账单日/小时甚至数分钟。您可以使用aws-elk-billing 工具。目前拉取请求正在等待与the main repository 合并。它使用 ELK Stack 可视化 AWS 成本和使用情况报告
(尽管它可能仍然适用于 AWS 详细账单报告,其中包含一些额外的列以及 AWS 成本和使用报告中的所有列)。
这是 Kibana 仪表板的完整屏幕截图。
【讨论】:
更新答案,因为它不再是正确的答案。 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 中的组织有权访问所有成员账户。
【讨论】:
您可以使用 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 文件的形式生成并包含大量详细信息:
以下是字段列表(请阅读文档了解更多信息):
参考的 AWS 文档: Programmatic Access to AWS Billing Data
谢谢
【讨论】: