Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kyoshidajp/ec2spec
A simple comparison tool for Amazon EC2 Instances.
https://github.com/kyoshidajp/ec2spec
aws ec2 ruby
Last synced: 3 months ago
JSON representation
A simple comparison tool for Amazon EC2 Instances.
- Host: GitHub
- URL: https://github.com/kyoshidajp/ec2spec
- Owner: kyoshidajp
- License: mit
- Archived: true
- Created: 2018-08-05T02:48:16.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-03-05T20:15:40.000Z (almost 5 years ago)
- Last Synced: 2024-09-28T21:01:28.941Z (3 months ago)
- Topics: aws, ec2, ruby
- Language: Ruby
- Homepage:
- Size: 72.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# [![](https://user-images.githubusercontent.com/3317191/44626545-42a39380-a959-11e8-96a4-de3b0ea3e96f.png)](https://github.com/kyoshidajp/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]
```### 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
E, [2018-08-12T20:54:25.826113 #64341] ERROR -- : Connection refused: 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 a connection refused error.
### Options
```
-h, --host Target hosts name.--days How many days per one month.
--format Output format (default: plain_text).
plain_text, json, hash, slack, markdown--region Region of EC2 (default: ap-northeast-1).
--unit Currency unit.
with --rate.--rate Dollar exchange rate.
with --unit.
--calc_type Calculate exchange currency rate type.
api, manual
with --app_id, --unit (if app)
--unit, rate (if manual)--app_id App ID of Open Exchange Rates
https://openexchangerates.org/
with --calc_type, --unit--debug Output logs as DEBUG level.
```#### --format (`plain_text`)
```
+---------------+-------------+-------------+
| | host1 | host2 |
+---------------+-------------+-------------|
| instance_type | t2.micro | c4.2xlarge |
| instance_id | i-xxxxxxxx | i-yyyyyyyy |
| vCPU | 1 | 8 |
| memory | 1 GiB | 15 GiB |
| price (USD/H) | 0.0152 | 0.504 |
| price (USD/M) | 11.3088 | 374.976 |
+---------------+-------------+-------------+
```#### --format (`json` and `hash`)
```
{"host1":{"instance_type":"t2.micro","instance_id":"i-xxxxxxxx","vCPU":"1","memory":"1 GiB","price (USD/H)":0.0152,"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}}
```#### --format (`slack`)
````
```
+---------------+-------------+-------------+
| | host1 | host2 |
+---------------+-------------+-------------+
| instance_type | t2.micro | c4.2xlarge |
| instance_id | i-xxxxxxxx | i-yyyyyyyy |
| vCPU | 1 | 8 |
| memory | 1 GiB | 15 GiB |
| price (USD/H) | 0.0152 | 0.504 |
| price (USD/M) | 11.3088 | 374.976 |
+---------------+-------------+-------------+
```
````#### --format (`markdown`)
```
| | stg-bastion | worker1 |
|---------------|-------------|-------------|
| instance_type | t2.micro | c4.2xlarge |
| instance_id | i-xxxxxxxx | i-yyyyyyyy |
| vCPU | 1 | 8 |
| memory | 1 GiB | 15 GiB |
| price (USD/H) | 0.0152 | 0.504 |
| price (USD/M) | 11.3088 | 374.976 |
```### Exchange currency rate
#### Manual
Output JPY as exchange rate is 1 dollar 111 yen.
```
$ ec2spec ssh -h host1 host2 --unit JPY --calc_type manual
```#### API
First, get App ID from
https://openexchangerates.org/Output JPY with it.
```
$ ec2spec ssh -h host1 host2 --unit JPY --calc_type api --app_id xxxxxxxx
```**Note:** Exchange rate is cached in `~/.ec2spec/oxr.json`. If you want to refresh, you have to delete it.
## 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).