如何使用 java-sdk 获取任何 EC2 实例的成本
How to get the cost of any EC2 instance using java-sdk
我想使用 Cost Explorer API 获取我的 EC2 实例的使用情况和成本。
我能够成功获得使用量和成本,但是成本和使用量包括 EC2 实例和 EBS 卷完成的使用量,所以我想使用 usage_type_group
来分离成本,例如 EC2 :Running Hours
但每当我通过时,我都没有得到任何价值。如果我删除它,我将获得总使用量和成本的价值。
DimensionValues dimensions = new DimensionValues();
dimensions.setKey("USAGE_TYPE_GROUP");
Collection<String> values = new ArrayList<>();
values.add("EC2 : Running Hours");
dimensions.setValues(values);
filter.setDimensions(dimensions);
GetCostAndUsageRequest getCostAndUsageRequest = new GetCostAndUsageRequest().withGroupBy(groupBy)
.withTimePeriod(dateInterval).withGranularity(Granularity.MONTHLY)
.withFilter(filter)
.withMetrics("UsageQuantity")
.withMetrics("BlendedCost");
try {
costInformation = costExplorer.getCostAndUsage(getCostAndUsageRequest);
} catch (AWSCostExplorerException ex) {
logger.error("cost fetch details failed from cost explorer " + ex.getErrorMessage());
}
试试这个。我这样做并获得了一些 EC2 账单信息。
void test_costDetails() {
Expression expression = new Expression();
DimensionValues dimensions = new DimensionValues();
dimensions.withKey(Dimension.SERVICE);
dimensions.withValues("EC2 - Other");
expression.withDimensions(dimensions);
GetCostAndUsageResult result = costExplorer.getCostAndUsage(new GetCostAndUsageRequest().withTimePeriod(
new DateInterval().withStart("2019-10-01").withEnd("2019-10-29")).withGranularity("DAILY").withMetrics(
"BlendedCost").withFilter(expression));
result.getResultsByTime().forEach(r -> {
System.out.println(r);
});
}
我想使用 Cost Explorer API 获取我的 EC2 实例的使用情况和成本。
我能够成功获得使用量和成本,但是成本和使用量包括 EC2 实例和 EBS 卷完成的使用量,所以我想使用 usage_type_group
来分离成本,例如 EC2 :Running Hours
但每当我通过时,我都没有得到任何价值。如果我删除它,我将获得总使用量和成本的价值。
DimensionValues dimensions = new DimensionValues();
dimensions.setKey("USAGE_TYPE_GROUP");
Collection<String> values = new ArrayList<>();
values.add("EC2 : Running Hours");
dimensions.setValues(values);
filter.setDimensions(dimensions);
GetCostAndUsageRequest getCostAndUsageRequest = new GetCostAndUsageRequest().withGroupBy(groupBy)
.withTimePeriod(dateInterval).withGranularity(Granularity.MONTHLY)
.withFilter(filter)
.withMetrics("UsageQuantity")
.withMetrics("BlendedCost");
try {
costInformation = costExplorer.getCostAndUsage(getCostAndUsageRequest);
} catch (AWSCostExplorerException ex) {
logger.error("cost fetch details failed from cost explorer " + ex.getErrorMessage());
}
试试这个。我这样做并获得了一些 EC2 账单信息。
void test_costDetails() {
Expression expression = new Expression();
DimensionValues dimensions = new DimensionValues();
dimensions.withKey(Dimension.SERVICE);
dimensions.withValues("EC2 - Other");
expression.withDimensions(dimensions);
GetCostAndUsageResult result = costExplorer.getCostAndUsage(new GetCostAndUsageRequest().withTimePeriod(
new DateInterval().withStart("2019-10-01").withEnd("2019-10-29")).withGranularity("DAILY").withMetrics(
"BlendedCost").withFilter(expression));
result.getResultsByTime().forEach(r -> {
System.out.println(r);
});
}