0から始めるAWS入門②：EC2編


# 前回まで
[0から始めるAWS入門：概要](http://qiita.com/hiroshik1985/items/6433d5de97ac55fedfde)
[0から始めるAWS入門①：VPC編](http://qiita.com/hiroshik1985/items/9de2dd02c9c2f6911f3b)


# 概要
前回作成したVPC内にELB、EC2を作成・配置していく。
ELBがインターネットとの玄関。EC2がELB経由のリクエストをさばいていくアプリケーション・サーバーとなる。

# EC2インスタンスの作成
コンソール上の[Compute]カテゴリの[EC2]を選択、[EC2 Dashboard]へ遷移後、画面中央の[Launch Instance]ボタンからEC2インスタンスの作成を行っていく。

基本的に全設定行っていくので、ステップ途中で起動ボタンがアクティブになるが、Nextを選択し設定していく。

![2-1_lauch_instance.png](https://qiita-image-store.s3.amazonaws.com/0/34930/a14d932f-29b4-d8fe-a117-f75602f2f39c.png)

## OSの選択
まずは、EC2インスタンスのOSを選択する。今回はAmazon Linuxを選択する。
今回は割愛するが、この他にも、AMIという自分で作成したイメージや各用途向けに最適化されたマーケット（有料）・コミュニティで提供されているイメージも選択可能。

Amazon Linuxは、Red Hat Enterprise互換のAmazonが開発しているディストリビューション。

![2-2_choose_os.png](https://qiita-image-store.s3.amazonaws.com/0/34930/e4767f30-7042-6786-6bbc-958216d05df6.png)

## インスタンスタイプの選択
ここで、用途に合わせてインスタンスタイプを選択する。今回は学習目的なので、無料枠対象の「t2.micro」インスタンスを選択する。

[各インスタンスタイプの詳細はこちら](http://aws.amazon.com/jp/ec2/instance-types/)

![2-2_choose_type.png](https://qiita-image-store.s3.amazonaws.com/0/34930/f6e56e95-0412-f1b9-d81c-a12ec0e2f2cb.png)

## インスタンスの設定
各種インスタンスの設定をしていく。各項目の内容は下記の通り。

|項目|内容|値|
|:----|:----|:----|
|Number of Instance|今回作成するインスタンス数|1|
|Purchasing option|スポットという料金体系がオークション形式のインスタンスを使うか|オフ|
|Network|どのVPCを使うか|前回作成したVPCを選択する|
|Subnet|VPC内のどのSubnetを使うか|前回作成したAZ-AのSubnetを選択する|
|Auto-assign Public IP|グローバルIPを用いるか|enable|
|IAM role|IAMというAWSのアカウント管理を用いている場合、特定のアカウントにのみこのインスタンスを操作を許したければ設定する|None|
|Shutdown behavior|OSレベルでのシャットダウンをかけた場合の振る舞い。インスタンスを一時停止（stop）するか、そのまま復旧不可能な完全停止(termiante)するか。|stop|
|Enable termination protection|アクシデントで完全停止するのを抑制するか。オンにした場合、このオプションをいじらない限り完全停止できない。|オフ|
|Monitoring|CloudWatchというAWSの監視サービスを使うか。|オフ|
|Tenancy|ハードウェアを専有するか。専有する場合、料金アップ|Shared tenancy|

![2-4_configure.png](https://qiita-image-store.s3.amazonaws.com/0/34930/8831bf77-e39e-9659-4837-bfc58472c479.png)

[Network interfaces]はそのままいじらず、eth0へ割り当てられるPrimary IPは[Auto assign]

## ストレージの追加
このインスタンスのストレージを設定する。

|項目|値|
|:----|:----|
|Size|10|
|Volume Type|General Purpose(SSD)|

### Volume Typeについて
以下の３つが選択可能。実際は用途に合わせて設定する。

|タイプ|用途|
|:---|:---|
|General Purpose (SSD) |ほとんどの場合これを選んどけば問題ないスタンダードなタイプ。|
|Provisioned IOPS (SSD) |一定以上のIOPSを保証する必要があるクリティカルな大規模DB向け等。が、当然割高。|
|Magnetic |IOPSは低いが安い。I/Oがあまりない用途|

![2-5_add_storage.png](https://qiita-image-store.s3.amazonaws.com/0/34930/59181211-6200-7271-a897-9a8a514e1a54.png)

## タグ
[Name]タグに任意のタグ名を設定する。分かりやすければいいが、個人的には、VPC[test]と用途[web]、AZ[AZ-a]を設定して、後から見た時にどこに配置されている何用途のサーバーなのか判別するようにしている。![2-6_tag.png](https://qiita-image-store.s3.amazonaws.com/0/34930/b393e43b-8145-81c6-b676-9795690446cc.png)

## セキュリティーグループ
セキュリティグループの設定。所謂、ファイアウォールを設定する。コンソール上でこういった設定ができるのもAWSのいいとこ。また一度作れば、同様のポリシーを他のEC2インスタンスに使いまわすことも可能。


[Create a new security group]を選択する。
[Security group name]には任意の値を設定するが、上記の通り同じVPCのwebインスタンスにはこのセキュリティーグループを設定できるため、例として汎用的に[test-web]とする。
[Description]も同様に任意の値を設定する。

実際のポリシー設定として、今回は、最低限必要なインバウンドポートのみ許可する。

|ポート|許可IP|
|:---|:---|
|SSH(22)|MyIP(選択すれば現在アクセスしているグローバルIPが自動で設定される)|
|HTTP(80)|CustomIP 10.0.0.0/16|

HTTPは、次回行うELBの設定で、インターネットからのアクセスはすべてELB経由となるためVPC内のアクセスのみ許可すれば良い。
もしくは、動作確認等で直接つないで確認を行いたい場合は、合わせてHTTPとHTTPSにMyIPを指定すれば良い。

![2-7_security_group.png](https://qiita-image-store.s3.amazonaws.com/0/34930/35145183-38d5-d3dd-5ace-ebeb54858d69.png)


## 設定確認
上記設定後、[Review and Launch]ボタンで設定を確認できる。

## 起動！...の前に公開鍵・秘密鍵の設定
設定確認で問題がなければ、続いて、[Launch]ボタンをクリック。
そうすると初期設定するSSHの公開鍵の設定モーダルが開く。
今回は、初回なので[Create a new key pair]を選択後、[Key pair name]に任意の名前を設定する。
その後、[Download key pair]ボタンをクリックすると、pem拡張子の秘密鍵がダウンロードされる。
これが最初にインスタンスにSSH接続するのに必要となる秘密鍵なので、絶対紛失してはならない。

![2-8_keypair.png](https://qiita-image-store.s3.amazonaws.com/0/34930/0bee4d96-456c-451a-b332-d7b0dce7edd1.png)


## 起動!
[Lauch Instance]ボタンをクリックして終わり

## SSHアクセス

早速立ち上げたEC2インスタンスにアクセスする。
ここでは、クライアントとしてMacでの操作を記述していくが、Windowsの方は、TeraTerm等で同様に公開鍵認証で行っていけばok。

### IPの確認

[Instances]のリストの中から、今起動したEC2インスタンスを選択すると、下側に[Description]が表示される。その中の項目のPublic IP/Elastic IPがグローバルIPとなる。（画像赤塗りつぶし部分）


![2-9_IP.png](https://qiita-image-store.s3.amazonaws.com/0/34930/82ebc9cf-b979-658d-0c42-1b80f6f9d2de.png "2-9_IP.png")

### アクセス
デフォルトユーザーはec2-user、鍵は先ほどダウンロードしたpem拡張子の秘密鍵、パス無し。

```Bash
ssh ec2-user@{確認したPublic IP} -i {秘密鍵保存ディレクトリ}/test.pem

```

#### アクセス出来ない場合
[インスタンスへの接続に関するトラブルシューティング](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html)を試してみて下さい。

### とりあえずnginxインストール・起動

次章のELB編でヘルスチェックにHTTPを使うため、とりあえずnginxをインストールしてルートパスで200HTTP Statusが返るようにしておく。

```Bash
sudo yum install -y nginx
sudo /etc/init.d/nginx start
sudo chkconfig nginx on
```

セキュリティグループの設定で、HTTPにMyIPを指定しているのであればブラウザで直接Public IPを入力すれば、nginxのデフォルト画面が表示されているはず。

# 次回
[0から始めるAWS入門③：ELB編](http://qiita.com/hiroshik1985/items/ffda3f2bdb71599783a3)