【初心者向け】AWS+Hubot+Slackで自動返信するBOTの作り方(前半)

この前AWSの勉強会に行ってきました。
そのメモを兼ねてAWS+Hubot+Slackを使ってBOTを作る方法を投稿します:)

AWSは登録から一ヶ月くらいは無料でサーバーを作れるので嬉しいです:)

思ったより長くなってしまったので前半/後半に分けますX(

後半はこちら
http://qiita.com/ShirakawaYoshimaru/items/2823a00ceb0bc1b3ef9f

###構成はこんな感じ
- (前半)1.EC2サーバー作成のための下準備
- (前半)2.EC2サーバーを立てる
- (後半)3.SlackのBOT設定
- (後半)4.EC2サーバーに入ってHubotを作る
- (後半)5.Tips


***

間違いやアドバイス等があったら気軽にコメントください><
では始めて行きます :)


##1.EC2サーバー作成のための下準備
EC2サーバーを立てるには、
VPC作成 -> 土地を耕して使えるようにする
IGW(インターネットゲートウェイ)作成 -> 土地全体に電柱/ネット回線を引く
サーブネット作成 -> 番地を決めて郵便物が届くようにする
ルートテーブル作成 -> サーブネット(番地)とIGW(ネット回線)をつなげるやつを作る
EC2作成 -> 建物(サーバー)を立てる
セキュリティグループ作成 -> ファイアウォール的なやつを作る
ことが必要になります。
流れ的には、
土地を作って(土地がないと何もできない)
IGWを作って(電柱がないと生きていけない)
サーブネットを作って
ルートテーブルを作って
EC2+セキュリティ作る
って感じです。
若干面倒ではあるのですが、なれるとすぐ作れるようになるので頑張っていきましょう:)



AWSのアカウント(クレジットカード登録済み)を作成している前提で進めていきます。
AWSのアカウント作成は、クレジットカードと電話があればぽちぽちするだけで無料で作成できます。まだ作っていない人はこれを機に作成しましょう :)

アカウントを作成したら**AWSマネジメントコンソール**にログインしましょう。
こんな画面が表示されればokです。
ちなみに、AWSの管理画面は横長なので大きい画面のPCで作業するようにしましょう。
![AWS マネジメントコンソール 2016-04-12 22-25-38.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/d99bd519-a625-aadd-06ca-d448ed803925.jpeg)

###1-1.VPC作成
VPCは土地です。地面がなければ建物(サーバー)も作れません。
なので最初は土地を定義します。

それでは、VPC管理画面に入りましょう。AWSはいろんなサービスがあるのでわかりにくいですが、「VPC」を探してください。
![AWS マネジメントコンソール 2016-04-12 22-44-08.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/a97e5834-e06e-00fb-7a00-824001edccb8.jpeg)

VPC画面に行くとこんな感じになると思います。
僕は前にEC2サーバーを立てているのでVPCやサブネット等の数が増えていますが気にしないでください。
<img width="914" alt="スクリーンショット 2016-04-12 22.51.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/67575/8e5aa7c7-30c1-8be2-3dc8-ea8ec0035cfd.png">

さてそれじゃあVPCを作成していきます。
ちょっとわかりにくいのですが、サイドメニューのVPCを選択し、
![VPC Management Console 2016-04-12 22-53-35.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/e76b949d-3a8e-31c0-cc51-ca70805a8534.jpeg)

こうなると思うので、VPCを実際に作成していきます。
![VPC Management Console 2016-04-12 22-55-18.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/e8693a67-367a-0936-556f-e4713249a751.jpeg)

ネームタグは単なるVPCの名前ですね。わかりやすいやつをつけましょう。
CIDRブロックは使用できるIPアドレスを定義していると思うのですが、僕もよくわからず・・・。どなたかコメントにて教えて下さいorz
作成ボタンを押せばVPCが作成されます。
<img width="748" alt="スクリーンショット 2016-04-12 22.56.46.png" src="https://qiita-image-store.s3.amazonaws.com/0/67575/30d1d412-b43f-ab9d-2f24-f2c7bd4d7c6f.png">


###1-2.IGW(インターネットゲートウェイ)作成
IGWは電柱だと思ってください。全てのインフラはここから始まります。
電柱がなければ家に電気は来ません。全ての要なのです。

まずはIGWを作ります。
![VPC Management Console 2016-04-12 23-09-57.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/2c0d2f85-9d77-33a2-169e-4a99469d7001.jpeg)

続いてIGW(電柱)を土地全体に張り巡らせていきます。(VPCに接続させる)
![VPC Management Console 2016-04-12 23-10-57.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/2103505e-f130-13c3-5aa6-8bd157a58616.jpeg)

接続させるVPCを間違えないようにしましょう
![VPC Management Console 2016-04-12 23-11-58.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/4cfdb1d2-6169-ec2d-bba7-15fc5cf516ce.jpeg)

IGWをVPCにアタッチできればOKです :)

###1-3.サーブネット作成 & ルートテーブル作成
土地ができて、電気とネット回線が用意されました。
次は番地を決めましょう :)
番地(サーブネット)がないと郵便物も届かないし、家に電気もネットも届きません。

サーブネットを作成します。
アベイラビリティーゾーンは日本に2箇所(aとc)あるらしい。どっちでも良い場合は「指定なし」を選択。
リージョンとアベイラビリティーゾーンがよくわからないけど、

```リージョンとアベイラビリティーゾーンについて
「リージョン」と「ゾーン」の関係性は、リージョンは完全に独立していて地理的に離れた領域。
ゾーンは、同じリージョン内において独立したロケーションとなります。
同一リージョン内のゾーン間は、低レイテンシのネットワークで相互接続しています。
```
とのこと。http://www.idcf.jp/words/zone.html

こんな感じで作成。CIDRブロック・・・ぇ・・・X(
![VPC Management Console 2016-04-12 23-07-51.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/d5a915df-072a-bae0-7ef8-3c72790c0cfd.jpeg)

次にルートテーブルを作成/設定します。
ルートテーブルはサーブネットを使って「電気やネット回線」を「区画」につなげる処理をしてくれます。たぶんルートテーブルはサーブネット作成時に自動的に作成されているのですが、明示的にサーブネットとルートテーブルをつなげる必要があります。(たぶん)

それではやっていきましょう。
**先ほど作成したサーブネットを選択し**自動的に作成された(たぶん)ルートテーブルへのリンクをクリックします。
![VPC Management Console 2016-04-12 23-34-39.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/ccdd7f47-9cde-e2be-ece9-85d19af6f603.jpeg)

別タブが開き、対応するルートテーブルの画面に遷移します。
![VPC Management Console 2016-04-12 23-39-34.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/5e7e47f9-3c4e-30c6-f883-18528850bd7a.jpeg)

編集を選択します。
![VPC Management Console 2016-04-12 23-44-42.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/d3b1c263-668b-42ab-0829-3ba5a9d83f55.jpeg)

(どこからでもアクセスできるように？)設定します。
![VPC Management Console 2016-04-12 23-45-49.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/3749f1d4-843a-200d-3729-28ef74662894.jpeg)

サブネットの関連付けを行います。「サブネットの関連付け」タブを開いて、編集を選択。
![VPC Management Console 2016-04-12 23-47-43.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/c0a77c6e-5b5b-c7ba-a441-f2da22f89e28.jpeg)

対応付けするサブネットにチェックを入れて保存します。
![VPC Management Console 2016-04-12 23-48-40.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/e56b0ab2-0d22-0b07-622b-f42ded9883e6.jpeg)

これでEC2作成のための下準備は完成です :)
ひとまずお疲れさまでした!

***
これからEC2サーバーを実際に作成していきます。
ここでうっかりミスとかすると悲しいことになるので注意していきましょう:)

##2.EC2サーバーを立てる

まずは、EC2管理画面に行きます。ヘッダーメニューの「サービス」からAWSのサービス一覧を見てみましょう。
![VPC Management Console 2016-04-12 23-54-15.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/5dae4aa6-25cb-7f08-4bb4-843bc0b60176.jpeg)

一覧が表示されたらEC2を選択しましょう。
![VPC Management Console 2016-04-12 23-55-37.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/745d7a2e-d5c4-47f8-42c7-0ae7b908cdee.jpeg)

EC2は同時に複数使用することができます。
1つ1つは「インスタンス」という名前で管理されています。
EC2を作成するので「インスタンスの作成」をクリックしましょう。
![EC2 Management Console 2016-04-12 23-57-12.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/265f1a2f-5b04-4efe-950a-f1a2a2f370e3.jpeg)

ここからEC2の詳細設定になります。OSは何か、ポートはどこまで開放するか等を設定していきます。
まずはOSを選択します。今回は無料枠で作成するのでAmazon Linuxを選択します。
![EC2 Management Console 2016-04-13 00-00-50.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/6eb02079-c601-cae6-a31f-c6b3806545fb.jpeg)

続いて、メモリやCPUを選択します。無料で選択できるのはt2.microだけですが、BOT作るくらいでしたら十分な性能があります。まだ設定することがあるので「次の手順」を選択します。
![EC2 Management Console 2016-04-13 00-02-48.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/d5ffb68c-ecd3-8151-1a67-9c933ad6e771.jpeg)

続いて、EC2をVPCやサブネット等とひも付けます。
プライマリID・・・？
![EC2 Management Console 2016-04-13 00-06-05.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/8519a079-b16f-0c63-1023-90797a13141e.jpeg)

続いて、ストレージを設定(今回はストレージは気にしていないので特に変更せず)
![EC2 Management Console 2016-04-13 00-08-00.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/60812361-4312-0a2b-d7ea-451efea1cdd4.jpeg)

続いて、セキュリティグループを設定(特に変更せず)
<img width="1253" alt="スクリーンショット 2016-04-13 0.08.47.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/67575/e839e312-7be4-587e-fcae-0d5cfaf3868a.jpeg">

続いて、今まで設定した内容を確認したあと、**sshログインするためのkeyをダウンロードした**後に「インスタンスの作成」をクリック。
ここでダウンロードしたpemファイルは後で使用するので無くさないようにしましょう。
![EC2 Management Console 2016-04-13 00-09-30.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/2c512aa2-35c8-2fe7-1107-249286dcd4db.jpeg)

作成したインスタンス一覧が表示され、初期化(3分くらい)が開始される。
![EC2 Management Console 2016-04-13 00-10-37.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/39b3714d-bf3b-b5d0-6dc2-d28eccb0cba8.jpeg)

初期化が正常に終わるとこんな感じ
![EC2 Management Console 2016-04-13 00-17-08.jpg](https://qiita-image-store.s3.amazonaws.com/0/67575/afd4ad0e-8481-924d-6198-4de222722917.jpeg)

これでEC2サーバーを作成することができました!
長い・・・長いよ・・・orz

***
あとは
- SlackのBOT設定をやって
- 作成したEC2サーバーに入って、Hubotをインストール&BOT作成
すればokです :)
後半も頑張っていきましょう :)

後半はこちら
http://qiita.com/ShirakawaYoshimaru/items/2823a00ceb0bc1b3ef9f