Intelligent Technology's Technical Blog

株式会社インテリジェントテクノロジーの技術情報ブログです。

無料で活用!AWS ー EC2 + Ruby on Rails 4.1(その1) ー

こんにちは。中山です。

Amazon Web Services(AWS) って、新規ユーザは最初の1年間、制限付きながら、いろいろな機能を無料で使えるみたいですね。(詳細はこちら。)
これは試してみないといけない、と思い、早速実践してみました。
今回トライしたのは、

というところです。
それではさっそく試してみたいと思います。

1.アカウント作成

AWS のトップページから、「無料でお試しください」をクリックして、新しいアカウントを作成します。(一応、クレジットカードの登録が必要になります。)

f:id:IntelligentTechnology:20140515095514p:plain:w520

登録完了後、「Console Home」ページを開くと、以下のように表示されます。

f:id:IntelligentTechnology:20140515095900p:plain:w520
 

2.EC2 インスタンスの作成

2−1.インスタンス作成開始

先ほどの「Console Home」ページから、左上あたりに表示されている「EC2」をクリックします。
最初は、以下のようなメッセージが表示されるかもしれません。この場合は、アカウント登録したメールアドレスに、AWS からメールが到着するのを確認します。

f:id:IntelligentTechnology:20140515101819p:plain:w560

EC2 Dashboard」のページが、以下のように表示されます。まだインスタンスを作成していないので、「0 Running Instances」と表示されています。

f:id:IntelligentTechnology:20140515102533p:plain:w560

ページ中ほどの「Launch Instance」をクリックして、新しい EC2 インスタンスを作成します。
このとき、ページ右上から、あらかじめ「東京リージョン(Asia Pacific (Tokyo) )」を選択しておくようにします。

f:id:IntelligentTechnology:20140515110333p:plain:w320
 

2−2.Amazon Machine Image(AMI)の選択

表示された以下のページで、「Amazon Machine Image(AMI)」の種類を選択します。
無料の範囲内で利用するために、「Free tier eligible」の表記のあるものの中から選択する必要があります。

f:id:IntelligentTechnology:20140515113433p:plain:w560

今回は、無難に「Amazon Linux AMI」を選びました。「64-bit」のほうにチェックをつけて「Select」をクリックします。

無料活用ポイント!その1

Amazon Machine Image(AMI) は、「Free tier eligible」の表記のあるものの中から選ぶ。

 

2−3.Instance Type の選択

次に、「Instance Type」を選択します。
これも無料で利用するために、「Micro instances」を選択します。

f:id:IntelligentTechnology:20140515115709p:plain:w560

Micro instances」を選択した状態で、ページ下側の「Review and Launch」をクリックします。

無料活用ポイント!その2

Instance Type は、「Micro instances」を選ぶ。

 

2−4.レビュー

「Instance Type」を選択後、以下のようなページに切り替わります。

f:id:IntelligentTechnology:20140515140559p:plain:w560

「安全のために Security group の設定の更新をお勧めします」という内容のメッセージが表示されています。
ページ中ほどの「Edit security groups」をクリックします。
 

2−5.Security group の編集

以下のようなページが表示されます。

f:id:IntelligentTechnology:20140515143208p:plain:w560

まず「Type」が「SSH」の項目の「Source」を「My IP」に変更します。これにより、現在の接続元のIPアドレスのみに、SSH接続を許可することができます。(自身のグローバルIPが動的に設定されている場合、この設定では対応しきれないところがありますが、今回はとりあえずこのままで。)

また、「Type」が「Custom TCP Rule」の項目を新規追加して、「Port Range」を「3000」に、「Source」を「My IP」に設定します。
これは、Ruby on Rails のデフォルトポートである 3000番ポートへの TCP 接続を許可するための設定です。(が、あまり格好の良いものではないので、今後、見直しが必要でしょう。)

ここまで設定できたところで、ページ下側の「Review and Launch」をクリックします。
 

3.EC2 インスタンスの起動と終了

3−1.インスタンスの起動

表示された「Review」ページ下側の「Launch」ボタンをクリックします。

以下のようなメッセージが表示されます。

f:id:IntelligentTechnology:20140515145041p:plain:w440

SSH接続のための Private key の生成が必要、とのことです。上側のドロップダウンリストから「Create a new key pair」を選択し、下側のテキスト入力欄に、任意の Private key の名称(仮に「myprivatekey」とします)を入力して、「Download Key Pair」をクリックします。

f:id:IntelligentTechnology:20140515145621p:plain:w440

ダウンロードした Private key ファイル(myprivatekey.pem ファイル)は、任意の安全なフォルダに保存しておきます。

その後、「Launch Instances」をクリックすると、以下のようなページが表示されます。

f:id:IntelligentTechnology:20140515160254p:plain:w520

さらにページ右下の「View Instances」をクリックすると、以下のような「EC2 Dashboard」ページに切り替わります。

f:id:IntelligentTechnology:20140515160733p:plain:w560

対象のインスタンスの「Instance State」が「running」に切り替わりましたら、インスタンスの起動完了です。
 

3−2.インスタンスへの接続

先ほどダウンロードした Private key ファイルのアクセス権を変更して、セキュリティを強化しておきます。
今回は、Mac のコンソールから操作します。

$ chmod 400 myprivatekey.pem

 
先ほどの「EC2 Dashboard」ページから、対象インスタンスの「Public IP」の値を確認しておきます。
その後、Mac のコンソールから、以下のコマンドを入力します。

$ ssh -i myprivatekey.pem ec2-user@{Public IP の値}

以下のように表示されると、EC2 インスタンスへの接続成功です。

Last login: Wed May 14 06:36:31 2014 from ***.***.***

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2014.03-release-notes/
5 package(s) needed for security, out of 11 available
Run "sudo yum update" to apply all updates.

 

3−3.インスタンスの停止

起動したインスタンスの停止は、「EC2 Dashboard」ページから、「Actions」→「Stop」をクリックして行います。

f:id:IntelligentTechnology:20140515163852p:plain:w560

対象のインスタンスの「Instance State」が「stopped」に切り替わりましたら、インスタンスの停止完了です。

f:id:IntelligentTechnology:20140515164138p:plain:w560

再度起動するときには、同じく「EC2 Dashboard」ページから、「Actions」→「Start」をクリックします。

無料活用ポイント!その3

使わないときは、インスタンスを停止しておく。(無料期間中は、起動しっぱなしでも、実質、料金は発生しないようですけれども。)

 

4.(参考)Elastic IP の設定

ここまで無事に EC2 インスタンスの起動と接続にまでこぎつけました。
しかし、いったん停止していたインスタンスを再度起動して、同じようにSSH 接続しようとすると・・・、なんと接続できません!

実は、EC2 インスタンスの「Public IP」「Public DNS」は、インスタンスを停止・起動すると、そのたびに異なる値が割り振られてしまうのです!

これを回避するために、EC2 インスタンスに「Elastic IP」を設定して、固定の「Public IP」「Public DNS」を割り当てる、という方法があります。

f:id:IntelligentTechnology:20140516100043p:plain:w560

しかしここで注意が必要です。AWS EC2 の料金表によりますと、

$0.00 : 実行中のインスタンスと関連付けられている Elastic IP アドレス 1 つ
$0.005: 実行中のインスタンスと関連付けられている追加の Elastic IP アドレスあたり/1 時間(比例計算)
$0.005: 実行中のインスタンスと関連付けられていない Elastic IP アドレスあたり/1 時間(比例計算)
$0.00 : Elastic IP アドレスのリマップ 1 回あたり(1 か月間で 100 リマップまで)
$0.10 : Elastic IP アドレスのリマップ 1 回あたり(1 か月間で 100 リマップを超える追加分)

なんと「Elastic IP」を使うと、少しずつではありますが、課金されるケースが出てくるのです。
(例えば停止中のインスタンスに「Elastic IP」を関連づけたままであったり、「Elastic IP」をどのインスタンスにも関連づけないで、そのままにしていたり。)

とにかく1円も払わずに運用したい、ということであれば、「Elastic IP」の使用は、とりあえず我慢するしかありません。

無料活用ポイント!その4

「Elastic IP」は設定しない。

 

5.(参考)コマンドラインからも操作できます

ここまで実施してきたような操作を、コマンドラインから実行することもできます。
コマンドラインから、AWS の各種サービスを操作するには、「AWS コマンドラインインターフェイス(AWS CLI)」を使います。

例えば、EC2 インスタンスの停止を 「AWS CLI」から実行するには、以下のようにします。

$ aws ec2 stop-instances --instance-ids i-********

AWS CLI」については、またあらためて詳しく紹介できるとよいなと考えています。
 

6.無料期間終了後は?

1年間の無料期間が終了すると、その後はそのまま、使った分だけ課金されるようになるみたいです。
有料では使わない、という場合は、無料期間終了前に、AWS のアカウント自体を削除する必要があります。

AWS 無料利用枠に関してよくある質問

無料利用枠の有効期限が切れた場合、またはアプリケーション使用が無料利用枠を超えた場合は、標準の料金、つまり従量課金制でお支払いください

無料活用ポイント!その5

無料利用枠の有効期限を気にしておく。

 

7.Ruby on Rails の環境構築へ

ここまでの操作で、無事に EC2 インスタンスの起動まで実施することができました。
このあとは、この環境に、Ruby on Rails の実行環境を構築して、サンプルアプリを動かしてみたいと思います。

続きは「無料で活用!AWS ー EC2 + Ruby on Rails 4.1(その2) ー」にて。