AWS EC2 ハンズオン

AWS の提供する EC2（仮想サーバ） を実際に操作して体験頂きます。

[Amazon EC2](https://qiita.com/leomaro7/items/1b83f7ccf58166bd7499) も参考に。


- 構築するサーバ OS
 - Linux サーバ (Amazon Linux)
 - Windows サーバ (Windows Server 2016)

- 必要なもの
 -　インターネットに接続した Windows や Mac
 -　ブラウザ（Internet Explorer 11 は非サポート)
 -　接続ソフトウェア　
 -　AWS アカウント
参考：AWS アカウント作成の流れ
https://aws.amazon.com/jp/register-flow

---
###1. EC2 インスタンスの作成

「マネージメントコンソール」にログインし、画面右上の現在のリージョンを「アジアパシフィック（東京）」にしてください。
![スクリーンショット 2018-09-09 16.32.53.png](https://qiita-image-store.s3.amazonaws.com/0/280929/5172f379-ba40-ea39-bc67-cd5cc6a393e7.png)

サービスメニューから「EC2」をクリックします。 
![スクリーンショット 2018-09-09 16.33.15.png](https://qiita-image-store.s3.amazonaws.com/0/280929/cfbb3099-27df-d25a-c151-d7b5aab29339.png)

「インスタンスの作成」をクリックします。
![スクリーンショット 2018-09-09 16.33.54.png](https://qiita-image-store.s3.amazonaws.com/0/280929/34934a4d-8faf-2404-1386-49f861d0c8db.png)

ステップ 1:AMI(テンプレート）の選択
**Linuxの場合**
Amazon Linux AMI 201X.XX.XX (HVM) の「選択」をクリックします。 
![スクリーンショット 2018-09-09 16.34.24.png](https://qiita-image-store.s3.amazonaws.com/0/280929/7cc81cef-9c97-6f76-6a29-9637a901877b.png)

**Windowsの場合**
「コミュニティ AMI」を選択し、Windows Server 2016 を探し「選択」します。
![スクリーンショット 2018-09-09 16.36.11.png](https://qiita-image-store.s3.amazonaws.com/0/280929/b03b23fb-01be-4b4d-492b-1fa3cd6015cf.png)

ステップ 2:インスタンスタイプ(サーバーのスペック)の選択
今回は「t2.micro」を選択 し、「次の手順」をクリックします。 
![スクリーンショット 2018-09-09 16.41.00.png](https://qiita-image-store.s3.amazonaws.com/0/280929/44402941-4eab-cce2-4ad5-12788fe07f1e.png)

ステップ 3:インスタンスのの詳細の設定
作成する場所、ネットワークの設定をします。
ネットワーク「vpcxxxx (デフォルト)」、サブネット「次のデフォルト ap-northeast-1a」、自動割り当てパブリックIP「(有効)」にし、「次の手順」をクリックします。
![スクリーンショット 2018-09-09 16.44.17.png](https://qiita-image-store.s3.amazonaws.com/0/280929/9adb9c18-1e0e-54e8-5cb7-6e459880cd2c.png)

ステップ 4:ストレージの追加
ストレージにはブートボリュームがデフォルトで割り当てられています。
今回は何も行わず、「次の手順」をクリックします。 
※「合わせて削除」のチェックを外すと、EC2インスタンスを終了時一緒にEBSを削除することもできます。
![スクリーンショット 2018-09-09 16.45.37.png](https://qiita-image-store.s3.amazonaws.com/0/280929/676cbf42-2fa9-af12-ec4b-1270e45ae491.png)

ステップ 5:タグの追加
タグを付け、識別しやすいようします。
「タグの作成」をクリックし、キー「Name」、値「WebServer」と入力し、「次の手順」をクリックします。
![スクリーンショット 2018-09-09 16.55.35.png](https://qiita-image-store.s3.amazonaws.com/0/280929/9970604f-9308-9abc-7763-f0d45a43765e.png)

ステップ 6:セキュリティーグループの設定
「新しいセキュリグループを作成する」を選択し、SSH、RDP、HTTPのポートどこからでもアクセスできるように設定します。
「ルールの追加」をクリックして行を追加し、タイプを選択、送信元「任意の場所」とし、「確認と作成」をクリックします。 
[Amazon EC2 セキュリティグループ](https://qiita.com/leomaro7/items/42967c080814dfc82139) も参考に。
![スクリーンショット 2018-09-09 16.47.14.png](https://qiita-image-store.s3.amazonaws.com/0/280929/f9a1e357-064f-a01f-a846-aa4c7694be3f.png)

ステップ 7:確認
「作成」をクリックします。
作成する EC2インスタンスに設定するキーペアを確認する画面が表示されます。
「新しいキーペアの作成」を選択し、キーペアに「test-key」と入力、「キーペアのダ ウンロード」をクリックすると、「test-key.pem」というファイル名の秘密鍵がダウンロードされます。
キーペアーのダウンロードが完了すると「インスタンスの作成」ボタンが有効になるので、クリックしインスタンスを作成します。 
*このキーペアはこれ以降二度とダウンロードできません。家の鍵と同じで、キーペアをなくしてしまうとこの後サーバに入ろうとしたときに「鍵がない！ 入れない！」となります。絶対になくさないでください。*
![スクリーンショット 2018-09-09 16.49.23.png](https://qiita-image-store.s3.amazonaws.com/0/280929/3b8f9930-2e14-bd87-8501-e02f3947fec4.png)

作成したインスタンスを確認します。
インスタンスの状態が「running」に変わり、ステータスチェックが「2/2 のチェックに合格しました」に変わったら、作成完了です。 
![スクリーンショット 2018-09-09 17.00.13.png](https://qiita-image-store.s3.amazonaws.com/0/280929/dd4600f1-0c32-6169-b466-bbfabb69d325.png)


###2. EC2 インスタンスの停止と開始
無料枠を越えた後は課金されてしまうので、利用しないときは必ず停止にしておいてください。

**停止**
対象のインスタンスを選択し、右クリック「インスタンスの状態」-「停止」をします。
EBSストレージではないエフェメラルストレージのデータは消えてしまう警告が表示されていますが、t2.microでは持っていないタイプのストレージですので「停止する」 をクリックします。 
![スクリーンショット 2018-09-09 17.00.43.png](https://qiita-image-store.s3.amazonaws.com/0/280929/f4392564-30dd-b482-881d-91ad4cec2759.png)

インスタンスの状態が「stopped」になり、停止が完了したことを確認します。
![スクリーンショット 2018-09-09 17.02.41.png](https://qiita-image-store.s3.amazonaws.com/0/280929/a525c7d4-1f7b-2059-b492-80bffb94ee8b.png)

**開始**
対象のインスタンスを選択し、右クリック「インスタンスの状態」-「開始」をします。
![スクリーンショット 2018-09-12 19.36.36.png](https://qiita-image-store.s3.amazonaws.com/0/280929/9552a681-1a6c-f28b-3be2-6e85824ae0cf.png)


###3.Elastic IP (固定IPアドレス)を割当て

**新しいアドレスの割り当て**
左側のメニューから「Elastic IP」を選択し、「新しいアドレスの割り当て」をクリックします。
![スクリーンショット 2018-09-12 19.38.12.png](https://qiita-image-store.s3.amazonaws.com/0/280929/d461ceaf-0302-7b73-4857-92908d8f8061.png)

「割り当て」をクリックしてします。
![スクリーンショット 2018-09-12 19.38.51.png](https://qiita-image-store.s3.amazonaws.com/0/280929/cb1d0259-787d-772d-3343-d87ffccf3fda.png)

[Elastic IP]が割り当てられます。「閉じる」をクリックします。 
![スクリーンショット 2018-09-12 19.39.02.png](https://qiita-image-store.s3.amazonaws.com/0/280929/a89256f5-7038-53a2-5da9-054a74c5d8c8.png)

**アドレスの関連付け**
振り出された固定IPアドレスを先程作成したインスタンスに紐付けます。

「アクション」から「アドレスの関連付け」をクリックします。
![スクリーンショット 2018-09-12 19.41.06.png](https://qiita-image-store.s3.amazonaws.com/0/280929/44d287bd-36bd-5825-099f-1e9328fe00e0.png)

紐付けたいインスタンスを指定し「関連付け」をクリックします。
![スクリーンショット 2018-09-12 19.45.46.png](https://qiita-image-store.s3.amazonaws.com/0/280929/c92ab254-51b9-fe86-9841-102112ab0f63.png)

[Elastic IP]と[インスタンス]の紐づけが完了します。 
![スクリーンショット 2018-09-12 19.47.47.png](https://qiita-image-store.s3.amazonaws.com/0/280929/9337c50e-6b79-726a-73a8-c9c5c6790f5f.png)


###4.SSH/RDP でログイン

**Linux：SSH でログインします**
接続先ホスト:インスタンスに割当てた固定IPアドレス (Elastic IP) 
ログインユーザ名:ec2-user 
認証方法:公開伴暗号方式 インスタンス作成時に作成しダウンロード した秘密伴ファイル (test-key.pem) 

- WindowsPCからはTerTermを使ってログインします。 
![スクリーンショット 2018-09-15 16.19.53.png](https://qiita-image-store.s3.amazonaws.com/0/280929/02f2ddc7-d8f5-a27c-2b41-7ab4bede2c60.png)

初回接続時は警告が表示されます。「続行」をクリックします。
![スクリーンショット 2018-09-15 16.20.18.png](https://qiita-image-store.s3.amazonaws.com/0/280929/846a7576-d3a7-14f2-30e1-e8ee2738a406.png)
 
ユーザ名に「ec2-user」を入力し、「RSA/DSA/ECDSA/ED25519伴を使う」を選択し、「秘密鍵」をクリックします。 
![スクリーンショット 2018-09-15 16.20.37.png](https://qiita-image-store.s3.amazonaws.com/0/280929/7c0943fd-ba43-70b2-e5e1-2eb37dba78ba.png)

拡張子を「すべてのファイル(.)」に変更し、ダウンロードした「test-key.pem」を選択し、「開く」をクリックします。 
![スクリーンショット 2018-09-15 16.20.47.png](https://qiita-image-store.s3.amazonaws.com/0/280929/f51947db-a0b3-94f0-9c36-73ce8eb0f294.png)

「OK」をクリックし、ログインできると以下のように表示されます。
![スクリーンショット 2018-09-15 16.21.10.png](https://qiita-image-store.s3.amazonaws.com/0/280929/2e1d98c9-1ca3-7a89-5972-55509f498cae.png)

- Macからはデフォルトでインストールされているターミナルでsshコマンドを使用してログインします。
 
`chmod 600 ~/Downloads/test-key.pem`

`ssh -i ~/Downloads/test-key.pem ec2-user@<インスタンスに割当てたElastic IPアドレス>`
![スクリーンショット 2018-09-15 16.21.18.png](https://qiita-image-store.s3.amazonaws.com/0/280929/612ecf82-cc1f-0581-97a9-46f4caef12ab.png)

**Windows：Server RDP でログインします**
接続先ホスト:インスタンスに割当てた固定IPアドレス (Elastic IP) 
ログインユーザ名:Administrator
認証方法:取得したWindowsパスワード

対象のインスタンスを右クリックして、「Windows パスワードの取得」を選択します。
![スクリーンショット 2018-09-15 16.26.50.png](https://qiita-image-store.s3.amazonaws.com/0/280929/7fafe644-bd00-7456-ba5d-275f280ba5d3.png)

「ファイルを選択」をクリックし、ダウンロードした「test-key.pem」を指定し、 「パスワードの復号」をクリックします。 
![スクリーンショット 2018-09-15 16.27.03.png](https://qiita-image-store.s3.amazonaws.com/0/280929/d38fd844-aa6a-e14a-4324-975fb212b4b2.png)

パスワードが表示されるためメモします。このパスワードは初期パスワードです。「閉じる」をクリックします。
![スクリーンショット 2018-09-15 16.27.22.png](https://qiita-image-store.s3.amazonaws.com/0/280929/506064df-4c65-4ddc-8eb6-38c509791608.png)

- Windowsからはデフォルトでインストールされている「リモートデスクトップ接続」を使ってログインします。 

「リモートデスクトップ接続」を起動し、 「コンピュータ」に「Elastic IP アドレス」、「ユーザ名」に「Administrator」を 入力し、「接続」をクリックします。
![スクリーンショット 2018-09-15 16.27.45.png](https://qiita-image-store.s3.amazonaws.com/0/280929/1880175a-0513-e2cc-45d3-23ae9f934c9d.png)

- Macからは「Microsoft Remote Desktop8.0」アプリを使ってログインします。
「New」をクリックします。 
![スクリーンショット 2018-09-15 16.28.00.png](https://qiita-image-store.s3.amazonaws.com/0/280929/c957bed9-b022-ef92-4c19-8a261f6e230d.png)

「Connection name」に適当な名前を入力し、「PC name」に「Elastic IPアドレス」を入力します。「User name」に「Administrator」、「Password」にメモしたパスワードを入力し、ウィンドウを閉じます。 
![スクリーンショット 2018-09-15 16.28.20.png](https://qiita-image-store.s3.amazonaws.com/0/280929/f3c4e7f6-2f06-5ec5-b9fa-186cc5ca020e.png)

登録された接続を選択し「Start」をクリックします。 「Continue」をクリックします。
![スクリーンショット 2018-09-15 16.28.30.png](https://qiita-image-store.s3.amazonaws.com/0/280929/d128abc4-5136-dbfa-9aed-867ad37a8480.png)

※ちなみに・・・
インスタンスからIPアドレスを確認したい場合、VPCはSDNであり仮想的にパブリックIPアドレスがアサインされているため、EC2上での ipconfig や ifconfig では確認することはできません。
[インスタンスメタデータとユーザーデータ](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)
↓のコマンドで確認していく必要がある。


```
http://169.254.169.254/latest/meta-data/<local-ipv4>や<public-ipv4>
```


https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-instance-metadata.html

###5.Apache/IIS をインストール

Linux Apacheをインストールします。 Windows IIS をインストールします。

- Linux: Apache をインストール 
以下のコマンドを実行します。Apache (httpd) をインストール→Webサーバ (httpd) を起動→自動起動するように設定します。

`sudo yum -y install httpd`

`sudo service httpd start`

`sudo chkconfig --level 345 httpd on`
![スクリーンショット 2018-09-15 16.34.29.png](https://qiita-image-store.s3.amazonaws.com/0/280929/60a50893-2e58-6a74-966f-2915736fc001.png)

ブラウザのアドレスバーにメモした「Elastic IPアドレス」を入力して起動を確認します。 
![スクリーンショット 2018-09-15 16.34.37.png](https://qiita-image-store.s3.amazonaws.com/0/280929/0721d866-78fa-1a65-5f25-4b6a582c619b.png)

- Windows: IIS をインストール
PowerShell で以下のコマンドを実行し IIS をインストールします。 

`Add-WindowsFeature –Name Web-Server` 

Webサーバ が起動している事を確認します。

ブラウザのアドレスバーにメモした「Elastic IPアドレス」を入力して起動を確認します。
以下のような画面が表示されれば成功です。 
![スクリーンショット 2018-09-15 16.35.01.png](https://qiita-image-store.s3.amazonaws.com/0/280929/2101dd57-718e-5588-1e11-022f59db7bf3.png)


###6.EBS スナップショットでデータバックアップ作成
EBS ボリュームのスナップショットを作成することで、そのボリュームのデータバックアップを取得できます。

左側メニューから「ボリューム」を選択し、「アタッチ済み情報」を確認します。 
![スクリーンショット 2018-09-15 16.40.15.png](https://qiita-image-store.s3.amazonaws.com/0/280929/94b20135-8b91-03e4-d85a-a1649129a225.png)

ボリュームを選択し右クリックし、「スナップショットの作成」を選択します。
![スクリーンショット 2018-09-15 16.40.33.png](https://qiita-image-store.s3.amazonaws.com/0/280929/f8a8c596-bcab-5fe5-3307-a52aff0e4bff.png)

スナップショット名を入力し「スナップショットの作成」をクリックします。 
![スクリーンショット 2018-09-15 16.40.51.png](https://qiita-image-store.s3.amazonaws.com/0/280929/fe9bf06d-4d31-743c-707b-7ba22ab78566.png)

左側メニューから「スナップショット」を選択し、作成したスナップショットのステータがス「completed」になれば、作成完了です。
![スクリーンショット 2018-09-15 16.40.59.png](https://qiita-image-store.s3.amazonaws.com/0/280929/bc340426-c4f8-22bf-3d29-5dc702d2d9cd.png)

作成したスナップショットから別の EBS ボリュームを作成します。
このボリュームは EBS スナップショットを取得した時の中身となっており、現在使用しているボリュームと置き換えて使うことや追加で割り当てて必要なファイルだけ抜き出す事が可能です。

作成したスナップショットを選択し、右クリックで「ボリュームの作成」を選択します。
![スクリーンショット 2018-09-15 16.41.21.png](https://qiita-image-store.s3.amazonaws.com/0/280929/f49575c8-c787-61fa-533b-a04ee345aea9.png)

EBSボリュームを割り当てて使いたい EC2インスタンスと同じアベイラビリティーゾーンとします。ここでは「ap-northeast-1a」 を選択し、「ボリュームの作成」 をクリックします。
![スクリーンショット 2018-09-15 16.41.31.png](https://qiita-image-store.s3.amazonaws.com/0/280929/befb7e85-716d-79ac-bc26-11cf95c8bd76.png)

作成された EBS ボリュームを確認します。
![スクリーンショット 2018-09-15 16.41.38.png](https://qiita-image-store.s3.amazonaws.com/0/280929/416c81be-ef9c-ebe1-f5de-b75a7d7a0eba.png)


###7.EC2インスタンスからAMIを作成
EC2インスタンス全体を復旧させる事を想定して、AMIを作成し、作成したAMIからEC2インスタンスを作成します。

EC2インスタンスを右クリックし、「イメージ」-「イメージの作成」を選択 します。 
![スクリーンショット 2018-09-15 16.46.19.png](https://qiita-image-store.s3.amazonaws.com/0/280929/4a2c3844-c8dd-1ecc-d573-270b3c96d68f.png)

イメージ名に「Stamp」という名前を入力し、「イメージの作成」をクリックします。
イメージの作成が開始されると、EC2インスタンスのOS再起動が行われ、OSが停止したタイミングでスナップショットが作成されます。
（「再起動しない」をオンにすると OS 再起動を回避することができますが、整合性を考慮する必要があります。）
![スクリーンショット 2018-09-15 16.46.29.png](https://qiita-image-store.s3.amazonaws.com/0/280929/0f792875-1dc3-39ca-4772-8538ae907c03.png)

左側のメニューから「AMI」を選択し、作成した AMI のステータスが「available」 となれば、作成完了です。
![スクリーンショット 2018-09-15 16.46.38.png](https://qiita-image-store.s3.amazonaws.com/0/280929/34ce82a6-1cbe-258f-a185-7f0cf8663bb3.png)

作成したAMIを選択し、右クリックから「作成」を選択します。 
![スクリーンショット 2018-09-15 16.46.46.png](https://qiita-image-store.s3.amazonaws.com/0/280929/42c082b8-2050-2d5a-83cb-efac36297612.png)

EC2 インスタンスの作成ウィザードのステップ2以降が始まります。
基本的に手順は 「1.EC2 インスタンスを作成」と同じですが、AZとタグを変更して作成します。
画面は省略します。

- ステップ 2:「t2.micro」を選択して、「次の手順」をクリックします。
- ステップ 3:ネットワーク「vpc-xxxx (デフォルト)」、サブネット「次のデフォルト apnortheast-1c」、自動割り当てネットワーク「有効」になっている事を確認し、「次の手順」をクリックします。 
- ステップ 4:今回もデフォルトのままで、「次の手順」をクリックします。
- ステップ 5:「タグの作成」をクリックし、キーに「name」、値に「複製1」と入力し、「次の手順」をクリックします。 
- ステップ 6:「既存のセキュリティグループを選択する」を選択し、セキュリティーグループに前回作成した「launch-wizard-1」を選択し、「確認と作成」をクリックします。
- ステップ 7:「作成」をクリックします。 キーペアを確認する画面が表示されます。「既存のキーペアの選択」を選択し、「キーペアの選択」に前回作成したキーペア「test-key」を選択します。チェックボックスをオンにし、「インスタンスの作成」をクリックします。

右下の「インスタンスの表示」ボタンをクリックして、作成したインスタンスを確認します。 
左側のメニューから「インスタンス」を選択し、作成したインスタンスの状態を確認します。「複製1」というインスタンスが確認できます。
![スクリーンショット 2018-09-15 16.48.12.png](https://qiita-image-store.s3.amazonaws.com/0/280929/ce5c058c-780f-1926-a471-03c3988b1e18.png)


###8.インスタンスタイプの変更
EC2インスタンスの性能の過不足にあわせて、インスタンスタイプを変更する事が可能です。
インスタンスタイプの変更は、インスタンスの停止中に行う必要があります。

対象のインスタンスを選択し右クリックし、「インスタンスの設定」-「インスタンスタイプの変更」を選択します。
![スクリーンショット 2018-09-15 16.48.19.png](https://qiita-image-store.s3.amazonaws.com/0/280929/c5b2820a-7a87-8fe3-c7e1-d897fef086ce.png)

 「インスタンスタイプ」に「m3.medium」を選択して「適用」をクリックします。
![スクリーンショット 2018-09-15 16.48.27.png](https://qiita-image-store.s3.amazonaws.com/0/280929/7dea454b-d608-3f49-89f1-ff0d0d91e30f.png)

インスタンスタイプを変更したインスタンスは開始させる事で新しいスペックで利用を開始できます。
m3.medium は無料枠ではないため、実際に開始の操作はしないでおきます。
インスタンスタイプを元の無料枠となるt2.microに変更してください。


###9.EBS ボリュームの拡張
EC2 インスタンスから使用しているディスクの拡張には、以下の2つの方法があります。 
既存ディスクを拡張する方法 
ストライピング等を使用しており、新しいボリュームを追加して拡張する方法 
以前は前者を実施するのに停止時間が必要でしたが、現在はほとんどの場合は不要となっているため、前者の方法をおすすめします。

対象のインスタンスを選択し、インスタンスの情報から「ブロックデバイス」のデバイス名をクリックし、「EBS ID」の値をクリックします。
![スクリーンショット 2018-09-15 16.48.40.png](https://qiita-image-store.s3.amazonaws.com/0/280929/68375e11-87b5-8c5d-ae15-efa0c0ed25fb.png)

特定のボリュームだけが表示される状態になっているため、ボリュームを右クリックして、「ボリュームの変更」を選択します。 
![スクリーンショット 2018-09-15 16.48.50.png](https://qiita-image-store.s3.amazonaws.com/0/280929/97c04d4c-6069-ec7e-a9af-0794d7464fa3.png)

拡張したい新しい容量をサイズを入力し「変更」をクリックします。
![スクリーンショット 2018-09-15 16.48.59.png](https://qiita-image-store.s3.amazonaws.com/0/280929/6a2b854f-5ec5-3136-41d4-0328d26502be.png)

確認画面が表示されるので、「はい」をクリックします。
![スクリーンショット 2018-09-15 16.49.06.png](https://qiita-image-store.s3.amazonaws.com/0/280929/9feba062-5cdc-a15b-7cbe-473983a193cd.png)

対象のボリュームの「状態」が「in-use - completed (100%)」に変わることを待ちます。
![スクリーンショット 2018-09-15 16.49.12.png](https://qiita-image-store.s3.amazonaws.com/0/280929/6ef5645b-d50c-1e85-51a6-8c7c835607df.png)


###10.作成したリソースの削除
基本的には右クリックから削除します。なお、インスタンスは完全削除されるまで時間を要する場合があります。

- インスタンス：不要なインスタンスを右クリック → [インスタンスの状態] - [削除]
- AMI：不要なAMIを右クリック → [登録解除]
- スナップショット：不要なスナップショットを右クリック → [削除]
- 不要なボリューム：不要なボリュームを右クリック → [ボリュームの削除]
- Elastic IP：不要なElastic IPを右クリック → [アドレスの開放]