15
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

aws-sdk を利用して Ruby で AWS にアクセス

Last updated at Posted at 2015-01-28

はじめに

AWS で管理するマシンの台数が増えてくると、各種作業を自動化したくなってくる。
色々選択肢はあるが、今回は SDK for Ruby を利用して、Ruby から AWS にアクセスしてみる。

環境

下記の環境を前提に作業を進める。

  • OS: CentOS 6.4
  • Ruby: 2.1.0p0
  • aws-sdk: 2.0.6.pre

インストール

作業用ディレクトリの作成

適当な作業ディレクトリを用意する。
今回は ~/projects/aws_ruby 以下で作業を行う。

$ mkdir -p ~/projects/aws_ruby
$ cd ~/projects/aws_ruby

aws-sdk のインストール

作業ディレクトリの vendor/bundle 以下に Gem をインストールする。
作業ディレクトリで下記コマンドを実行。

$ bundle init

作成された Gemfile を以下のように編集。

Gemfile
# A sample Gemfile
source "https://rubygems.org"

gem 'aws-sdk', '2.0.6.pre'
$ bundle install --path vendor/bundle

access_key と secret_access_key の作成

AWS のダッシュボードから、

  • Administration & Security
    • Identity & Access Management (IAM)
      • Users
        • Create New Users

を選択し、ユーザー名を入力。次の画面の Show User Security Credentials をクリックすると access keysecret_access_key が確認できる。

次に作成したユーザーを選択し、 Attach User Policy をクリック。
今回はテンプレートにある Administrator Access を選択して Apply Policy をクリックする。
これでAWSの全ての機能にアクセス出来るユーザーが作成できた。

特定の機能のみ許可できるようにするには、Policy を適切に設定してやればよい。

config の作成

access_keysecret_access_keyregion の設定を config_ec2.yml に記述する。

例えば東京リージョン の Region 名は ap-northeast-1
その他 Region名の一覧は[ここ] (http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region)にある。

config ディレクトリを作成し、設定ファイルを編集する。

config/config_ec2.yml
access_key_id: "さっき取得した access_key"
secret_access_key: "さっき取得した secret_access_key"
region: "ap-northeast-1"

サンプルコード実行

下記のようにコードを記述する。

src/get_instance_id.rb
#!/usr/bin/env ruby
#-*- coding: utf-8 -*-

require 'yaml'
require 'bundler'
Bundler.require

# Load config file
config = YAML.load(File.read "config/config_ec2.yml")

# Create ec2 object
ec2 = Aws::EC2::Client.new(
  access_key_id: config["access_key_id"],
  secret_access_key: config["secret_access_key"],
  region: config["region"]
  )

# Access describe of instances
reservations = ec2.describe_instances.reservations
reservations.each_with_index do |reservation, i1|
  reservation.instances.each_with_index do |instance, i2|
    puts "i1: #{i1}\ti2: #{i2}\tID: #{instance.instance_id}"
  end
end

作業ディレクトリ直下で下記コマンドを実行。

$ ruby src/get_instance_id.rb
i1: 0 i2: 0 ID: i-AAAAAAA
i1: 1 i2: 0 ID: i-BBBBBBB
...

おわりに

これで AWS に Ruby からアクセス出来るようになった。
次はインスタンス作成・削除等を行えるようにしたい。

15
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?