AWSを学ぶ中で必ず押さえておきたいこと

## 0. はじめに
AWS初心者です。
AWSを実際に触ってみて学んだ基礎知識等をまとめておきたいと思います。
ネットワークについての諸々も合わせて書いてきます。
AWSを始める前に押さえておくと(多分)ハッピーになれます。

## 1. AWSとは
- AWS(Amazon Web Services)とは、アマゾンが提供するクラウドサービスの総称です。
- ネットワークを構築してサーバーを立てたり、ストレージ、データベース、AI、IoT等のサービスを利用することができます。
- 従量課金制の料金システムで、使用量や使用時間ごとに料金が発生します。


![aws.png](https://qiita-image-store.s3.amazonaws.com/0/247638/2950cf79-e0e3-086a-3226-5254a346fffe.png)

## 2. 全体像

当記事で登場する用語の全体像です。
以下の全体像と照らし合わせて記事を読んでみてください。

![AWS.png](https://qiita-image-store.s3.amazonaws.com/0/247638/6449b838-3c3c-255b-57a6-635dd65ff0d2.png)

## 3. リージョン

AWSは世界各国の分散されたデータセンターで構成されています。
それぞれの地域に存在するデータセンターのことを<font color="red">**リージョン**</font>と呼びます。
リージョンには以下のようなものがあります。

![リージョン.png](https://qiita-image-store.s3.amazonaws.com/0/247638/b865abb9-7d6c-781c-1a06-cfa68a57652d.png)

また、リージョンには<font color="red">**アベイラビリティゾーン**</font>に分割されています。
アベイラビリティゾーンが地震や洪水唐等の災害を受けても、耐障害性を高める概念です。
AWSを利用する際は、以下のような考慮が必要になります。

- レスポンス性を考慮しユーザーに近いリージョンにする
- 耐障害性を高めるために異なるアベイラビリティゾーンに同じ構成のサーバーをたてる

## 4. VPC (Virtual Private Cloud)

AWSでは<font color="red">**VPC**</font>という領域を作ることで、そこにネットワークを作成できます。
VPCを作る際は、<font color="red">**CIDR表記**</font>でIPアドレスの範囲を指定します。

#### CIDR表記
ネットワーク部のビット長を「/ビット長」で表します。

- 192.168.1.0 ～ 192.168.1.255(ホストが256個)の場合・・・192.168.1.0/24
- 192.168.0.0 ～ 192.168.255.255(ホストが65536個)の場合・・・192.168.0.0/16

## 5. サブネット

VPCにおいて、さらにネットワークを分割したものを<font color="red">**サブネット**</font>と言います。

![サブネット.PNG](https://qiita-image-store.s3.amazonaws.com/0/247638/c0d788e7-8fbc-d1b8-0054-554b328e4e23.png)

サブネットに分割することで、以下のような利点があります。
- 例1・・・社内LANを構築するとき、1階と2階を別のサブネットに分けておくことで、片方のサブネットに障害が起こった場合にもう片方に影響を出ないようにする。
- 例2・・・ 経理部のネットワークだけを分離して、他の部署からはアクセスできないようにし、セキュリティを向上する。


## 6. インターネットゲートウェイ

サブネットをインターネットに接続するには、<font color="red">**インターネットゲートウェイ**</font>を使用します。自身で作成したネットワークに、インターネット回線を引き込むイメージになります。
作成したインターネットゲートウェイはVPCと結び付けます。

## 7. ルートテーブル

TCP/IPでは、ルーターが宛先IPアドレスを見ながら、最も宛先IPアドレスに近いネットワークにパケットを転送していきます。そのため、ルーターが**宛先IPアドレスが〇〇のときはどのネットワークに流すべきか**を知る必要があります。それを設定するものが<font color="red">**ルートテーブル**</font>になります。
インターネットに接続するには、サブネットに対してルートテーブルを作成し、宛先IPアドレスに「0.0.0.0/0」(全てのアドレスを意味する)を指定します。

※VPCを作成した際に、デフォルトでルートテーブルが作成されますが、宛先IPアドレスはローカル(自身)になっています。指定したIPの範囲以外のパケットは破棄されてしまうため、インターネットに接続するには新規にルートテーブルを作成することになります。

## 8. EC2 (Amazon Elastic Compute Cloud)

作成したサブネットの中に、仮想サーバーを構築できます。
仮想サーバーは<font color="red">**EC2**</font>というサービスを使って作成します。
EC2で作成した仮想サーバーを<font color="red">**インスタンス**</font>と呼びます。
このインスタンスに、ApacheやMySQLなどをインストールすることになります。

## 9. セキュリティグループ

<font color="red">**セキュリティグループ**</font>を構成することで、インスタンスに対してセキュリティを設定することができます。
例えば、「ポート22番に対して全ての通信(0.0.0.0/0)を許可する」という設定をした場合、ポート22番を用いているSSHだけがインスタンスに接続できるようになります。
そのため、**必要に応じてセキュリティグループの設定を変える**必要があります。


#### ウェルノウンポート

TCP/IPで使用されるポートのうち、特によく利用されているポートを<font color="red">**ウェルノウンポート**</font>といいます。
0番から1023番までのポート番号が割り当てられていて、以下のようなものがあります。

|サービス           |ポート番号|説明|
|:------------------|:--------:|:---|
|FTP (データ)       |20        |PC間でファイル転送する時に使用<br>※転送されるデータの送受信に使用|
|FTP (コントロール) |21        |PC間でファイル転送する時に使用<br>※ログイン時のユーザ名、パスワード、ファイルの転送方法等の命令と応答などに使用|
|SSH                |22        |ネットワークに接続された機器を遠隔操作するために使用<br>※パスワード情報を含めた全てのデータが暗号化さる|
|Telnet             |23        |ネットワークに接続された機器を遠隔操作するために使用<br>※パスワード情報を含めた全てのデータが暗号化されない|
|SMTP               |25        |メールサーバーにメールを送信し、宛先に転送するときに使用|
|DNS                |53        |ドメイン名からのIPアドレスの名前解決を行うときに使用|
|HTTP               |80        |ブラウザとサーバー間でのHTML等のコンテンツ送受信に使用|
|POP3               |110       |メールサーバーからメールを取り出し、受信するときに使用|
|NTP                |123       |PCに内蔵されているシステムクロックをネットワークを介して同期するために使用|
|HTTPS              |443       |暗号化を利用したHTTP通信を行う際に使用|

## 10. NATゲートウェイ

DBサーバー等はプライベートサブネットに配置すべきなのですが、プライベートサブネットはインターネットの接続が行えません。それを解決するのが<font color="red">**NATゲートウェイ**</font>になります。
NATはIPアドレスを変換する装置で、2つのインタフェースを持ちます。
片方のインタフェースには**パブリックIPアドレス**を設定し、インターネットに接続可能にしておきます。
もう片方のインタフェースには**プライベートアドレス**を設定し、プライベートサブネットに接続します。
このような仕組みをとることで、インターネットへの接続が可能になります。
NATを用いると、プライベートサブネットからインターネットへの接続はできますが、インターネットからプライベートサブネットへの接続はできません。そのため、セキュリティを高められます。

<font color="red">**★注意点★
NATゲートウェイは、加増時間と転送バイト単位の両方で課金されるので、まったく通信していなくても料金がかかってしまいます。
必要がない場合は、NATゲートウェイを削除しておくべきです。**</font>

## 11. おわりに

この記事を書くにあたり、以下の書籍を参考にさせて頂きました。
画像付きでとても分かりやすく、勉強になりました。
＜[Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂版](https://www.amazon.co.jp/Amazon-Web-Services-%E5%9F%BA%E7%A4%8E%E3%81%8B%E3%82%89%E3%81%AE%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF-%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E6%A7%8B%E7%AF%89/dp/4822237443)＞

これからもドンドンAWSを触っていきたいと思います。
他にも追加したい項目がありましたら更新していきます。