pyutu icon indicating copy to clipboard operation
pyutu copied to clipboard

A Python library for the AWS Pricing API

pyutu

.. image:: https://img.shields.io/pypi/v/pyutu.svg :target: https://pypi.python.org/pypi/pyutu

.. image:: https://img.shields.io/pypi/dm/pyutu.svg :target: https://pypi.python.org/pypi/pyutu

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

A Python-based CLI and library for cloud pricing APIs. Currently covering AWS Pricing <http://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/price-changes.html>_.

utu – from the Maori <http://maoridictionary.co.nz/word/8937>_ 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


.. code-block:: bash

  pip install pyutu


CLI Examples

Activate help

.. code-block:: bash

pyutu --help

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

.. code-block:: bash

$> 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.

.. code-block:: bash

$> 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

.. code-block:: bash

$> 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.

.. code-block:: bash

$> 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