【AWS】AWSでDocker環境を動かす ECS,ECR,Fargate

[前回](https://qiita.com/huntas0624/items/aaea49f66973698e311d)、React+nginxの環境をDockerで作ったので、AWSでコンテナを実行してみたいと思う。

***1\. ECRのリポジトリを作成する***
リポジトリを作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/cc96316a-7f2e-bca9-d04f-b2fa67c4714a.png)
リポジトリ名を入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/330acf42-1b67-181f-49ab-10809c8e4ed6.png)
ここにimageをアップしていく

***2\.プッシュコマンドを入力していく***
プッシュコマンドを表示をクリックして出てきたコマンドをターミナルに入力していく
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/ceaf0c47-cac2-01d2-b32c-6a8b4a5cff90.png)

ここでログインができない人は`aws configure`コマンドを入力して認証を行いましょう

2\. VPCを作成する
名前とIPv4 CIDRブロックを指定します。
IPv4 CIDRブロックは`192.168.0.0/16`を指定したいと思います。
`10.0.0.0/16`でも〇
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/595c8726-41e0-6c17-f9f2-bf4616ef2b4c.png)


3\. サブネットを作成する
AZが1aのサブネットを作成します
VPC IDは先ほど作成したものを割り当て、IPv4 CIDRブロックは`192.168.10.0/24`とします。
アベイラビリティーゾーンはアジアパシフィック東京/ap-northeast-1aを指定します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/49141723-ee1e-24ad-69f2-0e5d1d4d067e.png)

4\. インターネットゲートウェイの作成
インターネットから通信できるようにインターネットゲートウェイを設定します
名前を付けて作成をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/af5dc4da-ccfc-c6c7-28c8-7074689bd088.png)

次にアクションからVPCにアタッチをクリックして、作成したVPCを選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/062a0d87-5ade-9994-b9dd-19d55beb9156.png)

5\. ルートテーブルの作成
名前とVPCを選択し、ルートテーブルを作成します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/c79833ed-ab7b-f59f-9de1-ba8c501989b3.png)

次にルートを編集をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/f645197e-9307-d510-8637-f9dc031ce020.png)

送信先を`0.0.0.0/0`、ターゲットをインターネットゲートウェイで先ほど作成したものを選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/51f4221f-01a7-51ce-d7f9-1efc4387e71c.png)

次にサブネットの関連付けをクリックして編集をクリック、サブネットを割り当てます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/00eb04ac-6601-a367-c6dc-5db9158b0da5.png)

6\. ECSからECRのイメージを起動する
ECSの画面から`クラスターの作成`をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/d7c4a949-22a1-ebdb-b827-e30408726a18.png)

今回はFargateを使用するので`ネットワーキングのみ`を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/ec064021-8d0e-a5a9-72e3-e86af25a3269.png)

次の画面のVPCの作成はチェックを入れない

7\. タスク定義の作成
タスク定義を作成していきます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/e85d5796-99a6-cc43-be2f-7564fda07d8c.png)

Fargateを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/9f43711a-f9b4-00c3-9c82-c70ce7bd0cce.png)

上から
タスクロール：なし
タスク実行ロール：ecsTaskExecutionRole
Cloud Watchにログを残したいため
タスクメモリ：0.5GB
タスクCPU：0.25vCPU
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/71a3e17d-4950-896b-d206-2e95c9133470.png)

コンテナの追加をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/95e1a001-b0cd-59fc-9d48-888cda5b6fe1.png)

コンテナ名とイメージ名を入力します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/e9943663-be3b-a9a0-0047-cf063ec83cea.png)

イメージはECRのリポジトリの↓から取ってくることができます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/4db52ec7-2d10-03a7-df72-34b2da6b1d0c.png)

コンテナポートは80を指定します
Dockerでbuildしたとき`docker run --rm -p 8081:80`とし、コンテナ側のポートが80番なので今回も80番に設定する（らしいです）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/3818d363-b5c2-532b-b45a-18932bcb2009.png)

8\. クラスターとタスク定義を結びつける（サービス）
ECSの画面からクラスター→サービスタブへと移動し、作成をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/288ad64e-cc07-c161-4f78-c753756c2691.png)

上から
起動タイプ：FARGATE
オペレーティングシステムファミリー：Linux
タスク定義：先ほど作成したもの
リビジョン：1(latest)まだ他のものがないので
プラットフォームのバージョン:Latest
クラスター：先ほど作成したもの
タスクの数：1　コンテナが増えると2とかに増やさなくてはならない？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/2e124021-6e38-45dd-53e2-b7df65f1d9bf.png)

VPCとサブネットは先ほど作ったものを割り当て、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/6b0963b0-6d32-de54-bf2d-9ed9c9c64c71.png)

9\. ブラウザから開く
タスクをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/8e700335-9434-b85d-1b8d-821f2991bb5a.png)

ネットワーク→パブリックIPをブラウザに打ち込むと表示されます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/ca1be219-33c8-d72b-7798-7cdcaef46703.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/e6122692-1767-15cb-5f59-5c0cb332491e.png)