A Python library for the AWS Pricing API
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

README.rst

pyutu

https://secure.travis-ci.org/lashex/pyutu.png?branch=master

A Python-based CLI and library for cloud pricing APIs. Currently covering AWS Pricing.

utu – from the Maori language, can be a verb that means to repay, pay, ...

pyutu – when said fast, sounds like "pay you too" ... which seems appropriate.

Initially, this library just strives to simplify pulling product details and pricing terms from a Service's Offer File for a given Region. That being said, if you have some ideas feel free to open an Issue labeled as an enhancement.

Installation

pip install pyutu

CLI Examples

Activate help

pyutu --help

A CLI example that shows details from the pricing index file.

$> pyutu index
Format Version: v1.0
Publication Date: 2015-12-15T23:51:56Z
Services Offered: AmazonDynamoDB, AmazonVPC, AmazonSimpleDB, AmazonGlacier,
  AmazonEC2, AmazonS3, AmazonSES, AmazonRoute53, AmazonElastiCache, AmazonRDS,
  AmazonRedshift, awskms, AmazonCloudFront
...snip...

A CLI example showing how to get EC2 Linux on-demand prices in the default region for the m4.large instance type.

$> pyutu price ec2 -a operatingSystem Linux -a instanceType m4.large
Service Alias: AmazonEC2
URL: https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonEC2/current/index.json
Region: us-west-2
Product Terms: OnDemand
Filtering Attributes: {'instanceType': 'm4.large', 'operatingSystem': 'Linux'}
Rate Code: 8ZSNJR8WJ5729VXM.JRTCKXETXF.6YS6EN2CT7 price: {
  "beginRange": "0",
  "description": "$0.139 per Dedicated Usage Linux m4.large Instance Hour",
  "effectiveDate": "2015-12-01T00:00:00Z",
  "endRange": "Inf",
  "pricePerUnit": {
    "USD": "0.1390000000"
  },
  "regionId": "us-west-2",
  "sku": "8ZSNJR8WJ5729VXM",
  "term_description": "OnDemand",
  "unit": "Hrs"
}
Rate Code: B2M25Y2U9824Q5TG.JRTCKXETXF.6YS6EN2CT7 price: {
  "beginRange": "0",
  "description": "$0.126 per On Demand Linux m4.large Instance Hour",
  "effectiveDate": "2015-12-01T00:00:00Z",
  "endRange": "Inf",
  "pricePerUnit": {
    "USD": "0.1260000000"
  },
  "regionId": "us-west-2",
  "sku": "B2M25Y2U9824Q5TG",
  "term_description": "OnDemand",
  "unit": "Hrs"
}
Rate Code: 62WK2ZX9BN3SYAXW.JRTCKXETXF.6YS6EN2CT7 price: {
  "beginRange": "0",
  "description": "$0.000 per Linux m4.large Dedicated Host Instance hour",
  "effectiveDate": "2015-12-01T00:00:00Z",
  "endRange": "Inf",
  "pricePerUnit": {
    "USD": "0.0000000000"
  },
  "regionId": "us-west-2",
  "sku": "62WK2ZX9BN3SYAXW",
  "term_description": "OnDemand",
  "unit": "Hrs"
}
Total Prices Found: 3
Time: 5.768927000000001 secs

A CLI example showing how to get EC2 Linux product details in the default region for the shared tenancy m4.large instance type

$> pyutu product ec2 -a operatingSystem Linux -a instanceType m4.large -a tenancy Shared
Service Alias: AmazonEC2
URL: https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonEC2/current/index.json
Region: us-west-2
Product Terms: OnDemand
Filtering Attributes: {'operatingSystem': 'Linux', 'tenancy': 'Shared', 'instanceType': 'm4.large'}
Product SKU: B2M25Y2U9824Q5TG product: {
  "offerCode": "AmazonEC2",
  "product": {
    "attributes": {
      "clockSpeed": "2.4 GHz",
      "currentGeneration": "Yes",
      "dedicatedEbsThroughput": "450 Mbps",
      "enhancedNetworkingSupported": "Yes",
      "instanceFamily": "General purpose",
      "instanceType": "m4.large",
      "licenseModel": "No License required",
      "location": "US West (Oregon)",
      "locationType": "AWS Region",
      "memory": "8 GiB",
      "networkPerformance": "Moderate",
      "operatingSystem": "Linux",
      "operation": "RunInstances",
      "physicalProcessor": "Intel Xeon E5-2676 v3 (Haswell)",
      "preInstalledSw": "NA",
      "processorArchitecture": "64-bit",
      "processorFeatures": "Intel AVX; Intel AVX2; Intel Turbo",
      "servicecode": "AmazonEC2",
      "storage": "EBS only",
      "tenancy": "Shared",
      "usagetype": "USW2-BoxUsage:m4.large",
      "vcpu": "2"
    },
    "productFamily": "Compute Instance",
    "sku": "B2M25Y2U9824Q5TG"
  },
  "regionId": "us-west-2",
  "term": {
    "B2M25Y2U9824Q5TG.JRTCKXETXF": {
      "effectiveDate": "2015-12-01T00:00:00Z",
      "offerTermCode": "JRTCKXETXF",
      "priceDimensions": {
        "B2M25Y2U9824Q5TG.JRTCKXETXF.6YS6EN2CT7": {
          "appliesTo": [],
          "beginRange": "0",
          "description": "$0.126 per On Demand Linux m4.large Instance Hour",
          "endRange": "Inf",
          "pricePerUnit": {
            "USD": "0.1260000000"
          },
          "rateCode": "B2M25Y2U9824Q5TG.JRTCKXETXF.6YS6EN2CT7",
          "unit": "Hrs"
        }
      },
      "sku": "B2M25Y2U9824Q5TG",
      "termAttributes": {}
    }
  },
  "term_description": "OnDemand"
}
Total Products Found: 1
Time: 5.734775 secs

A CLI example showing how to get all on-demand DDB prices in the default region.

$> pyutu price ddb
Service Alias: AmazonDynamoDB
URL: https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonDynamoDB/current/index.json
Region: us-west-2
Product Terms: OnDemand
Filtering Attributes: {}
Rate Code: VTDJ9RVHJGJP999U.JRTCKXETXF.6YS6EN2CT7 price: {
  "beginRange": "0",
  "description": "$0.00 per GB - US West (Oregon) data transfer from EUC1 (FRA)",
  "effectiveDate": "2015-07-01T00:00:00Z",
  "endRange": "Inf",
  "pricePerUnit": {
    "USD": "0.0000000000"
  },
  "regionId": "us-west-2",
  "sku": "VTDJ9RVHJGJP999U",
  "term_description": "OnDemand",
  "unit": "GB"
}
    ...snip...
Total Prices Found: 31
Time: 0.417241 secs