Skip to main content

Python library for interaction with the AWS Pricing API

Project description

https://img.shields.io/pypi/v/pyutu.svg https://img.shields.io/pypi/dm/pyutu.svg 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.

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyutu-0.4.1.tar.gz (4.6 kB view hashes)

Uploaded Source

Built Distribution

pyutu-0.4.1-py3.5.egg (4.1 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page