이전 게시글을 바탕으로 진행합니다 !
01.ECR 등록 준비 단계 👈
ECR을 생성 및 관리하기 위한 사용자를 인증하는 과정이 담겨있어
내용이 많을 수 있습니다.
ECR을 등록 및 관리를 하기 위해 IAM 사용자를 생성해줘야 합니다.
IAM 검색 후 대시보드에서 사용자에 들어가 사용자를 생성해줍니다.


사용자 이름에는 나중에 생성된 사용자에 로그인을 할 때 필요한 이름 즉, IAM 계정으로 쓰일 수 있어 식별 가능하게 입력해줍니다.
다음으로 사용자에게 EC2 Container Registery Full Access 권한을 부여해줍니다.

지금은 추가로 설정해줄게 없기 때문에 바로 생성해주고,
생성이 되었다면 사용자탭에서 사용자 이름으로 들어가 보안 자격 증명탭에서 콘솔 액세스 활성화를 눌러줍니다.

활성화를 해주는 이유는 해당 사용자로 로그인 후 ECR 리포지토리를 생성하기 위함입니다 !
사용자 지정 암호로 로그인 할 때 사용할 암호를 입력해주고 활성화를 해줍니다.

docker로 빌드한 image를 등록하기 위해 aws CLI에서 실행해줘야 합니다.
본인의 환경에 맞는 버전으로 설치해줍니다.
aws-cli --version

버전이 정상적으로 나온다면 설치 성공!
다시 한 번 보안 자격 증명탭으로 들어가서 액세스 키를 생성해줍니다.

각자 사용 세례에 맞게 선택 후 액세스 키에 태그를 설정 후 만들어줍니다.

잠시 기다려 주시면 액세스 키가 생성이 되는데
🔴 액세스 키, 비밀 액세스 키 두 개 잘 보관해주셔야 합니다!
이제 프로젝트의 루트 경로로 이동하여
aws configure 명령어를 통해 aws-cli 설정을 해줍니다.
위 명령어를 실행하면 차례대로 입력 문구가 뜰 겁니다.
aws configure
AWS Access Key ID [None]: <Access Id> # 액세스 키
AWS Secret Access Key [None]: <Secret Key> # 비밀 액세스 키
Default region name [None]: ap-northeast-2 # 적용할 물리적 위치 (서울)
Default output format [None]: json # 결과 출력 형식
무사히 입력했다면 설정에 성공했습니다 !
aws에서 Elastic Container Registry를 검색 후 들어가줍니다.

이제 홈 화면에서 바로 생성을 누르면 프라이빗 리포지토리 생성 화면으로 넘어올겁니다.

🔸리포지토리 이름(저장소 이름) : 컨테이너 이미지를 push하거나 가져오거나 관리하는데 사용됩니다.
🔸이미지 태그 변경 가능성 : 이미지 뒤에 따라오는 latest 등과 같은 태그를 의미하며 개발 또는 테스트 단계에서 이미지를 자주 업데이트 할 경우 활성화 해주는게 적합 할 수 있습니다.
# ex) alpine:2.10 or alpine:latest --> alpine:custom3.0
docker image tag alpine:2.10 alpinecustom3.0
# 변경된 태그는 docker image ls 로 확인해보기 !
기존의 alpine:2.10이미지와 동일하기 때문에 같은 Image ID를 가지지만,
다른 repository와 tag를 가지게 된다.
🔸AES-256(기본 암호화) : 업계 표준 암호화를 의미하며 이 구성으로 생성 후 이미지를 저장 시 이미지를 암호화 해줍니다.
🔸AWS KMS : aws에서 관리하는 자체 암호화 키를 사용하여 이미지를 암호화 할 수 있는 기능입니다. 이 구성은 조직 규정 준수 및 보안상의 이유로 암호화 키에 대한 더 많은 제어가 필요할 경우에 유용합니다.
본인의 환경에 맞게 설정해주면 되지만 저는 태그 변경 활성화, AES-256 구성으로 생성해주었습니다.
다음으로 생성한 레지스트리로 들어가서 푸시 명령 보기를 선택합니다.

환경에 맞게 팝업에 나와있는 대로 명령어를 차례대로 복사해서 실행해줍니다.
# "(Get-ECRLoginCommand).Password" 부분을
aws ecr get-login-password --region <region> 로 변경
ex) aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin <ECR URI>
차례대로 명령어를 실행 했을 때 문제 없이 Login Succeeded 문구가 떴다면 성공 !
🔴 만약 1단계에서 제대로 잘 되지 않는다면
관리자 권한으로 CMD를 열어 명령어 다시 실행해보기 !
위와 같은 문구가 떴다면 1단계 성공 !
해당 단계는 프로젝트를 이미지로 빌드한 게 있다면 건너뛰어도 좋습니다.
docker build -t <image-name>
빌드한 Docker 이미지에 태그를 지정해줍니다.
docker tag <image-name> <ECR URI>/<ECR REPO:latest>
# 빌드한 이미지 이름, ECR URL/ECR REPO 이름:버전 정보
태그가 지정 되면 Docker desktop에서 확인이 가능합니다.
ECR에 빌드한 image 및 태그를 지정한 image를 push 합니다.
docker push <ECR URL>

기존에 ECR을 사용한 적이 없다면 별다른 말 없이 Pushed라는 메세지가 출력됩니다.
digest 되었다면 aws ecr에 성공적으로 등록이 된 것을 확인하실 수 있습니다.

IAM 사용자 인증을 해주는데 애를 먹어서 많이 힘들었지만
성공적으로 프로젝트가 ecr에 등록이 된 걸 보니 뿌듯하다.
이전과 다르게 정말로 운영이 가능한 서버를 배포할 수 있다는 생각에 벌써 설렌다.
다음으로 ECS로 클러스터를 구성해주고 배포하는 과정을 기록해보겠다.