Created
November 22, 2018 12:03
-
-
Save ghsatpute/610e3c7e81cf1bdda8dd79c61e88b133 to your computer and use it in GitHub Desktop.
Get AWS billing by CloudFormation stack
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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> | |
*/ | |
/* | |
* Created by Ganesh Satpute on 21/11/18 5:33 PM.` | |
*/ | |
public class AwsBillingUtils { | |
public static void main(String[] args) { | |
AWSCostExplorer awsCostExplorer = AWSCostExplorerClientBuilder.standard() | |
.withRegion(Regions.US_WEST_2) | |
.build(); | |
GroupDefinition groupDefinition = new GroupDefinition().withType(GroupDefinitionType.TAG).withKey("aws:cloudformation:stack-name"); | |
GetCostAndUsageRequest costAndUsageRequest | |
= new GetCostAndUsageRequest() | |
.withTimePeriod(new DateInterval().withStart("2018-11-01").withEnd("2018-11-30")) | |
.withGroupBy(groupDefinition) | |
.withGranularity("MONTHLY") | |
.withMetrics("BlendedCost"); | |
GetCostAndUsageResult costAndUsage = awsCostExplorer.getCostAndUsage(costAndUsageRequest); | |
for(ResultByTime resultByTime: costAndUsage.getResultsByTime()) { | |
for(Group group: resultByTime.getGroups()) { | |
String stack = "aws:cloudformation:stack-name$stack-name"; | |
if (group.getKeys().contains(stack)) { | |
Map<String, MetricValue> metrics = group.getMetrics(); | |
System.out.println("Cost for stack " + stack + " is : " + metrics.get("BlendedCost")); | |
} | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment