简体   繁体   中英

how to get the estimated cost of an ec2-instance of type m4.large with ebs storage of 500gb?

how to get the estimated cost of an ec2-instance of tpe m4.large with ebs storage of about 500gb through java sdk ? is there any specific sdk provided by aws for this ? i have tried to look many aws api's but i didn't find any , the link i find was very hard to understand and fetch value from here in terms of instance type and cost, here is the link: https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonS3/current/us-east-1/index.json

is there any java api or sdk available to fetch estimated cost of an instance ?

You can use AWS Cost Management APIs,

The Cost Explorer API allows you to programmatically query your cost and usage data. You can query for aggregated data such as total monthly costs or total daily usage. You can also query for granular data, such as the number of daily write operations for Amazon DynamoDB database tables in your production environment.

By GetCostAndUsage you can get estimated cost.for more information read the following documents on the AWS website:

https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_GetCostAndUsage.html

https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/Welcome.html

There is sample request:

POST / HTTP/1.1
Host: ce.us-east-1.amazonaws.com
x-amz-Date: <Date>
Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=contenttype;date;host;user-agent;x-amz-date;x-amz-target;x-amzn-requestid,Signature=<Signature>
User-Agent: <UserAgentString>
Content-Type: application/x-amz-json-1.1
Content-Length: <PayloadSizeBytes>
Connection: Keep-Alive
X-Amz-Target: AWSInsightsIndexService.GetCostAndUsage
{
  "TimePeriod": {
    "Start":"2017-09-01",
    "End": "2017-10-01"
  },
  "Granularity": "MONTHLY",
  "Filter": {      
    "Dimensions": {
      "Key": "SERVICE",
      "Values": [
        "Amazon Simple Storage Service"
      ]
    }
  },
  "GroupBy":[
    {
      "Type":"DIMENSION",
      "Key":"SERVICE"
    },
    {
      "Type":"TAG",
      "Key":"Environment"
    }
  ],
   "Metrics":["BlendedCost", "UnblendedCost", "UsageQuantity"]
}

And response:

HTTP/1.1 200 OK
x-amzn-RequestId: <RequestId>
Content-Type: application/x-amz-json-1.1
Content-Length: <PayloadSizeBytes>
Date: <Date>
{
  "GroupDefinitions": [
    {
      "Key": "SERVICE",
      "Type": "DIMENSION"
    },
    {
      "Key": "Environment",
      "Type": "TAG"
    }
  ],
  "ResultsByTime": [
    {
      "Estimated": false,
      "Groups": [
        {
          "Keys": [
            "Amazon Simple Storage Service",
            "Environment$Prod"
          ],
          "Metrics": {
            "BlendedCost": {
              "Amount": "39.1603300457",
              "Unit": "USD"
            },
            "UnblendedCost": {
              "Amount": "39.1603300457",
              "Unit": "USD"
            },
            "UsageQuantity": {
              "Amount": "173842.5440074444",
              "Unit": "N/A"
            }
          }
        },
        {
          "Keys": [
            "Amazon Simple Storage Service",
            "Environment$Test"
          ],
          "Metrics": {
            "BlendedCost": {
              "Amount": "0.1337464807",
              "Unit": "USD"
            },
            "UnblendedCost": {
             "Amount": "0.1337464807",
              "Unit": "USD"
            },
            "UsageQuantity": {
              "Amount": "15992.0786663399",
              "Unit": "N/A"
            }
          }
        }
      ],
      "TimePeriod": {
        "End": "2017-10-01",
        "Start": "2017-09-01"
      },
      "Total": {}
    }
  ]
}

For Java SDK check this page:

https://docs.aws.amazon.com/goto/SdkForJava/ce-2017-10-25/GetCostAndUsage

Also, the AWS Price List Service is helpful for resources you have not them already on your account, for example, if you want to create an AWS calculator.

GetProducts API gives you the full price information, and base on that you can calculate on your side.

Sample request GerProducts:

POST / HTTP/1.1
Host: api.pricing.<region>.<domain>
x-amz-Date: <Date>
Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=contenttype;date;host;user-agent;x-amz-date;x-amz-target;x-amzn-requestid,Signature=<Signature>
User-Agent: <UserAgentString>
Content-Type: application/x-amz-json-1.1
Content-Length: <PayloadSizeBytes>
Connection: Keep-Alive
X-Amz-Target: AWSPriceListService.GetProducts
{
    "Filters": [
        {
            "Type": "TERM_MATCH",
            "Field": "ServiceCode",
            "Value": "AmazonEC2"
        },
        {
            "Type": "TERM_MATCH",
            "Field": "volumeType",
            "Value": "Provisioned IOPS"
        }
    ],
    "FormatVersion": "aws_v1",
    "NextToken": null,
    "MaxResults": 1
}

and response:

HTTP/1.1 200 OK
x-amzn-RequestId: <RequestId>
Content-Type: application/x-amz-json-1.1
Content-Length: <PayloadSizeBytes>
Date: <Date>
{
    "FormatVersion": "aws_v1",
    "NextToken": "57r3UcqRjDujbzWfHF7Ciw==:ywSmZsD3mtpQmQLQ5XfOsIMkYybSj+vAT+kGmwMFq+K9DGmIoJkz7lunVeamiOPgthdWSO2a7YKojCO+zY4dJmuNl2QvbNhXs+AJ2Ufn7xGmJncNI2TsEuAsVCUfTAvAQNcwwamtk6XuZ4YdNnooV62FjkV3ZAn40d9+wAxV7+FImvhUHi/+f8afgZdGh2zPUlH8jlV9uUtj0oHp8+DhPUuHXh+WBII1E/aoKpPSm3c=",
    "PriceList": [
        "{\"product\":{\"productFamily\":\"Storage\",\"attributes\":{\"storageMedia\":\"SSD-backed\",\"maxThroughputvolume\":\"320 MB/sec\",\"volumeType\":\"Provisioned IOPS\",\"maxIopsvolume\":\"20000\",\"servicecode\":\"AmazonEC2\",\"usagetype\":\"CAN1-EBS:VolumeUsage.piops\",\"locationType\":\"AWS Region\",\"location\":\"Canada (Central)\",\"servicename\":\"Amazon Elastic Compute Cloud\",\"maxVolumeSize\":\"16 TiB\",\"operation\":\"\"},\"sku\":\"WQGC34PB2AWS8R4U\"},\"serviceCode\":\"AmazonEC2\",\"terms\":{\"OnDemand\":{\"WQGC34PB2AWS8R4U.JRTCKXETXF\":{\"priceDimensions\":{\"WQGC34PB2AWS8R4U.JRTCKXETXF.6YS6EN2CT7\":{\"unit\":\"GB-Mo\",\"endRange\":\"Inf\",\"description\":\"$0.138 per GB-month of Provisioned IOPS SSD (io1)  provisioned storage - Canada (Central)\",\"appliesTo\":[],\"rateCode\":\"WQGC34PB2AWS8R4U.JRTCKXETXF.6YS6EN2CT7\",\"beginRange\":\"0\",\"pricePerUnit\":{\"USD\":\"0.1380000000\"}}},\"sku\":\"WQGC34PB2AWS8R4U\",\"effectiveDate\":\"2017-08-01T00:00:00Z\",\"offerTermCode\":\"JRTCKXETXF\",\"termAttributes\":{}}}},\"version\":\"20170901182201\",\"publicationDate\":\"2017-09-01T18:22:01Z\"}"
    ]
}

For more info read the following doc:

https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_pricing_GetProducts.html

Finally, you can get the idea from AWS Cost calculator:

https://calculator.s3.amazonaws.com/index.html

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM