[Cloud102]#0 環境準備

#0.AGENDA
0.前置き
1.AWSアカウント作成
2.MFA設定
3.VM作成
4.SSH接続
5.その他(練習問題)
6.補足


#0.前置き
本来今回はFY16上期の"Cloud101"の最終回のはずでしたが、FY16下期に"Cloud102"として続編を行うことになったので、そのための準備編に変更しています。
"Cloud102"は「IaaSはかじったことあるけどプログラミング未経験なんでPaaSとかわかんないよぉ〜」という人向けの最低限のプログラミング入門コース予定です。
ただし、今時のプログラミングは僕も知りませんので「コピぺで動けばPaaSも怖くない！」というレベルを目標としています :smile: 

で、問題は勉強用の各自環境です。まずはPythonに挑戦するつもりですが、Mac使っている人は良いとしても、個人のWindows NotePCにPython入れてもらうのも怖いなぁ〜って感じますし、そもそもNotePC持ってない人も想定しなくちゃいけないので、会社支給のシンクラ端末でもなんとかなる環境にします。

AWSの１年無償枠でAmazon Linux動かして、そこを各自環境とします。

#1.AWSアカウント作成

各自以下の「今すぐ新規登録」からAWSアカウント作成(クレジットカード要）して下さい。
https://aws.amazon.com/jp/

このマネコン画面まで行ければOK
**【重要】右上のデフォルトリージョンを「東京」に変更しておいて下さい。**

![001.png](http://qiita-image-store.s3.amazonaws.com/0/79389/1ec5822b-853e-472d-823f-eafaf0a49dd3.png)


#2.MFA設定

AWSルートアカウントとパスワード(登録時に使ったメアド・パスワード）は厳重に管理する必要があります。
AWSはAPI/CLI操作が非常に容易ですし簡単にAuto Scale環境も作れますので、ルートアカウントが漏れるとトンデモないことになります。
本来はルートアカウント以外の通常利用アカウントを作って操作すべきですが、本コンテンツでは、ルートアカウントにMFA設定のみ行います。別アカウント作成などのセキュリティ強化策は以下などを参照に各自で行って下さい。
http://dev.classmethod.jp/cloud/aws/after_get_aws_account/

(1)AWSのMFA関連資料
https://aws.amazon.com/jp/iam/details/mfa/
http://dev.classmethod.jp/cloud/aws/secured-aws-account-by-mfa/

(2)今回はiPhone用“Google Authenticator”を使用します
参考：http://qiita.com/akkisu/items/f9695d0c635d74d2d7ee

・先にiPhoneに"Google Authenticator"をAppStoreからインストールしておきます。
・ダッシュボードからIAM選択
![003-Edit.png](http://qiita-image-store.s3.amazonaws.com/0/79389/cde04b97-91cc-f00b-272f-ac5916e7c9cb.png)
・「ルートアカウントのMFAを有効化」を選択
![004.png](http://qiita-image-store.s3.amazonaws.com/0/79389/23b391f0-a1d0-9b50-86af-44f3defaef9c.png)
・「仮想MFAデバイス」を選択
・参考リンクを参照してMFAデバイス設定


・IAM画面でMFA有効化確認
![005.png](http://qiita-image-store.s3.amazonaws.com/0/79389/9652994f-880b-38cd-a562-273171985e01.png)

・設定が終わったらマネコンから一旦サインアウトし、再度サインインして動作確認します。

#3.VM作成
基本的なVM作成ですが、設定手順が少し複雑です。一旦VMを作成した後に各設定項目を見直して「何を設定したのか」を復習してみて下さい。

##(1)VPC作成
・VPCダッシュボード > VPCを選択します（デフォルトVPCが用意されています）。
![011.png](http://qiita-image-store.s3.amazonaws.com/0/79389/a8964acc-f6fe-6623-b353-c2bcafeb2f11.png)
![012.png](http://qiita-image-store.s3.amazonaws.com/0/79389/ce860d78-3a55-c437-5a0b-c2c0e8a93917.png)

・「VPCの作成」から "cloud102", "10.1.0.0/16"のVPCを作成します。
![014.png](http://qiita-image-store.s3.amazonaws.com/0/79389/199b9778-8f4a-f95b-f2f7-62597691aa4b.png)
![015.png](http://qiita-image-store.s3.amazonaws.com/0/79389/1c55f213-9485-7a3b-34ad-615b83dda959.png)

##(2)サブネット作成
・VPCダッシュボード > サブネットを選択します(デフォルトVPCのサブネット２ケが用意されています）。
![016.png](http://qiita-image-store.s3.amazonaws.com/0/79389/380fb4d3-ecc5-ed33-e975-754ff762ce25.png)
・「サブネットの作成」から、"VPC:cloud102"内に、 AZ-1aで　"cloud102-1a", "10.1.0.0/24"のサブネットを作成します。
![017.png](http://qiita-image-store.s3.amazonaws.com/0/79389/f4a8ea64-4abb-4117-3a8b-31508b21427f.png)
・出来上がり
![018.png](http://qiita-image-store.s3.amazonaws.com/0/79389/5dbc85d1-6d17-7318-155f-dc45bb5ddb38.png)

##(3)キーペアの作成
・EC2ダッシュボード > キーペアを選択します
![020.png](http://qiita-image-store.s3.amazonaws.com/0/79389/3b610e58-8da4-bcda-d5bb-9e5a65971d6a.png)

・「キーペアの作成」から、キーペア名 "cloud102"で作成します。
![021.png](http://qiita-image-store.s3.amazonaws.com/0/79389/60e29589-20f7-44a8-a909-35341321d738.png)

・秘密キーのダウンロード
![022-Edit.png](https://qiita-image-store.s3.amazonaws.com/0/79389/3b939b74-2c20-2914-d542-431eb682eca5.png)

・SSH接続時に使うので利用OSにあった作法で保存（以下はMacOSの例）
![023.png](http://qiita-image-store.s3.amazonaws.com/0/79389/a60bd3a2-ebe7-8130-d1e0-3c7998ca67a4.png)

##(4)VMインスタンスの作成
・EC2ダッシュボード > インスタンスを選択
![030.png](http://qiita-image-store.s3.amazonaws.com/0/79389/ef65c12e-1425-7e71-a908-2d01eb0c300b.png)
・ステップ１：使用するAMI (Amazon Machine Image)に一番上のAmazon Linuxを選択します。その後「確認と作成」ではなく「次の手順」を選択します。
![031.png](http://qiita-image-store.s3.amazonaws.com/0/79389/d6d934e2-529b-fe48-d331-9f123c949253.png)

・ステップ２：インスタンスタイプは無償枠のt2.microを選択します。
![032.png](http://qiita-image-store.s3.amazonaws.com/0/79389/89ff09de-7eea-2cbf-acc6-94dcff96c278.png)

・ステップ３：VMが接続するネットワーク(VPC), サブネットを選択します。
![033.png](http://qiita-image-store.s3.amazonaws.com/0/79389/713a76e8-35b1-d4ab-3f3f-ef834ffa3f15.png)

・ステップ４：ストレージ設定はデフォルトのままでOK
![034.png](http://qiita-image-store.s3.amazonaws.com/0/79389/5df14905-52a7-8b89-3b19-d5fefb663641.png)

・ステップ５: 管理用のタグを設定しておきます。
![035.png](http://qiita-image-store.s3.amazonaws.com/0/79389/8c886018-c225-a1ea-b31f-ebe31010574e.png)

・ステップ６：SSHアクセス用の新しいセキュリティグループを設定します。
ここで指定している「送信元：マイIP」は作業時環境のものです。SSHする環境が作業時と異なる場合(ex. iPad利用など）は、都度本セキュリティグループを更新する(オススメ)か、送信元を「任意」に設定（セキュリティ警告メッセージ出ます）してください。
![036.png](https://qiita-image-store.s3.amazonaws.com/0/79389/604a1c77-82bf-04d8-3866-2f88876a0f5c.png)

・ステップ７：確認画面で「作成」を選択し、作成したキーペアを選択します。
![037.png](http://qiita-image-store.s3.amazonaws.com/0/79389/ef7bd85d-1fea-2eaa-ab3d-5ed4939d4cda.png)
![038.png](http://qiita-image-store.s3.amazonaws.com/0/79389/614721f0-1462-353f-01af-a072539d21c0.png)

・作成完了：インスタンスの状態が"runnning"になればVM(Amazon Linux)起動完了です。
![039.png](http://qiita-image-store.s3.amazonaws.com/0/79389/0625f6cb-aed6-4fb2-bc55-3d0ef54ac864.png)

##(5)インターネットゲートウェイの作成
・VPCダッシュボード > インターネットゲートウェイを選択（デフォルトVPC用が用意されています）
![040.png](http://qiita-image-store.s3.amazonaws.com/0/79389/baebf0bb-951f-0f21-830a-2ddd7d7360ab.png)
・インターネットゲートウェイ "cloud102"作成
![041.png](http://qiita-image-store.s3.amazonaws.com/0/79389/cc185a28-84c8-fcf2-fc59-d8fd84c80fe2.png)
![042.png](http://qiita-image-store.s3.amazonaws.com/0/79389/487c8a93-e4a2-af8a-507d-18dc0a9f665d.png)
・VPC"cloud102"にアタッチ
![043.png](http://qiita-image-store.s3.amazonaws.com/0/79389/2e0707f8-170f-194c-0767-d0aa049017ea.png)
![044.png](https://qiita-image-store.s3.amazonaws.com/0/79389/9498aae7-7049-a8cd-2c88-9f8a36d76cdf.png)

##(6)ルートテーブルの設定

・VPCダッシュボード > ルートテーブルを選択（ルートテーブルはVPC作成時に自動で１ケ作成されています）
![045.png](https://qiita-image-store.s3.amazonaws.com/0/79389/c2741c24-c967-efb8-bb60-b8287adc7bdb.png)

・「ルート」→「編集」→「別ルートの追加」から、デフォルトルート(0.0.0.0/0)とインタネットゲートウェイの紐付け追加設定
![046.png](http://qiita-image-store.s3.amazonaws.com/0/79389/6bcd842d-182f-335b-0a55-e919a470efd0.png)

![047.png](https://qiita-image-store.s3.amazonaws.com/0/79389/6a85ba16-f313-d591-154c-5a7fd72dabd1.png)

##(7)EIPの割当て
・VPCダッシュボード > Elastic IPを選択
![052.png](http://qiita-image-store.s3.amazonaws.com/0/79389/2563e1e2-d003-f397-4f03-fd077b04a4ad.png)
・「新しいアドレスの割当」を選択
![053.png](http://qiita-image-store.s3.amazonaws.com/0/79389/02a9d5b2-689f-840e-1435-f61b31e1dff3.png)
・割当てたアドレスをインスタンスに関連付け
![054.png](http://qiita-image-store.s3.amazonaws.com/0/79389/fad27266-c68c-864c-5066-367a971763c1.png)
![055.png](http://qiita-image-store.s3.amazonaws.com/0/79389/3cd43515-3339-e6c9-410f-fbeee08fcf24.png)
・EIP確認
![056.png](http://qiita-image-store.s3.amazonaws.com/0/79389/b158b10f-d8f4-e0ae-e9d8-d4fcadd9d650.png)
・VM確認
![057.png](http://qiita-image-store.s3.amazonaws.com/0/79389/ff59e4a3-c36e-d277-d533-ee9bc5f150a0.png)

#4.SSH接続

上記インスタンス作成手順で指定したアクセスキーペアの公開キーがVMに埋め込まれているので、ダウンロードしてある秘密キーを使ってSSHアクセスが可能です。
なお、Amazon Linuxのユーザ名は "ec2-user"です。

##(1)Macでの接続例

コマンドイメージ```
$ssh -i ~/.ssh/cloud102.pem ec2-user@52.198.159.203
```

![058-edit.png](http://qiita-image-store.s3.amazonaws.com/0/79389/83446c5b-a7e4-5507-b4d3-b9f109d3f870.png)

Amazon LinuxはRedHat系のOSで、python2.7.10が入っていることがわかります。
ちなみに、AWS CLIコマンドの "aws"も入っています。
![059.png](http://qiita-image-store.s3.amazonaws.com/0/79389/c2618662-2ef5-a1d1-7cd6-dc72e06bb36f.png)

##(2)Windows PCでの接続例
個人用Windows PCを使用している場合は以下を参考にTeraTermなどでSSH可能です。
http://dev.classmethod.jp/cloud/aws/aws-beginner-ec2-ssh/

以前紹介したWindows用SSHコマンド(*)や、Windows10-1604でのBash on WindowsでもSSHアクセスできます。

(*) Cloud101 #3: http://qiita.com/nagahisa/items/d20c267cbd0d7dea7676

##(3)ブラウザからの接続例
使用中のWindows PCに管理者権限がない場合、ブラウザからSSHアクセスも可能です。

・AWSマネコンからのJava Plugin (Chromeでは動かないのでIE11などで）
![039-2.png](http://qiita-image-store.s3.amazonaws.com/0/79389/9567252c-9c82-c8ea-fd97-155d1bdef21b.png)

Chromeであれば"Secure SSH Client"などのPluginを入れればSSHアクセス可能です。

##(4)iPadの接続例
会社ネットワーク環境など種々の制約で上記が使えない場合は、iPad(4G)があればSSH Clientアプリを利用することができます。
"iTerminal SSH Client"という無料アプリでの動作確認を行っています。

#5.その他(練習問題)

##(1)pingを受け付けるようにする

・作成したVMがping応答を返すように設定追加してください。
なお、社内から外部へpingができない環境の場合は、以下のようなpingサイトを使って確認してください。
https://www.cman.jp/network/support/ping.html

![060.png](http://qiita-image-store.s3.amazonaws.com/0/79389/ad50b417-4f06-0ca7-96dd-6d01c1508d1d.png)

##(2)httpを受け付けるようにする

・作成したVMがhttp応答を返すように設定追加してください。
作成したVM上でワンライナーhttpサーバを起動して(*)、PCからアクセスしてください。

(*)http://qiita.com/sudahiroshi/items/e74d61d939f18779970d

![100.png](http://qiita-image-store.s3.amazonaws.com/0/79389/d278e9e1-2f76-ed18-dd94-97183b28c979.png)


##(3)キーペアの理解
・キーペアにについて説明せず sshコマンドを使用しています。
- パスワードを入れないでログインできていることに？？？と感じませんでしたか？
- ググって理解しておきましょう。
- 作成したVMがWindows OSの場合はどのようにログインするのか確認しましょう。

##(4)MFAの理解
- 複数パスワードがあればMFAでしょうか？
- MFAはthey know / they have / they are のうちの２つを組合わせます。(they know * 2はだめ）
- ググって理解しておきましょう。

#6.補足

##(1)iPadからのSSHアクセス
Cloud101からの参加者が検証してくれた以下を参考にしてください。
「iPadでSSHクライアントを使ってみる」
http://qiita.com/tsao12th/items/58bdd8c6914570981a93

##(2)WindowsからのSSHアクセス
[Cloud102]#0-1 (補足)環境準備: Bash on Windows
http://qiita.com/nagahisa/items/ee2b36cfd051ce61ad69

##(3)CLI環境作成
[Cloud102]#0-2 (補足)環境準備: AWS CLI
http://qiita.com/nagahisa/items/18738934703b9173dcc4

Enjoy!! :tada: