@mapbox/price-pigeon
Fetch AWS OnDemand prices for easy import into other modules
Last updated 3 years ago by kaibot3000 .
BSD-2-Clause · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install @mapbox/price-pigeon 
SYNC missed versions from official npm registry.

CircleCI

price-pigeon

illustration by Joseph Wilkins

Price Pigeon

The answer to inconsistent spot price bids.

Uses the AWS Price List API to generate a mapping of OnDemand prices by instance type. This mapping can be used during instance creation to make accurate spot bid prices.

*Note: The price supplied is the highest OnDemand price for that instance type across the following regions:

    {
        'US East (N. Virginia)': 'us-east-1',
        'US West (N. California)': 'us-west-1',
        'US West (Oregon)': 'us-west-2',
        'Asia Pacific (Sydney)': 'ap-southeast-2',
        'EU (Ireland)': 'eu-west-1',
    };

Using Price Pigeon

  • install price-pigeon and add to your package.json:
npm install @mapbox/price-pigeon --save
  • [Optional] Update the price map to use the most recent OnDemand prices:
cd node_modules/price-pigeon
npm run price-pigeon-update
  • Add your InstanceType to the template Parameters if it isn't there already. The template will use a function that refers to InstanceType to get the correct price. Here's an example:
'Parameters' : {
  'InstanceType' : {
    'Description' : 'Type of spot instance to launch',
    'Type' : 'String',
    'Default' : 'm3.xlarge', /* This is the type of instance you're launching */
    'AllowedValues' : ['m3.xlarge', 'r3.large']
  }
}

  • Include the price map directly in your CloudFormation template.js (check out price-pigeon/examples/ for a sample template):
// require the price-mapping function
var priceMapper = require('@mapbox/price-pigeon').priceMapper;
// get a price map with 50% off prices
var priceMap = priceMapper(0.5);
// If you want to use the actual price, you don't need to supply a ratio:
priceMap = priceMapper();

// Don't forget to add the rest of your template to this stub!
module.exports = {
  'AWSTemplateFormatVersion' : '2010-09-09',
  'Description' : 'price pigeon',
  'Mappings' :   {
    'Prices' : priceMap
  },
  'Resources' : {
    'LaunchConfiguration' : {
      'Properties' : {
        'SpotPrice' : {
          'Fn::FindInMap' : ['Prices', {'Ref' : 'InstanceType'}, 'price']
        }
      }
    }
  },
  'Parameters' : {
    'InstanceType' : {
      'Description' : 'Type of spot instance to launch',
      'Type' : 'String',
      'Default' : 'm3.xlarge',
      'AllowedValues' : ['m3.xlarge', 'r3.xlarge']
    }
  }
};

Current Tags

  • 1.2.3                                ...           latest (3 years ago)

13 Versions

  • 1.2.3                                ...           3 years ago
  • 1.2.2                                ...           3 years ago
  • 1.2.1                                ...           3 years ago
  • 1.2.0                                ...           3 years ago
  • 1.1.0                                ...           3 years ago
  • 1.0.1-dev1                                ...           3 years ago
  • 1.0.1                                ...           4 years ago
  • 1.0.0                                ...           4 years ago
  • 0.1.4                                ...           4 years ago
  • 0.1.2                                ...           4 years ago
  • 0.1.1                                ...           4 years ago
  • 0.1.0                                ...           4 years ago
  • 0.0.1                                ...           4 years ago
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 2
Dependencies (2)
Dev Dependencies (1)
Dependents (0)
None

Copyright 2014 - 2017 © taobao.org |