AWS ECSハンズオンやってみた

# 初めに
AWS SAA学習時にAWS ECSについて触れたことがあり、おさらいとはなるが、改めてECSのハンズオンをやってみた。

# ハンズオン教材
https://pages.awscloud.com/rs/112-TZM-766/images/AWS_CICD_ECS_Handson.pdf

ECSの教材を探していたが、Cloud9を使い初心者でも挑戦しやすい内容のため、今回こちらでECR/ECSのコンテナ環境に触れてみたい。(Fargateはここでは扱わないこととする。)

# ハンズオン
## Cloud Formation上でネットワーク構築を実施
テンプレートは事前準備にあるハンズオンコンテンツをダウンロード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/c5e8038d-2c71-73c8-d7e7-6ff828a0a2d1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/c87de91e-8322-a1d1-dd48-733fda951887.png)

オプションはデフォルトのままとする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/9f5680c2-f6b2-9ffd-ad44-a5cca8799925.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/65af9492-378f-e9e4-5640-ad10ab162b14.png)
作成されたのを確認する。
![Screenshot at Sep 23 21-29-16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/e94402e0-3337-1443-2f76-a08a79f414ce.png)

## ALB セキュリティグループ作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/e323b37c-d5ec-8d34-2aa6-6335d27558f3.png)

![Screenshot at Sep 23 21-35-25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/eeb5b7a2-7965-68c2-864b-0fbe54a3623a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/95956da1-4ca1-48c4-df80-f2daa98508ee.png)
## ALB作成
GUIが変わっているから注意。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/8209fd8c-12e4-f7e1-3d31-690cc7f5b88e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/d7facd48-b123-8394-1694-762477fea2a0.png)

![Screenshot at Sep 23 21-50-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/05bac2f3-699f-6c87-cb3a-52f7980d8958.png)

![Screenshot at Sep 23 21-51-42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/a26770c5-c8da-c1fa-47cc-eb5cd1a00586.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/ef750d9d-08dc-071d-ecba-f8728bfae2c4.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/5b61cf6c-d6f3-b027-42cb-4912f7542449.png)
作成されていることを確認する。
![Screenshot at Sep 23 22-05-01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/03093db1-1da7-23a5-641a-79874d6f689c.png)
不要なリスナーとターゲットグループは削除。
![Screenshot at Sep 23 22-08-15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/66d7050e-c620-9c5c-2a3c-79c974841ecc.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/2dbe91cf-3c07-fd02-f66d-262768242e85.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/189bd6b6-3fe4-aad8-0d99-a13e2a3dd508.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/fbec45ea-838e-3d65-029d-2b329b31f4a0.png)

## ECRリポジトリ作成

![Screenshot at Sep 23 22-20-13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/43e78ce5-7cae-8d73-2844-bbdbaa206ea7.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/9f636685-cbf5-950f-dacd-fdb6ae63ed80.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/ea28bfd7-b1d1-bff8-2610-8df81b579cb3.png)

![Screenshot at Sep 23 22-37-19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/13da9728-74f3-e230-0c62-ad77bd0dae8c.png)


ECRリポジトリ作成後のプッシュコマンドの手順をメモしておく。

## Cloud9作成

![Screenshot at Sep 23 22-20-13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/3d228d33-81a3-3a39-1771-1b3e17f2a507.png)

先ほどメモしたコマンドでgit環境を作成する。

```
git config --global user.name ”peach” 
git config --global user.email yourname@abc.com 
git config --global credential.helper '!aws codecommit credential-helper  $@' 
git config --global credential.UseHttpPath true
```

Docker fileの作成(スクショでは間違って語尾にダブルクオテーションが入っているが、不要)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/bf8a0e80-59b8-344e-663a-f81f9e6cb7aa.png)

最初にindex.phpファイルのみ作成し、srcディレクトリを作成が忘れたためファイルがないとエラーが出たが、srcディレクトリ配下にファイルを置くことで作成することができた。
```
cloud_user:~/environment $ docker build -t xxxx .
Sending build context to Docker daemon  9.827MB
Step 1/2 : FROM php:7.4.0-apache
 ---> xxxx
Step 2/2 : COPY src/ /var/www/html/
COPY failed: file not found in build context or excluded by .dockerignore: stat src/: file does not exist

cloud_user:~/environment $ docker build -t xxxx .
Sending build context to Docker daemon  9.828MB
Step 1/2 : FROM php:7.4.0-apache
 ---> xxxx
Step 2/2 : COPY src/ /var/www/html/
 ---> xxxx
Successfully built 4075ce9e9763
Successfully tagged xxxx:latest
```

ECR作成時のプッシュコマンドを実行する。

```
cloud_user:~/environment $ aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin xxxx.dkr.ecr.us-east-1.amazonaws.com
WARNING! Your password will be stored unencrypted in /home/ec2-user/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
```

※タグづけとプッシュコマンドも実施する。

ECRコンソールでイメージが作成されていることを確認。

![Screenshot at Sep 23 23-09-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/822a0cf2-852c-c32d-f44c-9db65dbc2f63.png)

![Screenshot at Sep 23 23-12-59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/387b4b7d-049a-6f5b-37b4-f741ed812388.png)