ラピッドスタディAWS 〜 2.AWS SDK for Ruby で EC2を作成

ラピッドスタディAWSの3稿目の記事です。
前回は、ラピッドスタディAWS 〜 1.AWS SDK for Rubyの導入 - toyamarinyon's diaryでした。
投稿が2週間も空いてしまい、ラピッド感がない。。お盆休みで頑張るぞー。

で、今回は前回導入したAWS SDK for Rubyを使ってElastic Compute Cloud(以下EC2)を作成します。
結論としては、『超カンタン』です。2行でできます。
SecurityGroupも秘密鍵も設定していないので、SSHでログインすることはできません。
それでもManagementConsoleからやるのがバカバカしくなるくらいカンタンでした。

それでは、早速はじめましょう。
(今回はAWS SDK for Ruby の導入は終わっている状態として話を進めます)

EC2について

まずAWSの公式ページの説明を引用します。

Amazon Elastic Compute Cloud(Amazon EC2)とは、クラウド内で規模の変更が可能なコンピュータ処理能力を提供するウェブサービスです。開発者がより簡単にウェブスケールでのコンピュータ作業をできるように設計されています。

うんうん、なるほど。実際に使用するには、以下の手順でいいらしい。

  1. 即座に稼働を開始するには、事前設定済みの、テンプレート化された Amazon マシンイメージ(AMI)を選択します。または、使用するアプリケーション、ライブラリ、データ、および関連する設定から成る AMI を作成します。
  2. Amazon EC2 インスタンス上でセキュリティやネットワークアクセスを設定します。
  3. 目的のインスタンスタイプを選択したら、AMI のインスタンスを必要な数だけ開始し、監視し、終了します。この作業には、ウェブサービス API や、提供されているさまざまな管理ツールを使用できます。
  4. インスタンスに対して、複数のロケーションで実行したいのか、固定 IP のエンドポイントを利用するのか、または堅牢なブロックストレージを追加するのか等を決定します。
  5. 利用料金は、インスタンス稼働時間またはデータ転送のような、お客様が実際に消費するリソースに対してのみ発生します。

いろいろと設定することもあるみたいですが、今回は、『事前設定済みのAMIから稼働』をやってみたいと思います。

AWS SDK for Ruby で EC2を作成!

まずは『事前設定済みのAMI』を見つけましょう。
今回はAmazon Linux の最新版を使おうと思うので、MarketPlaceで探します。
(AWS SDK for Rubyで検索できることもわかっているですが、実装が追いついていません。。)
AmazonLinux東京リージョンAMIのimage_id(AMIを一意にするキー)は"ami-173fbf16"でした。

AMIが決まればあと一息!
以下のスクリプトを作成して bundle exec ruby hello_ec2.rb すると、インスタンスが立ち上がります。

$ cat hello_aws.rb
require 'aws-sdk'

AWS.config(
	:access_key_id => 'YOUR_ACCESS_KEY_ID', 
	:secret_access_key => 'YOUR_SECRET_ACCESS_KEY',
        :region => 'ap-northeast-1'
)

ec2 = AWS::EC2.new

ec2.instances.create(:image_id => "ami-173fbf16", :instance_type => "t1.micro")

instance_typeを指定しないと、デフォルトでm1.smallで立ち上がってしまい課金的に辛いです。
でも、これだけでインスタンスが立ち上がってしましました。。恐るべしAWS...
今回はここまでで、次回は、立ち上げたインスタンスにセキュリティグループとか秘密鍵の設定をしてSSHでログイン出来るようにしたいと思います。