Cloud/AWS

[AWS] ECS 생성

dalgong 2025. 1. 23. 08:16
반응형

1. ECR 생성 후 컨테이너 이미지 Push

1) EC2에 docker 설치 및 build

vim Dockerfile

FROM nginx:1.21.1

COPY ./index.html /usr/share/nginx/html/index.html

EXPOSE 80

*COPY 부분 뒤쪽 /usr/share/nginx/html/index.html 경로에 설치, ./경로에 index.html 생성 후 복사

[root@ip-172-20-0-181 ec2-user]# docker images
REPOSITORY   TAG         IMAGE ID       CREATED          SIZE
nginx        testnginx   d74a43f1873c   26 seconds ago   133MB

2) ECR 레포지토리 생성

3) ECR 로그인

 

  • 직접 정책 연결 - AmazonEC2ContainerRegistryFullAccess 연결

  • aws cli 로그인 후 ecr 로그인을 위한 토큰 값 출력
* aws cli 로그인
[root@ip-172-20-0-181 ec2-user]# aws configure
AWS Access Key ID [None]: AKIA4QDS3XNGMBJNAAAA
AWS Secret Access Key [None]: RyiIA7ainkw6dvU1rwZttJ7aTFhdpAAAA/AAAA
Default region name [None]: ap-northeast-2
Default output format [None]: json

* aws cli 토큰 값 : aws ecr get-login-password --region [해당리전]

[root@ip-172-20-0-181 ec2-user]# aws ecr get-login-password --region ap-northeast-2
AAAAAAAAAAFkIjoiSytHSFBMWkduRlVjZFNoVWExU2NaalB5TU1WcERFaUwzbnJTUWcrdGVNUHo0dUc0azZhWTh6WG9yNmtreDlsM243cnRpc1R1ajNQZlFlaXhpNm10emVZbjVyR0prMWNNTVh6NGxCdVJ1azdsb0RsMlVWbDFGZlJlK0F0TVNPeEFCOGFBOXViRGF6eDZ4OHhzdExHQzJ3VUhzLzFWNlY5NkdkV3RQaW9RNlFaWE0rOGF3VGZBQkVHMTdsMTlIMUIybDB0K2J6SSsydVkvbmdLRUpEN0dzWXQ4TWZxSHBNcVlqOGpxNnZmeVRWTEY3UFFuRTZiZWs5c2djeGxoOEJHYjhJVjBzbmU2WlcvYlJBa3NpWHB4UnNqSFNTOHNiODNEaEJ0K09YbEZuek1uZ1FRNm1IQm9JZjN4YjFOQ2RqYU1UaFJ6UHdLM1l1QndMeWtSREUrUmFHQmc4d1gzUm9LdDNZenpmUzZ3VmlxSHp3UjJlcFhZL0hzUnV5dkRiWmNtTXUrZ0pQdWxXRk5iSWlMaVFIWnBaT0V4Y1JIeWxiWHBYRnlubEFiaWlPcytORkZ3dmN2bExWUldGNHplUEVZazc2RnhDTXJXYjB5WUVGd1JtSzhzTUZhcENjSXVJS3pxQVdoZDBPditTSDZGNjd5a1crdzZpVDZZTm02U1J1ekRIY2xyajZ6NU50cUh6SWtQYUphVDNMMVNISlVhZ2VlbFhadlk2QWxYcjIra0JqYks5dGl2Q0Q0c2pWc09mK1FhQUk3OFJQb1hvV3Rjb09DMC9XVEdXamJuTk1yY3FlRzQwVTNqaEQ1VURJY0NJVzNBQ2YzcTY1NkQyMTZ0SkJvUWo3clE5N1RzNTlFOStZZ1lnUUFKSXNxanNxWHFXb3laWXp5d0VLVnBhUUdSd0pGVmlwVWR5Y2dYRW8wdXpIL2l5Yk5FY2V4THdRQk42WE9qV0ZwVmNUSUJycUprUC9wM05TM3Vqci94VWJhaHpnanZBNlNSOWhsSFk3MVlRK1VGeURTWG5GNzNpbW1PUFVCbVI5YUdOeUZuOE82bHV5SVNsNlRMbFRCdTBmOVFvUEI5eXR3YzlsY05mWUtVdWlsT0xYb3JNZDVLUEZua1FTSkhtazVYVWtIaW83UHlYa3VpWCtCOGhMeDY3azJBVDlQc25tTjBzL0lEQklXVDFvcmI4UDJtMjNOTnRTY1YvaGQ0Zkt3Uno0aDVkOEpITDZnS2c1MUZYTjVqR2wxaVZUWVFhaWNQb3ZVVTVKU0RIcTM4NjdaMktkcy9WMmsyMzhaY2Vaem1zR1JsbWJzY2JMU3plTGFMbFFlUzlUWk9QSWcrWHc5Q0grVmhtVUdQSDBtRU1ZUFpJMjlGVjJETFBWbXNuRVlSN2lpMG1IY2VqRGhXNkt2WnkxST0iLCJkYXRha2V5IjoiQVFJQkFIaEFPc2FXMmdaTjA5V050TkdrWWM4cXAxMXhTaFovZHJFRW95MUhrOExYV2dFdUd2anJROVJ2S3RrRWtTZGExSG9QQUFBQWZqQjhCZ2txaGtpRzl3MEJCd2FnYnpCdEFnRUFNR2dHQ1NxR1NJYjNEUUVIQVRBZUJnbGdoa2dCWlFNRUFTNHdFUVFNWTh0K216YzlpY0VOdEMvbkFnRVFnRHNDRnFKbXMwWTRLeFhUdktITE9qK3czUk5MTDYyMGRQSTNhT2pkZFJMN2dEZ3lvSnFOUVZJeCtuYmdMNUxraG4xNGxIeGh1N3lDSlorblVRPT0iLCJ2ZXJzaW9uIjoiMiIsInR5cGUiOiJEQVRBX0tFWSIsImV4cGlyYXRpb24iOjE3MAAAAAAAAAA

* docker login -u AWS -p [토큰값] [ECR 레포지토리 URI]

[root@ip-172-20-0-181 ec2-user]# docker login -u AWS -p AAAAAAAAAAFkIjoiSytHSFBMWkduRlVjZFNoVWExU2NaalB5TU1WcERFaUwzbnJTUWcrdGVNUHo0dUc0azZhWTh6WG9yNmtreDlsM243cnRpc1R1ajNQZlFlaXhpNm10emVZbjVyR0prMWNNTVh6NGxCdVJ1azdsb0RsMlVWbDFGZlJlK0F0TVNPeEFCOGFBOXViRGF6eDZ4OHhzdExHQzJ3VUhzLzFWNlY5NkdkV3RQaW9RNlFaWE0rOGF3VGZBQkVHMTdsMTlIMUIybDB0K2J6SSsydVkvbmdLRUpEN0dzWXQ4TWZxSHBNcVlqOGpxNnZmeVRWTEY3UFFuRTZiZWs5c2djeGxoOEJHYjhJVjBzbmU2WlcvYlJBa3NpWHB4UnNqSFNTOHNiODNEaEJ0K09YbEZuek1uZ1FRNm1IQm9JZjN4YjFOQ2RqYU1UaFJ6UHdLM1l1QndMeWtSREUrUmFHQmc4d1gzUm9LdDNZenpmUzZ3VmlxSHp3UjJlcFhZL0hzUnV5dkRiWmNtTXUrZ0pQdWxXRk5iSWlMaVFIWnBaT0V4Y1JIeWxiWHBYRnlubEFiaWlPcytORkZ3dmN2bExWUldGNHplUEVZazc2RnhDTXJXYjB5WUVGd1JtSzhzTUZhcENjSXVJS3pxQVdoZDBPditTSDZGNjd5a1crdzZpVDZZTm02U1J1ekRIY2xyajZ6NU50cUh6SWtQYUphVDNMMVNISlVhZ2VlbFhadlk2QWxYcjIra0JqYks5dGl2Q0Q0c2pWc09mK1FhQUk3OFJQb1hvV3Rjb09DMC9XVEdXamJuTk1yY3FlRzQwVTNqaEQ1VURJY0NJVzNBQ2YzcTY1NkQyMTZ0SkJvUWo3clE5N1RzNTlFOStZZ1lnUUFKSXNxanNxWHFXb3laWXp5d0VLVnBhUUdSd0pGVmlwVWR5Y2dYRW8wdXpIL2l5Yk5FY2V4THdRQk42WE9qV0ZwVmNUSUJycUprUC9wM05TM3Vqci94VWJhaHpnanZBNlNSOWhsSFk3MVlRK1VGeURTWG5GNzNpbW1PUFVCbVI5YUdOeUZuOE82bHV5SVNsNlRMbFRCdTBmOVFvUEI5eXR3YzlsY05mWUtVdWlsT0xYb3JNZDVLUEZua1FTSkhtazVYVWtIaW83UHlYa3VpWCtCOGhMeDY3azJBVDlQc25tTjBzL0lEQklXVDFvcmI4UDJtMjNOTnRTY1YvaGQ0Zkt3Uno0aDVkOEpITDZnS2c1MUZYTjVqR2wxaVZUWVFhaWNQb3ZVVTVKU0RIcTM4NjdaMktkcy9WMmsyMzhaY2Vaem1zR1JsbWJzY2JMU3plTGFMbFFlUzlUWk9QSWcrWHc5Q0grVmhtVUdQSDBtRU1ZUFpJMjlGVjJETFBWbXNuRVlSN2lpMG1IY2VqRGhXNkt2WnkxST0iLCJkYXRha2V5IjoiQVFJQkFIaEFPc2FXMmdaTjA5V050TkdrWWM4cXAxMXhTaFovZHJFRW95MUhrOExYV2dFdUd2anJROVJ2S3RrRWtTZGExSG9QQUFBQWZqQjhCZ2txaGtpRzl3MEJCd2FnYnpCdEFnRUFNR2dHQ1NxR1NJYjNEUUVIQVRBZUJnbGdoa2dCWlFNRUFTNHdFUVFNWTh0K216YzlpY0VOdEMvbkFnRVFnRHNDRnFKbXMwWTRLeFhUdktITE9qK3czUk5MTDYyMGRQSTNhT2pkZFJMN2dEZ3lvSnFOUVZJeCtuYmdMNUxraG4xNGxIeGh1N3lDSlorblVRPT0iLCJ2ZXJzaW9uIjoiMiIsInR5cGUiOiJEQVRBX0tFWSIsImV4cGlyYXRpb24iOjE3MTAAAAAAAAAA 859234351948.dkr.ecr.ap-northeast-2.amazonaws.com/test-nginx
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

4) ECR에 이미지 Push

[root@ip-172-20-0-181 ec2-user]# [root@ip-172-20-0-181 ec2-user]# docker tag nginx:testnginx 859234300000.dkr.ecr.ap-northeast-2.amazonaws.com/test-nginx:latest

[root@ip-172-20-0-181 ec2-user]# docker images
REPOSITORY                                                     TAG         IMAGE ID       CREATED          SIZE
859234351948.dkr.ecr.ap-northeast-2.amazonaws.com/test-nginx   latest      d74a43f1873c   49 minutes ago   133MB
nginx                                                          testnginx   d74a43f1873c   49 minutes ago   133MB

* docker push [ECR URI]:[이미지태그]
[root@ip-172-20-0-181 ec2-user]# docker push 859234300000.dkr.ecr.ap-northeast-2.amazonaws.com/test-nginx:latest
The push refers to repository [859234351948.dkr.ecr.ap-northeast-2.amazonaws.com/test-nginx]
e2fc51bf1f8d: Pushed 
d47e4d19ddec: Pushed 
8e58314e4a4f: Pushed 
ed94af62a494: Pushed 
875b5b50454b: Pushed 
63b5f2c0d071: Pushed 
d000633a5681: Pushed 
latest: digest: sha256:c614e600ed78ea605970d225b84387beff050bf3e2a5ec85d3e6b78b70e29c5d size: 1777

5) 레포지토리 확인

2. ECS 클러스터 생성 및 구성하기

1) ECS 클러스터 생성하기

2) ECS 작업 정의 구성하기

  • ECS 태스크 실행 시 역할을 할 IAM Role 우선 생성

  • AmazonECSTaskExecutionRolePolicy

  • ECS 태스크 정의 및 구성

3. ALB 구성 및 생성

1) Target Group 생성

2) ALB 생성

4. ECS 서비스 배포

1) ECS 서비스 생성

2) 로드밸런서와 ECS 서비스 연결하기

3) ECS 서비스 및 태스크 실행 확인

반응형