Skip to content

lashex/pyutu

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

About

A Python library for the AWS Pricing API

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages