AWS - ECS배포 DB와 벡엔드 연결

문한성·2023년 4월 29일
2

부트캠프

목록 보기
71/123
post-thumbnail

mongoDB 이미지 ECS 배포

mongoDB 이미지 ECR에 업로드

ECR private repository생성

생성 옵션

생성한 리포지토리에 들어가서 푸시명령 확인하기

이미지를 다음 명령어를 순서대로 입력하여 빌드한다.

aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin 725601756882.dkr.ecr.ap-northeast-2.amazonaws.com
docker pull mongo
docker tag mongo:latest 725601756882.dkr.ecr.ap-northeast-2.amazonaws.com/velog-mongo:latest
docker push 725601756882.dkr.ecr.ap-northeast-2.amazonaws.com/velog-mongo:latest

An error occurred (UnrecognizedClientException) when calling the GetAuthorizationToken operation: The security token included in the request is invalid. Error: Cannot perform an interactive login from a non TTY device
해당 오류가 발생할시 해결법 링크

클러스터 생성

주의! 하나의 가용영역 즉 az 하나에 한개의 서브넷만 사용하도록 한다

테스크 정의 생성

이미지 URL은 위에서 생성한 ECR의 URL을 입력해주고
포트 매핑을 추가하여 mongo의 포트인 27017을 입력해준다.
앱 프로토콜은 NONE으로 설정해준다.

환경 변수를 추가하여 mongoDB의 사용자와 비밀번호를 적어준다.

MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example

CPU와 메모리는 기본값으로 사용하고 태스크역할과 실행역할만 설정하고 넘어간다.
처음 생성하는 경우 역할이 뜨지 않을 수 있다. 그경우에는 비우고 넘어간다.

NLB 로드밸런서 생성


가용영역 전부 선택

대상그룹 생성

클러스터 서비스 생성


로드밸런서에서는 하나의 가용영역(az)안에 하나의 서브넷만 사용가능하므로 주의한다.
보안그룹에는 80포트와 27017포트를 허용하는 보안그룹을 사용한다.


서버 이미지 ECS 배포와 db연결

ECR private repository생성

생성 옵션

생성한 리포지토리에 들어가서 푸시명령 확인하기

이미지를 다음 명령어를 순서대로 입력하여 빌드한다.

민감한 정보 Screts Manger에 저장

backend 코드에서 MONGO_URL로 환경변수를 받아와서 사용하기에 MONGODB 연결 URL을 담아준다.

테스크 정의 생성

이미지 URL은 위에서 생성한 ECR의 URL을 입력해주고
포트 매핑을 추가하여 사용중인 포트를 입력해준다.

키는 실제로 애플리케이션에서 사용할 환경 변수 이름입니다.
값 유형은 ValueFrom으로 설정해 둡니다.
값은 Secrets Manager에 저장되어 있는 보안 암호의 키/값의 ARN으로 지정합니다. 다음과 같은 형식입니다.
arn:aws:secretsmanager:ap-northeast-2:725601756882:secret:VELOG_MONGO_URL-Rpur08:MONGO_URL::
VELOG_MONGO_URL 은 보안 암호 이름입니다.
Rpur08 일종의 해시값으로 ARN에서 확인할 수 있습니다.
MONGO_URL은 보안 암호의 키입니다. 우리는 MONGO_USERNAME 등으로 지정하면 됩니다.

다음 옵션은 기본값으로 설정하고 생성한다.

사용하고 있는 테스크 역할에 권한을 추가해준다.

SecretsManagerReadWrite을 추가해준다.

벡엔드 클러스터 서비스 생성


보안그룹은 포트 3000이 열려있는 보안그룹을 선택해준다.

로드밸런서는 ALB로 서비스와 함께 새로 생성해준다.

profile
기록하고 공유하려고 노력하는 DevOps 엔지니어

0개의 댓글