cloud9을 사용하려면 루트 계정 사용자가 권한을 줘야함
route53fullaccess + route53resolverfullaccess + cloud9user 이거 
현재 vpc를 구축하면서 부여한 권한은 다음과 같음

여기서 IAMReadOnlyAccess는 IAM 내용을 읽을 수 있음 따라서 이 권한을 부여해야 각각의 ㅅㅏ용자가 어떤 권한을 가지고 있는지 볼 수 있음
vpc 삭제할때는 연결된 vpc는 삭제가 안되므로 역순으로 하나하나 삭제해야 함
cloud9에서 붕어빵 틀을 만들어 냄 -> 이 붕어빵 틀을 가지고 ecs가 붕어빵(컨테이너)를 찍어 내는 것 !
이 과정에서 트래픽이 많이 발생하면 로드밸런서가 트래픽을 잘 나눠줌

이름은 ecs-workshop로 만들고, 새로운 인스턴스, 인스턴스 크기는 small, vpc 설정에서 어제 만든 vpc와 public-subnet-1을 선택하고 생성 !

cloud9이 제대로 생성된 걸 볼 수 있음

성공적으로 ec2 인스턴스가 생성된 걸 볼 수 있음
root 권한 사용자가 iam:ListInstanceProfiles 역할을 부여한 후 
작업 -> 보안 -> IAM 역할 수정 -> IAM 역할을 fullaccessrole로 바꿔줌

cloud9 -> 앞서 만든 ecs-workshop을 선택 후 cloud9 열기

그랬더니 이렇게 계속 connecting 뜸 ! ㅠ
json 파일에 route53resolver:* 이라는 권한과 AWSCloud9SSMInstanceProfile 권한을 부여하고 다시 cloud9과 인스턴스를 생성한 뒤 cloud9을 다시 열면 제대로 열림 ! 

이 시점에서 내가 가지고 있는 권한 목록은 아래와 같다.
이 중 encore_test 정책을 json으로 열면{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "iam:ListRoles", "iam:ListInstanceProfilesForRole", "iam:PassRole", "iam:CreateRole", "iam:AttachRolePolicy", "iam:ListInstanceProfiles", "iam:PutRolePolicy", "iam:GetRole" ], "Resource": "*" }, { "Sid": "ECRAccess", "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:GetRepositoryPolicy", "ecr:DescribeRepositories", "ecr:ListImages", "ecr:DescribeImages", "ecr:BatchGetImage", "ecr:InitiateLayerUpload", "ecr:UploadLayerPart", "ecr:CompleteLayerUpload", "ecr:PutImage", "ecr:DeleteRepository", "ecr:DescribeRepositories", "ecr:CreateRepository" ], "Resource": "*" }, { "Sid": "ECSAccess", "Effect": "Allow", "Action": "ecs:*", "Resource": "*" }, { "Sid": "Route53", "Effect": "Allow", "Action": [ "route53resolver:*", "ec2:DescribeSubnets", "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:ModifyNetworkInterfaceAttribute", "ec2:DescribeNetworkInterfaces", "ec2:CreateNetworkInterfacePermission", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs", "ec2:DescribeAvailabilityZones" ], "Resource": [ "*" ] } ] }
오른쪽 상단 톱니바퀴 -> AWS settings -> credentials -> 빨간색으로 변경

/.aws 폴더에 credentials 파일이 있을 경우 삭제
aws configure set default.region us-east-2 -> 지역 설정
aws configure get default.region -> 지역 설정 됐는지 확인
나는 오하이오로 되어있어서 region뒤를 us-east-2로 설정함 

aws ecr create-repository --repository-name "django"
django라는 이름의 ecr 레포지토리를 생성함

Amazon Elastic Container Service -> amazon ECR -> 리포지토리에서 생성된 레포지토리 목록을 확인할 수 있음

cloud9에선 생성이 됐는지 레포지토리 목록에서는 조회가 안됨.
따라서 권한을 부여해야함 
account ID 확인
aws sts get-caller-identity --query Account --output text
-> 나의 경우 나의 account ID인 12자리 숫자가 출력됨
docker client 인증
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin 391518741196.dkr.ecr.us-east-2.amazonaws.com/django
-> 여기서 391518741196.dkr.ecr.us-east-2.amazonaws.com/django 이 부분은 직전에 만든 django 레포지토리에서 가져온 것
nginx-web 다운받기
cd /home/ec2-user/environment
git clone https://github.com/brayanlee/nginx-web.git

docker build
cd nginx-web
docker build -t nginx .

nginx 레포지토리 생성
aws ecr create-repository --repository-name "nginx-hg"

docker 이미지 설정
docker tag nginx:latest 391518741196.dkr.ecr.us-east-2.amazonaws.com/nginx-hg:latest
-> docker 이미지를 다른 이름으로 태그하는 명령어(nginx:latest -> 391518741196.dkr.ecr.us-east-2.amazonaws.com/nginx-hg:latest)
docker 이미지를 ECR에 push
docker push 391518741196.dkr.ecr.us-east-2.amazonaws.com/nginx-hg:latest
-> 391518741196.dkr.ecr.us-east-2.amazonaws.com/nginx-hg:latest라는 이름의 docker 이미지를 ECR 레포지토리로 푸시하는 명령어, 푸시한 이미지는 ECR 레퐂지토리에서 관리되고 이후 클러스터 또는 다른 환경에서 해당 이미지를 사용 가능함