AWS ネットワーク

#【AWS ネットワーク】
AWSのネットワーク設計はとても重要。
TCP/IPなど、ネットワークの知識ももっとつけていこう。

記事について、誤りや不足している点がございましたらご指摘頂けますと幸いです!!

##AWS上でのネットワーク設計のポイント
- 物理設計の検討、構築が不要
- マネージドサービスによる運用負荷の軽減
- プログラマブルな作成、管理、展開
    - 特にCloudFormationでテンプレート化（コード化）して、クラウドのメリットが享受!!

##VPC（Virtual Private Cloud）
- AWSの仮想ネットワークサービス
- 地域（リージョン）毎にアカウントと紐づいた仮想的なネットワーク空間
    - リージョンは、複数のAZから構成される。 
    - 基本的に東京リージョンを使用する。
- 1アカウントで複数のVPCを作成することも可能。（1リージョンあたりに作成できる上限は5個）
    - dev環境、stg環境とprod環境でVPCを分けることがスタンダード。
    - 組織によっては、devアカウント、stgアカウント、prodアカウント、と、アカウントをAWS organizationで分けてしまうパターンもある。
        - くろかわさん　ありがとうございます!
- ※ **前提**：VPCの内部のことをローカルという。

###VPCのCIDRブロックは /16　
- CIDRブロックは、/16 が推奨されている。
    - （大きさは /28 から /16 の範囲で使用できる。）
    - （オンプレだと/16 は比較的大規模なシステム）
- 1度作成すると、変更不可のため大きめにしておく。
- **オンプレミスや他のVPCのレンジと重複しないようにしておく。**
    - 重複していると他のVPCとのVPCピアリングができない。
    - 将来的にハイブリッドクラウドの構成をとる時、レンジが被ると予期せぬ不具合となる。
        - 設計段階で注意しておく。

##VPCの主な機能
- **サブネット**：VPC内のネットワークを細分化する。
- **インターネットゲートウェイ**：インターネットとの接続をおこなう。
- **ルートテーブル**：ネットワークの通信経路を設定する。
- **セキュリティグループ**：セキュリティ（ファイアーウォールのようなもの）

###サブネット
- VPCのCIDRブロックの範囲からIPアドレスレンジを切り出す。
    - /24 が標準的
- サブネットはAZの中に作成される。
    - 高可用性のために2つ以上のAZの使用をしよう。
    - **マルチAZ**
- サブネット分割は、インターネットアクセスの有無で決める。
    - パブリックかプライベートか。

####パブリックサブネットとプライベートサブネットの違い
- インターネットに接続できるかどうか。
    - インターネットゲートウェイへのルーティングの有無で決まる。
- **パブリックサブネット**：
    - ルートテーブルにインターネットゲートウェイへのルーティング有り。
    - デフォルトゲートウェイにインターネットゲートウェイが設定されているサブネット
- **プライベートサブネット**：
    - ルートテーブルにインターネットゲートウェイへのルーティング無し。
    - デフォルトゲートウェイにインターネットゲートウェイが設定されていないサブネット

```
パブリックサブネット　：　外部公開しても良いAWSリソース
プライベートサブネット　：　セキュリティレベルの高いDBなどのAWSリソース
```

###インターネットゲートウェイ
- VPC内からインターネットへ疎通するには、インターネットゲートウェイが必要。
    - **0.0.0.0/0**：インターネットに向かう通信が飛ぶ。
    - デフォルトでVPC内宛ての経路は作成済み。

###ルートテーブル
- IPアドレスの範囲をどの方向に向けるかを設定する。
- サブネットに関連付けて使用する。
    - 基本的には、サブネット間の通信経路を設定
        - 正確には、サブネット間に限らず、サブネットとAWSサービスや、サブネットとインターネットなど様々なルーティングを設定することがある。
        - くろかわさん　ありがとうございます!
    - サブネットから外に出る通信をどこに向けて発信するかルールを決める。

###セキュリティグループ
- 仮想ファイアーウォールサービス
    - どのポートを許可するか。
    - 許可の判断は累積的に判断される。
- インスタンスレベルで必要な通信を許可
- ホワイトリスト型
    - 許可のみ指定可能
    - インバウンド・アウトバウンドに対応
- ステートフル
    - 戻りトラフィックは自動的に許可

##その他
- **NATゲートウェイ**
- **Elastic IP address**
- **VPCピアリング**
- **VPCエンドポイント**

###NATゲートウェイ
- プライベートサブネットからインターネット接続を可能とする。
    - セキュリティを担保して、プライベートサブネットからインターネットに接続可能にする
    - パブリックサブネットに配置し、ルーティングの設定をする。
- アウトバウンドは出来るがインバウンドは出来ない。

###EIP（Elastic IP address）
- インターネットと通信が出来る静的なIPアドレス
- インスタンスが終了、停止、再起動しても変わらない同一のアドレス
- 無料で利用できるがどこにもアタッチしていない場合1時間あたり1円程度で料金が発生する。
    - 意図せぬ課金とならないように消し忘れに注意する。
- インターネット接続用のIPアドレスはパブリックIPかEIPのどちらか1つ。
    - EIPアドレスは他のインスタンスに付け替え可能。

###VPCピアリング
- VPCの機能の1つ
- VPC同士を接続するサービス
    - プライベートIPでVPC同士を接続する。
    - **dev環境、stg環境とprod環境など、目的別にVPCを分割するのがベストプラクティス**
        - 1つのアカウントでVPCを分割するパターンは多くの企業で採用されている。
    - また、複数アカウントを使うパターン（クロスアカウント）も多い。
        - こちらも参考にして、頭に入れておくと良い。
        - くろかわさん　ありがとうございます!
- 2つのVPC間でルーティング、異なるAWSアカウントのVPCとも接続可能
    - ※ 同一リージョン内のみ
- IPアドレス範囲は重複できない。

###VPCエンドポイント
- VPC外のAWSサービスとの接続
    - 仮想ネットワークサービス
    - S3などのリージョンサービスにVPCからプライベートに接続することができる。

##参考
- [CloudTech](https://aws-cloud-tech.com)
- [クラウドエンジニア(AWS)ロードマップ2021](https://qiita.com/KurokawaKouhei/items/4e9aa3b526f3f233bf85)
- [AWS のネットワーク設計入門](https://d0.awsstatic.com/events/jp/2017/summit/slide/D2T3-5.pdf)

## おわりに。
この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3436353930362f30303633376536332d353333392d316238332d633363312d3732306539353137346563302e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472549/ecaf8e94-37a6-cf4c-fb6d-1c106e0034c1.png)