AWSでネットワーク構築

# AWSでネットワークを構築するには

AWSでネットワーク構築するための、ざっくり大まかな手順になります。

## ①AWSアカウントの作成

[AWS](https://aws.amazon.com/jp/free/?gclid=CjwKCAiA65m7BhAwEiwAAgu4JPOyXvNCTuHbC-APEmgANdxGfVtnefFzqiyT5wpBOqWn6ukY_t4IkhoCGAYQAvD_BwE&trk=8a8e7906-914d-4577-93a2-d09e75ae5941&sc_channel=ps&ef_id=CjwKCAiA65m7BhAwEiwAAgu4JPOyXvNCTuHbC-APEmgANdxGfVtnefFzqiyT5wpBOqWn6ukY_t4IkhoCGAYQAvD_BwE:G:s&s_kwcid=AL!4422!3!487544183224!e!!g!!aws%20%E7%84%A1%E6%96%99%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88!11772965715!117413644991&all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc&awsf.Free%20Tier%20Types=*all&awsf.Free%20Tier%20Categories=*all)よりアカウントを作成する。

無料範囲については同ページに記載されているため、期間内・範囲内であれば無料で触ることができる。

初期設定や全体管理時はルートユーザーで行うが、基本的には学習目的だとしても`IAMユーザー`を作成して作業するのがベストプラクティス。

IAMユーザーのポリシーは自分で設定することもできるし、既に用意されてるものを指定することも可能。
学習始めの場合でどう設定するか迷ったら、AdministratorAccess（管理者権限を持つIAMユーザー）等にしておくのがおすすめ。

## ②VPC作成

VPCとは仮想ネットワーク環境でAWSリソースを起動できるサービスのこと。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3763202/290144cf-625c-3d02-df36-5616870ba9bc.png)

ネットワークで用いる[IPアドレス](https://qiita.com/futeiki_kcm/items/63c543ac9f3e1fcf2c6b)の範囲（CIDRブロック）を適切に定める。

:::note warn
VPCの操作対象となるリージョンも設定しておくこと。
リージョンとはAWSのグローバルクラウドインフラストラクチャを地理的に捉えた概念のこと。
:::

## ③サブネット作成

VPCを作成したあとに、さらに分割したネットワークのことを`サブネット`という。
基本的には割り当てられたCIDRブロックのまま使わずに、サブネットを作成して使用する。（分割したCIDRブロックのこと）

例えばだが、社内セキュリティの関係で部署によりアクセスできるネットワークを分離したいとき等にも利用できる。

サブネットでは、インターネットからアクセスすることを目的とした`パブリックサブネット`と、内部アクセス用の`プライベートサブネット`がある。

サブネットに`AZ（アベイラビリティゾーン）`を任意指定もしくはランダムで設定することができるが、複数のサブネットを作成する際に、異なるAZにサブネットを配置しておくことで障害等が起こったときでも片方のサブネットには影響が及ばない、という対策を行うこともできる。

## ④ネットワークACL設定

ネットワークACL（Network Access Control List）は、VPC内のサブネットに対して適用されるセキュリティルールのこと。

サブネット単位でトラフィックの許可・拒否を制御するステートレスなファイアウォールで、サブネット内の全てのリソースに影響がある。

ルール番号が小さいものから判断され、最初に一致したルールが適用される。

これによりアクセスの許可・拒否を明示的に設定することができる。

## ⑤インターネットゲートウェイアタッチ

`インターネットゲートウェイ`とはVPCとインターネットとの間の通信を可能にするためのもの。

VPCにおいて、サブネットをインターネットに接続するにはインターネットゲートウェイを作成する必要がある。

作成後、対象のVPC領域と結びつけるためにアタッチすること。

## ⑥ルートテーブル作成

ネットワークにデータを流すために`ルートテーブル`を作成する必要がある。

各サブネットごとにルートテーブルを設定することができる。

設定として、何も設定されていないときはデフォルトの転送先となっているが、このことをデフォルトゲートウェイと呼ぶ。

ただし、ルートテーブルの設定をデフォルト以外で行いたいたときは、デフォルトのルートテーブルは触らず、新しいルートテーブルを作成するようにすること。

VPCの領域全体に適用されているデフォルトなため、変えることによって他のサブネットに影響でてしまう可能性もあるため。

### ルートテーブルって？

データはパケットという単位で送受信される。
それぞれのパケットにはヘッダー情報とデータの実体が含まれており、どこからどこに送るデータなのかを区別することができる。

ネットワーク機器のルーターが、パケットに含まれている宛先のIPアドレス情報をもとに、宛先IPアドレスに近い方のネットワークへと次々にパケットを送っている。

だが、どの宛先IPアドレスがネットワークに近いかがわからないとパケットが到達しないことがある。

そんなときの、宛先IPアドレスがどうだったらどのネットワークに流すのか、という設定を行うのが`ルートテーブル`である。

:::note warn
宛先アドレスは「ディスティネーション」
ネットワーク先は「ターゲット」等という。
:::

## まとめ

__①AWSアカウントの作成__
ルートユーザーで最初に設定し、その後IAMユーザーを作成作業するのがベストプラクティス。

__②VPC作成__
CIDRブロックを設定し、適切なリージョンを選択。

__③サブネット作成__
必要な数のサブネットを作成。
プライベート・パブリックを分け、複数のAZにまたがる配置だと障害対策となる。

__④ネットワークACL設定__
サブネット内のトラフィックを制御するためにACLルールを設定。

__⑤インターネットゲートウェイアタッチ__
VPCとインターネットを接続するために作成してアタッチ。

__⑥ルートテーブル作成__
各サブネットに適切なルートを設定。

## 参考サイト

- [【超初心者向け】AWSの基本的なネットワークを理解しよう](https://baresupport.jp/blog/2024/02/06/427/)
- [【2022年版ベストプラクティス】AWS IAMまとめ](https://qiita.com/c60evaporator/items/0121399880625cc1de51)
- [AWS Internet Gatewayとは？初心者にもわかりやすく説明します](https://www.openupitengineer.co.jp/column/it-technology/8362)
- [IPアドレスやNATについて](https://qiita.com/futeiki_kcm/items/63c543ac9f3e1fcf2c6b)