brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Jun 07. 2020

 10탄- ECR이용하여  ECS로 사이트를 띄워보자

실습 일부 가능, 도커 이미지 별도 준비 필요함

ECR에 있는 도커 이미지를 이용하여,  ECS로 사이트를 띄워보자

ECR (Amazon Elastic Container Registry) 사용

관리형 AWS 도커 레지스트리 서비스 사용




순서

<1> 선행 작업 - 도커 이미지 준비

<2>  ECR  리포지토리를 만들자

<3> 리눅스  EC2 접속하기

<4> 도커 이미지 pull 

<5> 새 이미지로 ECS  만들기

<6> 서비스 만들기



<1> 선행 작업  


여기 실습에서 도커 이미지는 별도로 준비해야 한다.


1

도커 이미지 만들어  ECR 에 올리자 

https://brunch.co.kr/@topasvga/1363


2

일반 계정으로 ECS사용시 할당 해야 할 권한

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_managed_policies.html



3

주요 작업 

ECR 리포지토리 만들고

도커 이미지를 가져오고

도커 이미지를 AWS에 올리자. ECR 에 Image에 있어야 한다.

새 이미지로 ECS만들자








<2>  ECR  리포지토리를 만들자

EC2InstanceRole 이 필요 하다.


1

Services > ECR >  리포지토리  > 리포지토리 생성 >  리포지토리 이름

seo-repo

리포지토리 생성


2

URI 복사해 놓자.                              

5555555555.dkr.ecr.us-west-2.amazonaws.com/myrepo            


3

seorepo 클릭  >  왼쪽 >  권한 >  편집  > 설명문 추가 > 설명문 이름

seo-statement


4

> IAM 개체 

EC2InstanceRole  

// role이 필요하다.

정책을 만들고 ec2  role을 만든다.


5

> 작업 

모든 이름 선택

 > 저장




4


EC2InstanceRole 의 정책 내용 4가지


EC2 읽기

ECR  읽기

ECS 쓰기

Cloudwatch log에 저장하므로  쓰기



5

EC2InstanceRole  role 필요


{

    "Version": "2012-10-17",

    "Statement": [

        {

            "Effect": "Allow",

            "Action": [

                "ec2:DescribeTags",

                "ecs:CreateCluster",

                "ecs:DeregisterContainerInstance",

                "ecs:DiscoverPollEndpoint",

                "ecs:Poll",

                "ecs:RegisterContainerInstance",

                "ecs:StartTelemetrySession",

                "ecs:UpdateContainerInstancesState",

                "ecs:Submit*",

                "ecr:GetAuthorizationToken",

                "ecr:BatchCheckLayerAvailability",

                "ecr:GetDownloadUrlForLayer",

                "ecr:BatchGetImage",

                "logs:CreateLogStream",

                "logs:PutLogEvents"

            ],

            "Resource": "*"

        }

    ]

}




<3> 리눅스  EC2 접속하기




<4> 도커 이미지 pull 


ECR  리파지토리에서 ECS  이미지 가져오기

1

docker pull amazon/amazon-ecs-sample



2

형식

REPOSITORY=your-repository-uri  (받아놓은 리포지토리 링크 )

실행

REPOSITORY=111199397329.dkr.ecr.us-west-2.amazonaws.com/myrepo


3

태그

docker tag amazon/amazon-ecs-sample:latest $REPOSITORY


4

로그인

EC2_REGION=`wget -q -O - http://169.254.169.254/latest/meta-data/placement/availability-zone | sed s/.$//` `aws ecr get-login --region $EC2_REGION --no-include-email`




5

PUSH하기

docker push $REPOSITORY



이미지 만들고 Push  하기

https://brunch.co.kr/@topasvga/1363



6.  aws 에서 확인


ecr > 리포지토리 > myrepo 클릭 > images 에  이미지가 있는지 확인





<5>  새 이미지로 ECS  만들기


1

작업 정의하기


Serives > ECS > 작업 정의  > 새작업 정의 생성  > EC2 > Next 


맨아래  Configure JSON


// JSON 코드

// YOUR-REPO URI 수정하기  ,

581442942746.dkr.ecr.us-west-2.amazonaws.com/myrepo

> 생성




<6>  서비스 만들기


1

Clusters  >  ECSClusters 클릭  >  생성  > Ec2  > 서비스  이름

seo-serivce1

Number of task

1

다음



2

로드 밸런서 유형

Network Load Balancer

Service IAM role

ecsServiceRole


로드밸런서 추가

80:TCP

> 다음 

> 다음

> 서비스 생성




3

작업 결과 확인하기

세부정보 탭 보기

작업 탭  보기

이벤트 탭 보기



4

세부정보 탭  > 대상 그룹 이름  클릭 > 대상 탭 보기

그룹 세부정보 탭  보기 >  MyLoadBalancer  클릭 




5

load balancer  > DNS네임 복사




6

사이트 접속





<7>  참고


일반 계정으로 ECS사용시 할당 해야 할 권한

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_managed_policies.html


https://docs.aws.amazon.com/ko_kr/AmazonECR/latest/userguide/what-is-ecr.html


https://aws.amazon.com/ko/ecs/features/


https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-install-extras-library-software/


https://brunch.co.kr/@topasvga/1230


감사합니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari