【EC2入門-2022年】無料枠で始めるインスタンスの作成手順

## この記事の目的
アプリをネット上に公開するのに使われたりする**Amazon EC2**。
その基本となる**インスタンスの作成方法**についてまとめてみました。

この記事では
**無料枠**を利用して、**インスタンス作成の基本的な流れ**を解説します。

:::note info
※作成手順だけ知りたいという方は、以下は読み飛ばして下さい。

#### そもそもインタンスって何？
EC2における**インスタンス**とは、インターネット上で動くサーバーのことです。

インスタンスは、**Amazonマシンイメージ(AMI)** という、**ソフトウェアの組み合わせをまとめた一つの雛形（OS、ストレージ、DB...などの種類を決める）** から作られます。

どうして最初からインスタンスを作らないのかというと、AMIを最初に作っとくことで、同じ設定のインスタンスを何個も作れるようになるからです。（同じような設定のインスタンスを作ろうとした時、また１から設定をするのは面倒なので）
:::

## 前提

・AWSアカウントを持っている方を対象に説明していきます。
持っていな方は、以下ページの「**Sign up for AWS**」を参照してみて下さい。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html

AWSアカウントは、作成してから1年は無料枠として使え、EC2のインスタンスは月750時間は無料で使えます※。

また、**サンプルのWebアプリをネット上に公開することを想定にしたインスタンス**を作成します。


※無料枠のアカウントでも、インスタンスタイプによっては有料。
参照：[AWS Free Tier](https://aws.amazon.com/free/?all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc&awsf.Free%20Tier%20Types=*all&awsf.Free%20Tier%20Categories=*all)
![Screen Shot 2022-05-05 at 12.56.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2640031/5c23848b-4f5d-1f89-82dd-e0a6dc28dd20.png)


## インスタンス作成までの１１ステップ
### １AWSコンソールにログイン

・以下リンクより、AWSコンソールにログインする。
https://console.aws.amazon.com/ec2/
↓

・ナビゲーションバーにあるリージョンを確認する。
　リージョン（region）は、直訳すると「地方」や「地域」。文字通り、データセンターがある場所を指しています。今回は利用料金が比較的安い「バージニア北部」を選択しています（無料枠ですが念のため）
![Screen Shot 2022-05-05 at 13.07.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2640031/7b9795fb-fe41-6e55-3484-c10f7453efdc.png)

アプリを利用する人に近いリージョンの方が処理速度が速かったりするが、あえて利用料金が安いリージョンを選ぶのもありです（趣味で作るサンプルアプリなど、あまりお金をかけたくない場合）

リージョン、インスタンスごとの時間単位の利用料金はこちらの[ページ](https://aws.amazon.com/jp/ec2/pricing/on-demand/)で確認できます。
![Screen Shot 2022-05-05 at 13.14.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2640031/9b699671-245b-9c26-3e12-9b5559598f3f.png)

### 2 インスタンスの画面で「インスタンスを起動」をクリック
[AWS マネジメントコンソール](https://us-east-1.console.aws.amazon.com/console/home)にアクセスし、ナビゲーションバーに「EC2」と打ち込みましょう。EC2のリンクが表示されるはずです。
![Screen Shot 2022-05-05 at 13.23.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2640031/594c8a06-ecf8-d37a-5e35-f7dd2b58d06b.png)

EC2のページに移動したら、サイドバーの「インスタンス」をクリックし、インスタンス画面に移動。
移動した後、「インスタンスを起動」ボタンをクリックして下さい。

![Screen Shot 2022-05-05 at 13.19.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2640031/fb7a7201-cf6f-0f29-7324-50bb23c5ca5d.png)



### ３ 「名前とタグ」の設定
インスタンスを識別するための名前を設定します。今回は試しなので「my-sample-server」としました。任意の名前を記載しましょう。
![Screen Shot 2022-05-06 at 16.21.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2640031/2fe5a30d-7cab-1461-92c6-53ea5c8f6cf6.png)


### ４　Amazonマシンイメージ（AMI）を選択
インスタンスを起動画面に移るとAMIのタイプは無料枠の「Amazon Linux 2 AMI(HVM), SSD Volume Type」が初めから設定されていると思うので、そのままにしておきましょう。
![Screen Shot 2022-05-06 at 10.05.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2640031/f9794355-f23c-00d4-3390-31e8209d75cf.png)

### ５　インスタンスタイプを選択
今回は無料枠の「t2.micro」を選びます。
![Screen Shot 2022-05-06 at 15.05.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2640031/5b6631ce-5c01-041d-064d-6fe425d5b9e9.png)

:::note info
※作成手順だけ知りたいという方は、以下解説は読み飛ばして下さい。
#### インスタンスタイプとは？
インスタンスには**タイプ**と**サイズ**があります。

**インスタンスタイプ**とは、ざっくり言うと**サーバーの用途**です。

パソコンを買う時、用途によって買うものが変わってくると思います。
プログラミングがしたいから処理が早いものがいい、ネットサーフィンしかしないから安いのでよい、動画編集をするからGPUが優れたものがいい、など。

つまりインスタンスタイプの選択は、**どのパソコン（サーバー）が作りたいサービスに適しているかを選ぶ作業**ということになるでしょう。
今回選んだ「t2.micro」では、先頭の「t2」という部分がインスタンスタイプを指しています。


**インスタンスサイズ**とは、インスタンスの**性能**のことです。
「t2」の場合は８種類のサイズがあり、「micro」は下から２番目の性能のものになります。

インスタンスタイプについてより詳しく知りたい方は、以下[公式ページ](https://aws.amazon.com/jp/ec2/instance-types/)を参照してください。
:::

### ６　秘密鍵を作成してダウンロード
作成したEC2インスタンスへ、自分のパソコンからSSH接続するために必要なものになります。
今回は「ec2key」と入力します。
![Screen Shot 2022-05-06 at 16.56.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2640031/69fb0c0f-1f71-bb2d-8678-ac16d0cf61f9.png)


### ７ ネットワーク設定
「ネットワーク設定」欄の「ファイアウォール (セキュリティグループ)」を以下赤枠のように設定します。
![Screen Shot 2022-05-06 at 16.41.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2640031/b8fdc742-3469-9f25-97c2-9ed04b171750.png)

ファイアウォールとは、外部からの攻撃を防ぐことを目的としたものです。
こちらの画面ではファイルウォールでどんな種類の通信を許可するか、を設定しています。

「からのSSHトラフィックを許可する」で、「自分のIP」に設定しましょう。
こうすることで、インスタンスに接続して設定を変更できるのが、自分のIP（自分のパソコン）からのみになります。
画面の注意書き「送信元が 0.0.0.0/0 のルールを指定すると〜」にも書かれていますが、SSHの欄が「0.0.0.0/0」のままだと、全てのパソコンからアクセスすることが許可されてしまうため、セキュリティ的に危険な状態になります。

また、今回はサンプルアプリをネット上に公開するすることを想定したインスタンスを作成しているため、
「インターネットからの HTTPs トラフィックを許可する」「インターネットからの HTTP トラフィックを許可する」の２つもチェックしています。

### ８　ストレージの設定
「ストレージの設定」は初期設定のままで大丈夫です。
![Screen Shot 2022-05-06 at 16.15.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2640031/69994e0d-066c-4fdd-aaea-3b07773ce081.png)


### ９ インスタンスの詳細の決定
「高度な詳細」欄のうち、「終了保護」を「有効化」にしときましょう。
この設定をすることで、誤ってインスタンスを終了（削除）してしまうことを防ぐことができます。
![Screen Shot 2022-05-06 at 16.09.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2640031/0899b2a0-b287-bdf0-93e4-d04c30b9215f.png)

他は初期設定のままで良いでしょう。


### １０　インスタンスを起動
「インスタンスを起動」ボタンをクリックします。
![Screen Shot 2022-05-06 at 17.01.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2640031/ccc9caec-37dc-7910-e6fe-c19c802cdfc6.png)

成功すると以下のような画面になります。
「すべてのインスタンスを表示」ボタンをクリックしましょう。
![Screen Shot 2022-05-06 at 17.03.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2640031/ab8aee26-3e7c-67b3-d935-fea8334a7e94.png)

### １１インスタンス画面でステータスをチェック
インスタンス画面に戻り、「インスタンスの状態」が「実行中」、「ステータスチェック」が「合格しました」となっていることを確認できれば、正常にインスタンスが作成されていることになります。
![Screen Shot 2022-05-06 at 17.08.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2640031/af70f3f9-2a36-2963-36a5-4592c30cfef0.png)

## まとめ
以上、無料枠でサンプルアプリを想定したインスタンス作成の流れを解説しました。

作成するアプリによって、最適な設定は変わってきます。
この記事も含め、ネット上にはたくさんのAWSの情報が存在しますが、最終的には[公式サイト](https://aws.amazon.com/jp/ec2/)を確認するようにしましょう。
AWSは無料枠もありますが、**設定を誤ると意図せず料金が発生したりするので**、注意が必要です。

	
## 参考文献
・[チュートリアル: Amazon EC2 Linux インスタンスの開始方法](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/EC2_GetStarted.html)
・[動かして学ぶ！Python Django開発入門 第2版 - 翔泳社](https://www.amazon.co.jp/%E5%8B%95%E3%81%8B%E3%81%97%E3%81%A6%E5%AD%A6%E3%81%B6-Python-Django%E9%96%8B%E7%99%BA%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-NEXT/dp/479817419X)
・[図解即戦力 Amazon Web Servicesのしくみと技術がこれ1冊でしっかりわかる教科書](https://www.amazon.co.jp/%E5%9B%B3%E8%A7%A3%E5%8D%B3%E6%88%A6%E5%8A%9B-Amazon-Web-Services%E3%81%AE%E3%81%97%E3%81%8F%E3%81%BF%E3%81%A8%E6%8A%80%E8%A1%93%E3%81%8C%E3%81%93%E3%82%8C1%E5%86%8A%E3%81%A7%E3%81%97%E3%81%A3%E3%81%8B%E3%82%8A%E3%82%8F%E3%81%8B%E3%82%8B%E6%95%99%E7%A7%91%E6%9B%B8-%E5%B0%8F%E7%AC%A0%E5%8E%9F/dp/4297108895)