Skip to content

Instantly share code, notes, and snippets.

@ghsatpute
Created November 22, 2018 12:00
Show Gist options
  • Save ghsatpute/d347f4055b0c4d8fba36fba47dadcdc2 to your computer and use it in GitHub Desktop.
Save ghsatpute/d347f4055b0c4d8fba36fba47dadcdc2 to your computer and use it in GitHub Desktop.
Get AWS Billing by tag
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;
import com.amazonaws.services.costexplorer.model.Group;
import com.amazonaws.services.costexplorer.model.GroupDefinition;
import com.amazonaws.services.costexplorer.model.GroupDefinitionType;
import com.amazonaws.services.costexplorer.model.MetricValue;
import com.amazonaws.services.costexplorer.model.ResultByTime;
import java.util.Map;
/*
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.453</version>
</dependency>
*/
public class AwsBillingUtils {
public static void main(String[] args) {
String startDate = "2018-11-01";
String endDate = "2018-11-30";
String tagName = "Name";
String tagValue = "tag1";
AWSCostExplorer awsCostExplorer = AWSCostExplorerClientBuilder.standard()
.withRegion(Regions.US_WEST_2)
.build();
GroupDefinition groupDefinition = new GroupDefinition().withType(GroupDefinitionType.TAG).withKey(tagName + "$" + tagValue);
GetCostAndUsageRequest costAndUsageRequest
= new GetCostAndUsageRequest()
.withTimePeriod(new DateInterval().withStart(startDate).withEnd(endDate))
.withGroupBy(groupDefinition)
.withGranularity("MONTHLY") //
.withMetrics("BlendedCost");
GetCostAndUsageResult costAndUsage = awsCostExplorer.getCostAndUsage(costAndUsageRequest);
int i = 0;
for(ResultByTime resultByTime: costAndUsage.getResultsByTime()) {
for(Group group: resultByTime.getGroups()) {
String metricKey = "Name$vantage-ss1$";
if (group.getKeys().contains(metricKey)) {
Map<String, MetricValue> metrics = group.getMetrics();
System.out.println("Cost for stack " + metricKey + " is : " + metrics.get("BlendedCost"));
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment