ようへいの日々精進XP

よかろうもん

aws-sdk を使ってインスタンスのリストを取得しながら Ruby を勉強する

概要

準備

aws-sdk for ruby のインストール

gem で一発でインストール。

sudo gem install aws-sdk --no-ri --no-rdoc -V

やっておくべきこと

access_keysecret_access_key と対象となるエンドポイントについて確認して config.yml として保存する。

access_key_id: ${YOUR_ACCESS_KEY}
secret_access_key: ${YOUR_SECRET_KEY}
ec2_endpoint: ec2.ap-northeast-1.amazonaws.com

endpoint についてはこちらで確認して設定しておく。

実際にやってみる

インスタンス一覧を取得

インスタンスの ID と Hypervisor のタイプと IP アドレスを取得してみる。

以下のような出力となる。

id              hypervisor      ipaddress
i-xxxxxxx1      xen             xx.xxx.xxx.xx1
i-xxxxxxx2      xen
i-xxxxxxx3      xen             xx.xxx.xxx.xx2
i-xxxxxxx4      xen

へえ、Xen なんやなあと親近感。

ちなみに、クラスとかオブジェクトとかメソッドとか全く理解出来ていないが...以下のような感じだろうか...誰か教えてください...orz

用語 コード
オブジェクト ec2.instances
変数 instance
メソッド id とか hypervisor とか ipaddress

なのでメソッドとしてこちらを参考にしてインスタンスの色々な情報を取ることが出来るかも。

出力の体裁を良くする

とりあえず目的が果たせたところで、出力の結果を罫線をつけたりして見た目を良くしたいということで、terminal-table という gem を利用して出力を罫線をつけてみる。

terminal-table

terminal-tableruby で書かれたテキストベースのテーブル生成モジュール。詳細はこちらを。

sudo gem install terminal-table --no-ri --no-rdoc -V

インストールは上記のように gem で一発。簡単ですな。

インスタンス一覧取得スクリプトをちょっと修正

以下のような感じで書き換えてみる。こちらにもアップ。

変わったところは terminal-tablerequire しているところと、オブジェクトから取得したメソッドを rows に突っ込んでいる点。

そうすると...以下のような出力となり、ちょっと見やすくなる。

+------------+------------+----------------+
| id         | hypervisor | ipaddress      |
+------------+------------+----------------+
| i-xxxxxxx1 | xen        | xx.xxx.xxx.xx1 |
| i-xxxxxxx2 | xen        |                |
| i-xxxxxxx3 | xen        | xx.xxx.xxx.xx2 |
| i-xxxxxxx4 | xen        |                |
+------------+------------+----------------+

自己満足。

まとめ

  • 意外に簡単にインスタンス一覧を取得出来たのは先人たちの経験と aws-sdk のおかけです...
  • 次はインスタンスの起動と停止を試してみたいなと思っちょリマス
  • terminal-table は良いです

参考