AWSでのEC2構築

#はじめに

今回行うのは初心者向けの[AWSのインスタンス構築]になります。「こんなのドキュメント見ればわかるじゃん」と思うかもしれませんが、自分メモとしてこんなのあってもいいかなと思い作成しました。
新人研修とかで使えるかも・・・！？

##■インスタンス構築

概要：
　インスタンスとは｢AWSの仮想マシン｣になります。従来サーバを設置するとなると｢場所｣、｢スペック｣、｢設置費用｣等考慮するところが多くなり簡単にはできません。ところがEC2の場合、この3つの条件を簡単にクリアすることが出来るため使いやすいサーバといえるでしょう。

今回の記事では、初心者の方向けにシンプルにAWSのインスタンスを構築することを目的としてそのやり方を記載していこうと思います。熟練者の方には正直物足りない内容なので悪しからず。。。


・場所：サーバを置く場所。実際のサーバは大きなマシンで24時間稼働が条件になるため適当に置くことはできません。EC2なら仮想マシンの為実物としては存在していないので場所の考慮は一切いりません

・スペック：サーバの持つ能力になります。ディスク容量（ファイルを搭載するスペースの大きさ）、CPU、メモリー（サーバの処理能力）等が該当します。物理マシンの場合、初期段階で見積もることになりその際に「長期間の稼働に耐えられるようにあらかじめ高いスペックを用意する」事になります。しかしながら実際に稼働させるとそこまで必要なかった等起こります。その場合一度サーバを
分解して作り直す必要があり、非常に手間です。EC2の場合はサーバを停止させるだけでできるので効率的であるといえます

・設置費用：企業で使用するサーバは24時間の稼働が条件となり、常に騒音を発しています。それにサーバ一台だけではなく他の機械（L2,L3スイッチ等）も絡み合ってきますのでパソコンと違い適当な場所に置くことが出来ません。通常はデータセンターと呼ばれるところと契約しサーバを置く場所を借りることになります。ですがEC2の場合は場所等は一切考慮することがなくサーバを稼働させることが出来ます。

|設定項目|値 |
|:------------------:|:------------------:|
|リージョン|オハイオ|
|AMI|CentOS 7 (x86_64) - with Updates HVM|
|インスタンスタイプ|t2.micro|
|SG開放ポート|SSH,HTTP|
|VPC/SUBNET|default|
|PublicIP|有効|

---

準備するもの：AWSアカウント
前提作業　：　AWSへのログイン


###【手順1】リージョンの選択

リージョンとは作成する仮想マシンやその他サービスを起動させる場所になります。自分が今いる場所と起動させる場所が近ければ近いほど起動時間は早くなります。またリージョン別に対応するサービスも違うためここで説明する以外のサービスを扱う場合は事前にどのリージョンで起動させるサービスなのかを調べえておく必要があります。またリージョンにはコードが存在しており、こちらも知っておく必要があります。
今回は[オハイオ]を使用します。

| コード|地域 |
|:------------------:|:------------------:|
|us-east-1|米国東部（バージニア北部）|
|us-east-2|米国東部 (オハイオ)|
|us-west-1|米国西部 (北カリフォルニア)|
|us-west-2|米国西部 (オレゴン)|
|ca-central-1|カナダ (中部)|
|eu-central-1|欧州 (フランクフルト)|
|eu-west-1|欧州 (アイルランド)|
|eu-west-2|欧州 (ロンドン)|
|eu-west-3|EU (パリ)|
|ap-northeast-1|アジアパシフィック (東京)|
|ap-northeast-2|アジアパシフィック (ソウル)|
|ap-northeast-3|アジアパシフィック (大阪: ローカル)|
|ap-southeast-1|アジアパシフィック (シンガポール)|
|ap-southeast-2|アジアパシフィック (シドニー)|
|ap-south-1|アジアパシフィック (ムンバイ)|
|sa-east-1|南米 (サンパウロ)|

1-1) 以下画面より赤枠をクリックして[リージョン]を選択します
　※今回は「オハイオ」になります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/150678/5da02065-8c6e-903b-b8bd-43763502d4a8.png)




###【手順2】AMIの選択
条件：AWSのアカウントの所有
※以降は条件をすべて整えていることを前提に進めます

　ここではAWSで使用するサービスを選択し、作成するインスタンスのマシンイメージ（AMI）を選択します。インスタンスはパソコンでいうOSの役割を持っていて自分でカスタマイズして使うことも可能です。慣れてくると「作成したAMI」をもってインスタンスを起動させる方が効率的だったりします。

1)AmazonTopページから[EC2]サービスを起動

<img width="211" alt="AWS-Instance00-1.png" src="https://qiita-image-store.s3.amazonaws.com/0/150678/837ae0e3-b46f-71ac-3444-af3f1244addb.png">

2)インスタンスの作成をクリック
<img width="836" alt="AWS-Instance01.png" src="https://qiita-image-store.s3.amazonaws.com/0/150678/1c864950-87d2-c731-b3d8-9cfc922fecba.png" width=50%>

3)[AWS Marketplace]よりイメージを選択する
※ここでは[CentOS 7 (x86_64) - with Updates HVM]を選択します
※検索欄に[CentOS]と入力します。

<img width="553" alt="AWS-Instance02.png" src="https://qiita-image-store.s3.amazonaws.com/0/150678/c140b975-07b0-78b6-ea48-02d4ef8f934e.png">


4)[Continue]をクリック
<img width="487" alt="AWS-Instance03.png" src="https://qiita-image-store.s3.amazonaws.com/0/150678/8d5c7810-5ab7-d765-5242-ff76abef85ee.png">

###【手順3】インスタンスタイプの選択

[スペック]を選択します。基本的には求められるサービス性から検討していくのですが、特に何もなければ最小スペックから行います。理由はサーバ稼働後にインスタンスタイプの設定を変更することが出来るためになります。しかし物理の場合はあらかじめ先を見越してスペックを搭載することになるので実際には必要以上のスペックを搭載させることもあります。EC2の場合は可変が楽なのでスモールでスタートして必要になったらその都度スペックを上げていくことが通常となります。

1)　タイプ[t2.micro]を選択し[次の手順:インスタンスの詳細の設定]をクリック
※[t2.micro]は無料枠であり高いスペックではありません。スモールスタートの為t2.microを使用します

<img width="551" alt="AWS-Instance04.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/150678/32b5c2ef-b043-a928-f5ee-35d87266f426.png" width=50%>

###【手順4】インスタンスの詳細の設定

インスタンスのネットワーク設定等を設定していきます。企業レベルでの設計を行う際はネットワークの設定やIAMロールなどの設定も考慮するのですが今回は単純にインスタンスを作成することが目的なので基本的に操作は行わずに次に行きます。（VPC等指定がある場合はそれに従います）
またそれぞれの詳細は各項目の隣にある[!]をポイントすることで確認可能です。

1)　次の手順:ストレージの追加をクリック

<img width="552" alt="AWS-Instance06.png" src="https://qiita-image-store.s3.amazonaws.com/0/150678/f65fafba-61fb-b72c-747f-c720d3c7d75a.png" width=50%>

###【手順5】インスタンスの詳細の設定
ここではストレージ（ファイルを入れる箱）の容量を決定します。デフォルトでは8GBとなっていますがここも先ほど同様に使用する用途に合わせて選択することになります。ストレージの容量も後ほど追加する事も可能です。
　今回は単純にインスタンスを作成することが目的なので基本的に操作は行わずに次に行きます

<img width="551" alt="AWS-Instance07.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/150678/9c76c259-8114-5924-9486-c0bb1f7b0379.png" width=50%>

###【手順6】タグの設定
起動させるインスタンスのタグを設定します。複数のサーバを作成するときなどに役に立ちますが今回は1台のみなので特に操作はありません。

1)　次の手順:セキュリティグループの設定をクリック

<img width="692" alt="tagu.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/150678/0ae8a193-1596-292e-ad63-3dfcbeebea4c.png" width=50%>

###【手順7】セキュリティグループの設定

セキュリティグループは通信設定を行うところになります。サーバは従来ポートと呼ばれる通信番号を指定して通信を行っています。いくらネットワークがつながっていてもこのポートが通っていない場合通信は許可されません。その為インスタンスを設定するうえでの重要事項となります
ここでは[SSH]とインターネット公開に必要な[HTTP]のポートを開放します。AWSで[通信はできているのにWEBが起動しない]等があったらこのネットワークセキュリティグループを疑う事が多いです。

1)　[新しいセキュリティグループを作成する]にチェックを入れる
2)　[セキュリティグループ名]に任意の名前を入力する
　　※デフォルトから[working-sg]としています。
3)　[説明]に任意のメッセージを入力する
　　　※デフォルトから[for-test]としています。
4)　[ルールの追加]をクリックする

注意
　　　[ソース]は通信の範囲を決定する箇所になりますが、今回はデフォルトのままを使用します。ですがデフォルトのままだと[どこでも通信を許す]状況になり、セキュリティ上、非常に危険です。テストサーバ等以外では十分に検討して絞り込むのが普通です

<img width="554" alt="AWS-Instance08.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/150678/63047c15-72a6-1162-92a9-46fc31316e5d.png" width=50%>

5)　[カスタムTCP]のプルダウンより[HTTP]を選択する。
<img width="554" alt="AWS-Instance09.png" src="https://qiita-image-store.s3.amazonaws.com/0/150678/affd1bd6-97cd-ed48-7b84-beed844b5c89.png">

6)　[確認と作成]をクリックする
<img width="554" alt="AWS-Instance10.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/150678/aaf3f73e-a3e6-53fa-a080-9553caff19b9.png" width=50%>


###【手順8】インスタンス作成の確認
　今まで自分が行ってきた設定を確認します。問題なければ[作成]をクリックすることでインスタンスの作成が始まります

1)　[作成]をクリックする

<img width="555" alt="AWS-Instance11.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/150678/81e70d24-bcd8-d76b-a7b5-2d3c461ac293.png" width=50%>

###【手順9】キーペア設定
これはサーバにログインする際に必要になる[鍵ファイル]の作成になります。AWSはデフォルトでは鍵認証でインスタンスにログインします。したがって接続する方とされる方双方に[鍵ファイル]がないとログインができないということになります。従来は一つの[鍵ファイル]を作成しその[鍵ファイル]を共することでログインを行います。
 今回は新規に[鍵ファイル（キーペア）]を作成します。

1)　[既存のキーペアの選択]のプルダウンから[新しいキーペアの作成]を選択
<img width="317" alt="AWS-Instance12.png" src="https://qiita-image-store.s3.amazonaws.com/0/150678/dd8da0ae-8556-36b7-2a15-392b62935b4b.png">

2)　[キーペア名]に作成するキーペアの名前を入力する
※ここでは[workkey]という名前にしています
3)　[キーペアのダウンロード]をクリックする

<img width="317" alt="AWS-Instance13.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/150678/a4f46841-96b9-c8ee-5dd2-585076bfda6e.png">

4)　自分の作業端末の任意場所を選択し[保存]を押す
※ここでは[ダウンロード]に置いています。

<img width="707" alt="AWS-Instance14.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/150678/788ee12a-51ae-aee6-109e-8ca98cdbfcf9.png" width=50%>

5)　[インスタンスの作成]をクリックする。

<img width="317" alt="AWS-Instance13.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/150678/a4f46841-96b9-c8ee-5dd2-585076bfda6e.png" width=50%>

6)　[インスタンスの表示]をクリックする
    ※インスタンスID(iから始まる数字)を取得しておく

<img width="554" alt="AWS-Instance15.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/150678/0979633c-3cb5-fea1-7093-011acef18d4b.png" width=50%>

7)　[インスタンス]が作成されたことを確認する
※[running]になればOK
※作成時に[Name]は付与されていないためインスタンスIDで作成したインスタンスを識別する

<img width="836" alt="AWS-Instance16.png" src="https://qiita-image-store.s3.amazonaws.com/0/150678/bb518e16-574f-0c3c-7c45-ba677fafb1dc.png" width=50%>

###【手順10】インスタンスネーム設定
インスタンスの作成が終わりましたが作成直後は名前がまだありませんのでここで名前を付けて作成したインスタンスがこれだってわかるようにしておきます。

1)　[インスタンス]の[Name]部分にポイントし[ペンマーク]をクリックする
<img width="691" alt="AWS-Instance17.png" src="https://qiita-image-store.s3.amazonaws.com/0/150678/9d67a406-de3a-2a25-7fd8-2090b74a9630.png">

2)　表示されたコメント部分に任意の名前を入力し[レ点]をクリックする。
※ここでは[work-01]としています
<img width="686" alt="AWS-Instance18.png" src="https://qiita-image-store.s3.amazonaws.com/0/150678/29253280-cbf7-fdbc-95de-c6d812a618fe.png">


###【手順11】インスタンスへのログイン
　作成したインスタンスにログインします。ここでは[SSHクライアント]を使用し接続します。SSHクライアントはインターネット上に展開されているフリーソフトです。ここではSSHクライアントの[TeraTerm]を事前にダウンロードしてインストール済みであるところから作業を行います。

1)　作成したインスタンス（work-01）の[IPv4 パブリックIP]の値をコピーする

<img width="691" alt="AWS-Instance20.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/150678/60ea2c04-2584-8c7a-99f3-f2dd4e157be9.png">

2)　[SSHクライアント]を起動させる
※ここでは前述のとおり[TeraTerm]を使用しています
3)　[ホスト(T)]でコピーした内容を張り付け[OK]をクリック
<img width="245" alt="AWS-Instance21.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/150678/fdee2b88-b442-d8f4-f0d5-1c4c82f26896.png">


4)　[セキュリティ警告]は[続行]をクリック
5)　[ユーザ名]に[centos]と入力する
6)　[RSA/DSA/ECDSA/ED25519鍵を使う]にチェックを入れ[秘密鍵]をクリックする

<img width="239" alt="AWS-Instance22.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/150678/b027290e-3535-99b9-9fce-37306fd94f4f.png">

7)　[秘密鍵ファイル]のプルダウンより[すべてのファイル]を選択する

<img width="496" alt="AWS-Instance23.png" src="https://qiita-image-store.s3.amazonaws.com/0/150678/078642c2-5ef5-a434-0ebd-2976563803b6.png">

8)　[キーペア設定-手順4]で保存したファイルを選択し[開く]をクリックする
※ここでは[workkey.pem]になります

<img width="405" alt="AWS-Instance24.png" src="https://qiita-image-store.s3.amazonaws.com/0/150678/3411ff28-75de-0952-3072-04fdfac7d6ea.png">

9)　[OK]をクリックし、ログインを確認する

<img width="490" alt="AWS-Instance26.png" src="https://qiita-image-store.s3.amazonaws.com/0/150678/84e1dd7b-c354-c359-b7dd-c12ac0820fce.png">


以上

---

#終わりに
実際に手順で書くと複雑ですが、やってみると簡単です。これと同じことを物理環境でやるとすごく時間がかかりますが、AWSの場合だと1時間以内に作成ができてしまいます。慣れてくると5分もかかりません。またさらに発展するとコマンドラインでの作成も可能になります。これからの時代はクラウドが主流になっていますので新人の方などは知っておくといいかもしれません。