Skip to content

Instantly share code, notes, and snippets.

@vatshat
Created January 25, 2019 08:56
Show Gist options
  • Select an option

  • Save vatshat/f3fa2bbee59edcabf3d9cb4b04d88c72 to your computer and use it in GitHub Desktop.

Select an option

Save vatshat/f3fa2bbee59edcabf3d9cb4b04d88c72 to your computer and use it in GitHub Desktop.

Revisions

  1. vatshat revised this gist Jan 25, 2019. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion GetCostAndUsage.java
    Original file line number Diff line number Diff line change
    @@ -94,7 +94,7 @@ class CredentialsClient{

    public AWSStaticCredentialsProvider getCredentials() throws Exception {
    AssumeRoleRequest assumeRole = new AssumeRoleRequest()
    .withRoleArn("arn:aws:iam::037559324442:role/ec2-cli-access")
    .withRoleArn("arn:aws:iam::1234567890:role/ec2-cli-access")
    .withRoleSessionName("thabile-java-sdk");

    AWSSecurityTokenService sts = AWSSecurityTokenServiceClientBuilder.standard().withRegion("us-east-1").build();
  2. vatshat created this gist Jan 25, 2019.
    111 changes: 111 additions & 0 deletions GetCostAndUsage.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,111 @@

    import com.amazonaws.auth.AWSStaticCredentialsProvider;
    import com.amazonaws.auth.BasicSessionCredentials;
    import com.amazonaws.services.costexplorer.AWSCostExplorer;
    import com.amazonaws.services.costexplorer.AWSCostExplorerClientBuilder;
    import com.amazonaws.services.costexplorer.model.*;
    import com.amazonaws.services.securitytoken.AWSSecurityTokenService;
    import com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClientBuilder;
    import com.amazonaws.services.securitytoken.model.AssumeRoleRequest;
    import com.amazonaws.services.securitytoken.model.Credentials;

    import com.amazonaws.services.route53domains.AmazonRoute53Domains;
    import com.amazonaws.services.route53domains.AmazonRoute53DomainsClientBuilder;
    import com.amazonaws.services.route53domains.model.*;

    public class Test2 {

    public static void main(String[] args) {
    CEWithDimension();
    CEWithGroupDefinition();
    ViewBilling();
    }

    private static void CEWithGroupDefinition() {
    final GetCostAndUsageRequest awsCERequest = new GetCostAndUsageRequest()
    .withTimePeriod(new DateInterval().withStart("2018-04-01").withEnd("2018-04-30"))
    .withGranularity(Granularity.DAILY)
    .withMetrics("BlendedCost")
    .withGroupBy(new GroupDefinition().withType("DIMENSION").withKey("INSTANCE_TYPE"));

    try {
    AWSCostExplorer ce = AWSCostExplorerClientBuilder.standard()
    .withCredentials(new CredentialsClient().getCredentials())
    .build();

    GetCostAndUsageResult ceResult = ce.getCostAndUsage(awsCERequest);
    ceResult.getResultsByTime().forEach(resultsByTime -> {
    System.out.println(resultsByTime.toString());
    });

    } catch (final Exception e) {
    System.out.println(e);
    }
    }

    private static void CEWithDimension() {
    Expression expression = new Expression();
    DimensionValues dimensions = new DimensionValues();
    dimensions.withKey(Dimension.SERVICE);
    dimensions.withValues("Amazon Route 53");

    expression.withDimensions(dimensions);

    final GetCostAndUsageRequest awsCERequest = new GetCostAndUsageRequest()
    .withTimePeriod(new DateInterval().withStart("2018-07-01").withEnd("2018-07-30"))
    .withGranularity(Granularity.DAILY)
    .withMetrics("BlendedCost")
    .withFilter(expression);

    try {
    AWSCostExplorer ce = AWSCostExplorerClientBuilder.standard()
    .withCredentials(new CredentialsClient().getCredentials())
    .build();

    System.out.println(ce.getCostAndUsage(awsCERequest));

    } catch (final Exception e) {
    System.out.println(e);
    }
    }

    private static void ViewBilling() {
    final ViewBillingRequest awsVBRequest = new ViewBillingRequest();

    try {
    AmazonRoute53Domains vb = AmazonRoute53DomainsClientBuilder.standard()
    .withCredentials(new CredentialsClient().getCredentials())
    .build();

    ViewBillingResult vbResult = vb.viewBilling(awsVBRequest);
    System.out.println(vbResult.getBillingRecords());

    } catch (final Exception e) {
    System.out.println(e);
    }
    }
    }

    class CredentialsClient{

    CredentialsClient () {

    }

    public AWSStaticCredentialsProvider getCredentials() throws Exception {
    AssumeRoleRequest assumeRole = new AssumeRoleRequest()
    .withRoleArn("arn:aws:iam::037559324442:role/ec2-cli-access")
    .withRoleSessionName("thabile-java-sdk");

    AWSSecurityTokenService sts = AWSSecurityTokenServiceClientBuilder.standard().withRegion("us-east-1").build();
    Credentials credentials = sts.assumeRole(assumeRole).getCredentials();

    BasicSessionCredentials sessionCredentials = new BasicSessionCredentials(
    credentials.getAccessKeyId(),
    credentials.getSecretAccessKey(),
    credentials.getSessionToken());

    return new AWSStaticCredentialsProvider(sessionCredentials);
    }

    }