# ec2spec [![Gem Version](https://badge.fury.io/rb/ec2spec.svg)](https://badge.fury.io/rb/ec2spec) [![Build Status](https://travis-ci.org/kyoshidajp/ec2spec.svg?branch=master)](https://travis-ci.org/kyoshidajp/ec2spec) [![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)][license] [license]: https://github.com/kyoshidajp/ec2spec/blob/master/LICENSE ec2spec is a simple comparison tool for Amazon EC2 Instances you can access. Supports the following items. | item | from | | :------- | :------ | | instance type | host | | instance id | host | | vCPU | AWS Price List API | | memory | AWS Price List API | | price | AWS Price List API | The target host must be accessible from the machine. Also, only On-Demand way and Linux machine. ## Installation ``` $ gem install ec2spec ``` ## Usage ``` $ ec2spec ssh -h host1 ... [options] ``` ### Options ``` -h, --host Target hosts name. --days How many days per one month. --format Output format (default: plain_text). plain_text, json, hash --region Region of EC2 (default: ap-northeast-1). --debug Output logs as DEBUG level. ``` ### Example ``` $ ec2spec ssh -h host1 host2 host3 ``` ``` I, [2018-08-12T20:54:25.814752 #64341] INFO -- : Started: host1 I, [2018-08-12T20:54:25.814835 #64341] INFO -- : Started: host2 I, [2018-08-12T20:54:25.814867 #64341] INFO -- : Started: host3 I, [2018-08-12T20:54:25.826113 #64341] INFO -- : Finished: host3 I, [2018-08-12T20:54:29.385848 #64341] INFO -- : Finished: host1 I, [2018-08-12T20:54:37.560003 #64341] INFO -- : Finished: host2 +---------------+-------------+-------------+-------+ | | host1 | host2 | host3 | +---------------+-------------+-------------|-------+ | instance_type | t2.micro | c4.2xlarge | N/A | | instance_id | i-xxxxxxxx | i-yyyyyyyy | N/A | | vCPU | 1 | 8 | N/A | | memory | 1 GiB | 15 GiB | N/A | | price (USD/H) | 0.0152 | 0.504 | N/A | | price (USD/M) | 11.3088 | 374.976 | N/A | +---------------+-------------+---------------------+ ``` The data of `host3` could not be acquired due to some error. ## As a library ``` > require 'ec2spec' > hosts = %w[host1 host2] > client = Ec2spec::Client.new(hosts, 30, 'hash') > result_json = client.run > puts result_json I, [2018-08-12T20:54:25.814752 #64341] INFO -- : Started: host1 I, [2018-08-12T20:54:25.814835 #64341] INFO -- : Started: host2 I, [2018-08-12T20:54:29.385848 #64341] INFO -- : Finished: host1 I, [2018-08-12T20:54:37.560003 #64341] INFO -- : Finished: host2 => {"host1":{"instance_type":"t2.micro","instance_id":"i-xxxxxxxx","vCPU":"1","memory":"1 GiB","price (USD/H)":0.152,"price (USD/M)":11.3088},"host2":{"instance_type":"c4.2xlarge","instance_id":"i-yyyyyyyy","vCPU":"8","memory":"15 GiB","price (USD/H)":0.504,"price (USD/M)":374.976}} ``` ## Requirement - Ruby(MRI) 2.3.0 or higher ## Competitors - [Amazon Web Services Simple Monthly Calculator](https://calculator.s3.amazonaws.com/index.html) - [Amazon EC2 Instance Comparison](https://www.ec2instances.info/) ## Contributing Bug reports and pull requests are welcome on GitHub at https://github.com/kyoshidajp/ec2spec. ## License The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).