はじめてEC2の環境構築をしてみた。超ざっくりまとめてみた。


今回、AWSの基礎を学ぶ目的でEC2の環境構築と自分のPCから接続まで行いました！

細かい作業過程は割愛しますが、EC2環境構築で理解した基本構成の概要を自分の理解を深めるために、超ざっくりと基本要素をまとめます。

これを見れば、何の目的のために何を作るのか、一目で思い出せるはず！

また、この記事が、これからAWSの基礎学習を始める方の理解の助けとなり、AWSを触るハードルを下げる助けとなれば幸いです。みなさん頑張りましょう！
<img width="200" alt="qiita-square" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1038334/4c9bb587-0a02-c31b-c5e5-7ce4a4ab7dcd.png">

なお、AWSの学習は、[AWS CloudTech](https://aws-cloud-tech.com/)を利用しています。
テンポの良い/わかりやすい動画説明をもとに、気軽に実践を積み、自分の血肉とできるオンラインスクールです。
コミュニティも存在し、Slackで会員通しの情報交換/質問も気楽にできます。
<img width="100" alt="qiita-square" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1038334/8889d9eb-2c72-293d-fda8-73dbd95eb1ab.png">

書籍を購入するような値段で学習ができ、とてもお得です。(個人的な感想です)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1038334/1b330d17-6e3f-50ab-d6f1-2a96300cd626.png)

前置きは、これまでとして、そろそろ始めます。

---
- 説明を極力シンプルにするために、AWSのアカウント作成、IAMユーザの登録は完了している状態から始めます。
- 作図には [AWS 公式アイコンセット](https://aws.amazon.com/jp/architecture/icons/)を利用してます
- 全般的に概念的な説明のみとしています。
- 詳細なオペレーションを知りたい方は、[この動画](https://aws-cloud-tech.com/?sfwd-topic=%e3%80%90vpc%e8%ac%9b%e5%ba%a74%e3%80%91%e3%83%87%e3%83%a2-%e8%87%aa%e5%ae%85pc%e3%81%8b%e3%82%89ec2%e3%81%ab%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e3%81%97%e3%82%88%e3%81%86%e3%80%902639%e3%80%91)を参照して下さい。


最小限の構成要素での作り方
---

超ざっくりと説明すと、以下を行うだけです。
 1. 自分用のネットワークを確保する
 2. サーバを作成する
 3. 外部からアクセスできるようにネットワークの設定を行う

これだけで、さくっと作れてしまいます。

|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1038334/99989eb8-5b7e-9cfe-a63f-a4842633c778.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1038334/054b0e14-5d18-2c3f-6c76-8fadf500e541.png)|
|:---|:---:|

 1. 自分用のネットワークを確保する
---
AWSマネジメントコンソール(ブラウザ)から以下を作成します。

- 仮想ネットワーク：VPC(Virtual Private Cloud)
- VPC内にサブネット
  
<img width="600" alt="qiita-square" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1038334/e692c90d-645e-0eeb-4141-618401ef163c.png">
上記のようなGUIで初心者でも簡単に作成できます。
  
ここまでで以下構成が作成されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1038334/d32616df-0248-195a-2b0a-3cf517dcd6e3.png)
サブネットは、Availability Zoneを一つ決めてそこに作成します。
Availability Zoneは”データセンタのようなもの”と思ってください。
※最後に説明します

また、今回の説明で記載するCIDERブロック(10.0.0.0/24)は、例の中で仮に設定しておりますので、他の値でも構いません。
※これ以降の記載でも他CIDERブロック(10.0.2.0/24)が出てきますが、それも同様です。

 2. サーバを作成する
---
これもAWSマネジメントコンソールで簡単に作成できます。(EC2インスタンスの作成と言います)
以下を順に指定していきます。

- OS
- CPU/メモリ
- サーバ配置先のサブネット
- ストレージ
- サーバ名  etc.

ここまでで以下構成が作成されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1038334/0ab48488-28c4-2872-1f56-7be0fb9a8be2.png)


 3. 外部からアクセスできるようにネットワークの設定を行う
---
外部からアクセスできるようにするためには以下を実施していきます。

- インターネットゲートウエイを作成し、VPCにアタッチ
- サブネットのルートテーブルへの設定
- EC2インスタンスに対するセキュリティグループの設定

インターネットゲートウエイは、インターネットとのやり取りをする口です。
これを作成し、VPCにアタッチすることで、VPCからインターネットに出入りすることが可能になります。

また、どの宛先の通信の時に、VPC内部でのルーティングとし、どの場合にインターネットへルーティングするかの設定を行うため、サブネットのルートテーブル設定を行います。

最後に、セキュリティの観点からEC2アクセスに関するインバウンド/アウトバウンドルールの設定を行います。(F/W設定のようなものです)
これがセキュリティグループ設定です。

ここまでで以下構成となりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1038334/d0ede33c-4491-4aa5-5735-e1a5bfd96015.png)

以上で完成です。チュートリアルを見ながらやれば、時間もかからずサーバが作れてしまいます。
また一度触ってみると言葉/AWSのコンソールに慣れ、勉強のハードルがぐっと下がります。
壊しても作り直せばよいので、興味がある方は、どんどん触ることをお勧めします。

なお、機密性が高いサーバがある場合は、インターネットに接続しないセグメント(Private subnet)を作成し、そこに置くことをお勧めします。
構成図としては以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1038334/f2bc87db-79b8-73f3-1bae-4aa28dc54f44.png)

これは、[このサイト](https://aws-cloud-tech.com/?sfwd-lessons=vpc%e8%ac%9b%e5%ba%a7)の講座１～４を実施することでハンズオンできます。
ぜひ自分の手を動かして、心のハードルを下げてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1038334/93b027fa-a7bc-c55b-6b93-aac5dac1402b.png)


おまけ－Availability Zone－
--
- Availability Zone(以下AZと記載します)とは、物理的、ソフトウェア的に自律しているデータセンタの集合の単位です。
- AZというのは1つのデータセンタの事を指しているわけではなく、1つのAZは1つ以上のデータセンタから構成されています。
- ただし、同じAZに属するデータセンタ間の通信の遅延は0.25ms未満かつ帯域も十分に太いようです。概念的には1つの大きなデータセンタとみなしても差し支えなさそうですが、実際には複数のデータセンタから構成されていることがあります。
- AZ間の通信遅延は2ms未満になるように設計されていて、実際にはそれぞれのAZは100km以内に立地しているということです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1038334/ad171423-cdab-0acc-f990-aae945ddc673.png)

今回の記事では記載しませんでしたが、データセンタ障害などを考えると、AZをまたいでの冗長化を行う必要がります。
※複数のサブネットを異なるAZ上に作成し、その上にEC2インスタンスを配置しAZをまたいだ冗長化構成をとる