我尝试使用java api从aws获取ec2实例,s3存储桶和ebs卷的计费信息。我想创建api,它提供特定的实体明智的每小时结算报告。是否有任何java api获得相同的?我在aws java sdk api文档中找不到相同的内容。
答案 0 :(得分:10)
没有API可以获取AWS结算信息。相反,你可以做的是:
有关详细信息: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仪表板的完整屏幕截图。
答案 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文件格式生成,并包含大量详细信息:
以下是字段列表(有关详细信息,请参阅文档):
推荐的AWS文档: Programmatic Access to AWS Billing Data
由于