AWS Fargate, ECSを用いたコンテナ運用設計、構築をしてみた。~ネットワーク編~

# 前記事
[AWS Fargate, ECSを用いたコンテナ運用設計、構築をしてみた。~アーキテクチャ考察~](https://qiita.com/bakuchiku/items/dab7e5c14553217cd6ff#%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3%E8%A8%AD%E8%A8%88 "AWS Fargate, ECSを用いたコンテナ運用設計、構築をしてみた。~アーキテクチャ考察~")
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3138153/94434c3e-55f4-5071-d0f2-9cb1add74f5d.png)

# 今回やること
前回の記事でアーキテクチャを考えました！！
今回はアーキテクチャを構築するためのネットワーク、セキュリティグループを作成していきます。

# アーキテクチャ精査
前回作成したアーキテクチャに以下サブネットを追記します。
自分はCloud9を使用してALB→Fargateの疎通確認やDBの設定、ECRへのプッシュを行いましたので、Cloud9用のサブネットを追加しています。
赤線はCloud9から接続する必要があるルートです！このルートを通れるようにセキュリティグループを設定しないといけません。（自分はここ設定し忘れてテストで嘆いてました。）
* Interfase Endopoint用Private subnet(ECR, CloudWatch, Secret Manager用)
* 管理コンソール（Cloud9）用Public subnet
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3138153/728ec8e2-2d8b-d6c1-aea4-28a45a53d797.png)


# ネットワーク作成
とりあえずこいつ↓を作っていきます！！
Gateway endpointとInternet GatewayはVPC作る時に自動で作成できるようになっているようですね、便利〇
初めてAWS触ったときにEC2入れない～（Internet Gateway作ってないだけ）ってなった記憶が蘇ります。笑笑

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3138153/531e0381-1bfd-7e98-a389-85fa70d4ae17.png)

## VPC作成
「VPC」→「VPCを作成」からVPCを作成していきます。
![1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3138153/31deb667-81bf-2a2e-3bdd-00351489ef34.png)
![2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3138153/d73085c4-6347-eb0e-36ba-2ba3f24d5658.png)

はい。これでここまで作成完了です。早い。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3138153/d64cb1d3-a419-ee02-07aa-212af644c0b2.png)


足りない分（Interfase Endopoint用Private subnet）を作成していきます。
![9.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3138153/f6df12f4-92a8-37d2-0fc5-54ed7e5f55e6.png)

はい完成。👐
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3138153/d989dbe3-67db-1b20-01e2-e0a0b7db1219.png)

# セキュリティグループ作成
セキュリティグループを作成していきます。
今回はアウトバウンドルールは全て「0.0.0.0/0」を許可して、インバウンドルールを最小限に設定していきます。
（本番環境ではアウトバウンドも絞った方が良いとは思います）

## インターネットから接続されるALBのセキュリティグループ
この部分ですね〇
ネットワークからの接続用にインバウンドを許可します。
（接続元PCのIPアドレスを設定した方が良いです！！！！）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3138153/c464a5ad-fa71-ef03-abdd-d59aa18d8908.png)

「VPC」→「セキュリティグループ」から設定します。
![4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3138153/d1fd7f05-6223-831b-d8c8-00ba39f5c341.png)

## フロントエンドのセキュリティグループ
この部分。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3138153/4db5d707-fd28-4751-673c-ded6d07d45a3.png)


先ほど作成したALBのセキュリティグループを指定しインバウンドを許可します。
作成時にスクショ取り忘れていたので編集画面ですm(__)m
![5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3138153/ce03c2c7-8fd0-563c-52bc-1a52e5fec622.png)

## Cloud9のセキュリティグループ
ここ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3138153/84f319a1-5ca9-0855-8411-7a276f8bf4c4.png)

特にインバウンド設定する必要はありません。
（AWSコンソールから直接操作するため）
![6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3138153/8fa38ff5-9891-8429-3832-b84a7e34776e.png)

## 内部ALBのセキュリティグループ
これ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3138153/f40e920e-4fcf-1a52-c008-21e58fc937d4.png)

ここも作成時にスクショ取り忘れていたので編集画面ですm(__)m
Cloud9で疎通確認を行うため、Cloud9からのインバウンドも許可しています。
フロントエンドからのインバウンドが2種類あるのは、後で設定するBrue/Greenデプロイメントのためです。
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3138153/99087679-2c2e-afce-df2d-896305753c18.png)


## バックエンドのセキュリティグループ
ここー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3138153/7706fbd2-60e9-53c0-2025-9d39edcc3b35.png)

先ほど作成した内部ALBからのインバウンドを許可します。
![7.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3138153/4270c70f-9641-f0a2-76a2-faf606d917fb.png)

## DBのセキュリティグループ
DBです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3138153/cf30664b-04f6-c36e-ace8-5260ec0d66e8.png)

DB接続なのでポート番号が「3306」になります。
フロントエンド、バックエンド両方から接続予定なので、両方のインバウンドを許可します。
Cloud9からDBを操作するので、Cloud9からのインバウンドも許可します。
![8.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3138153/08151d46-5921-8a3d-a66c-b5f83b274bd7.png)

## Intarface Endpointのセキュリティグループ
最後です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3138153/12c7a9a7-3e8d-f3cf-105f-802c0668c177.png)

こちらはCloud Watch, ECRへ接続する必要があるものが通ります。
フロントエンド、バックエンド、Cloud9からのインバウンドを許可します。
Cloud9からHttps通信する可能性を考え、Http, Httpsの両方を許可しています。
![https.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3138153/7d32531a-0452-6c64-35a1-d747b0821c91.png)

# まとめ
ネットワーク、セキュリティグループ周りの設定は以上になります！！
ここにコンテナ環境を構築していきます！！
ここら辺は先にしっかり定義して作成しないと後で後悔します。（体験談）

次回からコンテナ環境構築に入っていきますーー！！
今回は以上です～～。

次↓
[AWS Fargate, ECSを用いたコンテナ運用設計、構築をしてみた。~ECRへのビルド~](https://qiita.com/bakuchiku/items/6ffd113fa869375d78ab "AWS Fargate, ECSを用いたコンテナ運用設計、構築をしてみた。~ECRへのビルド~")