Rails
AWS
EC2
vpc

AWS VPCによるネットワーク構築とEC2によるサーバー構築

More than 3 years have passed since last update.

はじめに

AWSでネットワークとサーバー構築を行います。VPCとEC2を使って作業を行います。
本記事を書く動機としては、RailsアプリケーションをAWSで公開することです。
ただし、この記事ではサーバー構築までなのでRailsアプリケーションに関わらず参考になると思います。
Railsアプリケーションを実際に公開されたい方はこの記事の後に以下の記事にお進み下さい。
RailsアプリケーションのAWSによる公開|unicorn + nginx

また、この記事は最低限度の設定ですので予めご了承下さい。
至らない点はアドバイス等頂けますと幸いです。

まずはこちらからAWS マネジメントコンソールへ。(アカウントを持っていない方はまずアカウントを作成する必要があります。)
AWS - Amazon Web Services

VPC領域を作成する

1.AWSマネジメントコンソールで「VPC」を開く

ブラウザの左上の「箱型アイコン」をクリックすると以下のホーム画面に移動出来ます。
「VPC」を選択する。

スクリーンショット_2015-09-21_12_21_18.png

2.リージョンの設定をする

下記のようにリージョンを「アジア・パシフィック(東京)」に変える。

スクリーンショット_2015-09-21_12_24_09.png

3.VPC領域の作成
以下の左のメニューから「VPC」を選択する

スクリーンショット_2015-09-21_12_24_09.png

次に、「VPCの作成」をクリックしてモーダルの中に設定を記述。
ここではネームタグにアプリケーション名の「TechRuche」、CIDRブロックに「10.0.0.0/16」を記述。てナンシーは「デフォルト」のままで。

スクリーンショット_2015-09-21_12_35_24.png

VPCをサブネットに分割する

上記で「10.0.0.0/16」というCIDRブロックを持ったVPC領域を作成してプライベートなネットワーク空間を用意しました。このネットワーク空間は作成ユーザーが自由に使うことが出来ますが、実際には割り当てられたCIDRを分割して利用します。この分割したCIDRブロックのことを「サブネット」といいます。
分割する目的は

①物理的な隔離
-障害が起きた時に他のサブネットに影響が起きにくくなる。
②セキュリティ上の理由
-ネットワーク設定を別々に出来る。

があります。

実際に作成する

以下の画像を参考にしながら、、

まず、左のメニューから「サブネット」を選択し、「サブネットを作成」をクリックすることでモーダルを出します。

モーダルではネームタグに「PublicTechRuche」(ここはご自由に)、VPCは先ほど作成したものを選択(名前をつけてあるのでわかるはず)、アベイラビリティーゾーンはそのままで、CIDRブロックは「10.0.1.0/24」と記述。

そして、「作成」を押す。

スクリーンショット_2015-09-21_14_19_44.png

パブリックサブネットをネットワークに接続する

インターネットゲートウェイの作成

VPCのサブネットをインターネットに接続するためには「インターネットゲートウェイ(Internet Gateway)」を利用します。

左のメニューから「インターネットゲートウェイ」を選択し、「インターネットゲートウェイを作成」をクリックすると、作成もモーダルが出現します。

ネームタグに「GatewayTechRuche」(ここはご自由に)を記述して、「作成」をクリック。

スクリーンショット_2015-09-21_14_37_42.png

VPC領域に結びつける

次に、今作成したインターネットゲートウェイをVPC領域と結びつけます。
以下の画像のように、
①作成したインターネットゲートウェイにチェックを入れる
②「VPCにアタッチ」をクリック
③最初に作成したVPCを選択して、「アタッチ」をクリック

スクリーンショット_2015-09-21_14_44_15.png

ルートテーブルを設定する

デフォルトのルートテーブルを確認する

サブネットやインターネットゲートウェイの間にルーターの役割を果たすソフトウェアが動いていてその設定になります。
VPC領域を作成した際にデフォルトでルートテーブルが作成されるのでまずはそちらを確認しましょう。

まず、左のメニューから「ルートテーブル」を選択する。その後、先ほど作成したVPCに該当する項目にチェックを入れる。

そして、画面下部のタブから「ルート」を選択する。
そうして、「送信先」、「ターゲット」を確認します。
デフォルトでは「送信先:10.0.0.0/16」、「ターゲット:local」となっています。
これではインターネットに接続出来ないので、インターネットと接続するための別のルートテーブルを準備します。

スクリーンショット_2015-09-21_17_41_22.png

新しくルートテーブルを作成する

それでは、新しくルートテーブルを作成していきたいと思います。
まず、「ルートテーブルの作成」をクリック。ネームタグを「TechRucheRootTable」(ここはお好きに)、VPCを先ほど作成したものを選択。これで「作成」ボタンをクリック。

スクリーンショット_2015-09-21_17_51_40.png

作成したら、作成したルートテーブルの項目にチェックを入れます。その後、画面下部の「ルート」タブをクリックします。編集ボタンがあるのでそちらをクリックします。

スクリーンショット_2015-09-21_17_52_24.png

すると、「別のルートの追加」という項目が出てくるのでそちらをクリックします。

スクリーンショット_2015-09-21_17_52_52.png

新しいルートが追加出来るので、「送信先:0.0.0.0/0」にして、ターゲットはターゲットの項目をクリックすると予測で該当項目が出てくるのでそちらを選択します。それで「保存」ボタンをクリックします。

スクリーンショット_2015-09-21_17_53_13.png

すると、以下のようにルートが追加されたことが分かります。

スクリーンショット_2015-09-21_17_53_49.png

サブネットの関連付け

次に、「サブネットの関連付け」をします。以下のタブをクリックします。

スクリーンショット_2015-09-21_19_27_08.png

サブネットの関連付けのチェックを行い、「保存」をクリックします。

スクリーンショット_2015-09-21_19_27_32.png

すると、以下のようにサブネットの関連付けが出来たことが分かります。

スクリーンショット_2015-09-21_19_27_51.png

これで、VPC領域の作成は終わります。次からEC2でサーバーを構築します。

EC2でインスタンスを生成する

EC2にアクセスする

左上のボックスアイコンをクリックしてホーム画面に移動し、「EC2」にアクセスします。

スクリーンショット_2015-09-21_18_16_34.png

インスタンスを作成し始める

左のメニューから「インスタンス」をクリックして、その後「インスタンスの作成」をクリックする。

スクリーンショット_2015-09-21_18_17_15.png

AMIの選択

AMI(Amazon Machine Image)を選択します。AMIはOSがインストールされて初期アカウントの設定まで済んだものです。ここでは「Amazon Linax AMI」を使用します。

スクリーンショット_2015-09-21_18_18_03.png

インスタンスタイプの選択

インスタンスタイプとは、仮想マシンのスペックのことです。ここでは無料利用対象を選びます。

スクリーンショット_2015-09-21_18_18_26.png

インスタンスの詳細設定

①「ネットワーク」に先ほど作成したvpcを選択する。
②「サブネット」も先ほど作成したものを選択する。(ネットワークを選択すると勝手に選択してくれますので、確認をする)
③「自動割当パブリックIP」を「有効化」する。
④「ネットワークインターフェース」の「プライマリIP」を「10.0.1.10」とする。

スクリーンショット_2015-09-21_18_20_11.png

ストレージの追加

特に変更する部分はないので、そのまま次の手順に進みましょう。

スクリーンショット_2015-09-21_18_21_18.png

インスタンスのタグ付け

値を「TechRucheWebServer」(お好きな値でOK)に変更する。

スクリーンショット_2015-09-21_18_22_35.png

セキュリティグループの設定

セキュリティグループ名を「Web-TECHRUCHE」(お好きな名前)に変更。
その後、下記画像のように「HTTP」タイプを追加。

スクリーンショット_2015-09-21_18_25_12.png

インスタンス作成の確認

確認画面なので、確認出来たら「作成」ボタンをクリック。

スクリーンショット_2015-09-21_18_25_40.png

キーペアの作成

①「新しいキーペアの作成」を選択し、「キーペア名」に「tech-ruche」(お好きな名前)を記入。その後。「キーペアのダウンロード」をクリック。
②ダウンロード完了後、「インスタンスの作成」ボタンをクリック。

スクリーンショット_2015-09-21_18_26_06.png

作成ステータス画面

これで、インスタンスの作業はひとまず完了です。「インスタンスの表示」をクリックします。

スクリーンショット_2015-09-21_18_26_35.png

インスタンスの作成待ち

インスタンスの「状態」、「ステータス」が以下の画像のようになるまで待ちます。1~2分待てば出来ました。

スクリーンショット_2015-09-21_20_40_55.png

ec2-userでサーバーにアクセスする

ここまで出来れば実際に接続が出来ます。~/Downloads/tech-ruche.pemのようなファイルがダウンロードされます。これを使用してサーバーにアクセスします。(ファイル名は作成時の名前によって異なるので適宜変更)

local
[~]$ mv Downloads/tech-ruche.pem .ssh
[~]$ cd .ssh
[.ssh]$ chmod 600 tech-ruche.pem
[.ssh]$ ssh -i tech-ruche.pem ec2-user@52.69.149.223
The authenticity of host '52.69.149.223 (52.69.149.223)' can't be established.
RSA key fingerprint is 43:bd:7f:34:55:88:ec:45:6e:5b:34:d6:63:63:63:65.
Are you sure you want to continue connecting (yes/no)? yes #ここでyesとする
Warning: Permanently added '52.69.149.223' (RSA) to the list of known hosts.

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

https://aws.amazon.com/amazon-linux-ami/2015.03-release-notes/

これで完了です!

Railsアプリケーションを公開されたい方は引き続き下記記事にお進み下さい。
RailsアプリケーションのAWSによる公開|unicorn + nginx

参考

書籍
Amazon Web Services 基礎からのネットワーク&サーバー構築

本記事は手順にフォーカスして説明したため、詳しい説明は出来ていない箇所があります。上記、書籍は詳しく説明もありますので、興味がある方はこちらを読まれますとさらに理解が深まると思います。

動画
AWS講座 - VPC/EC2インスタンスの作成から接続まで