ECS/Fargate를 사용한 웹 시스템 구축-(3)

안상운·2025년 3월 14일

AWS

목록 보기
11/12
post-thumbnail

1. 데이터베이스

애플리케이션에서 데이터베이스에 접속하기 위해서는 인증 정보가 필요하다. 하지만 소스 코드에 인증 정보를 넣는 것은 보안 상 좋지 않다. 이를 해결하기 위해 컨테이너에 환경변수로 접속 정보를 정의하고, 소스코드에 환경 변수를 읽어 접속하는 방법을 많이 사용한다.

여기서 secret manager을 사용하여 db인증 정보를 저장해 안전한 상태로 정보를 전달하게 만들게끔 설정할것이다.

1. aurora 인스턴스 생성.

먼저 manager ec2에서 aurora 인스턴스에 접속해서 애플리케이션에 필요한 데이터베이스와 데이블을 생성하고, 프런트엔드 애플리케이션과 백앤드 애플리케이션에서 데이터 베이스 접속을 포함한 동작 확인을 한다.

  • db subnet group 생성 완료.

  • aurora 인스턴스 생성

    • 데이터베이스 엔진 선택

    • 기본설정

    • DB인스턴스 지정.

    • 가용성 및 내구성.

    • 접속 설정.

    • 옵션 설정.

  • 데이터 베이스 생성완료.
    만들었으면 암호를 확인하자.

2. 데이터베이스 접속을 위한 준비.

백앤드 에플리케이션에서 이용하는 데이터베이스 테이블과 데이터를 생성.
manage ec2에 연결해 생성한 aurora에 접속해 작업을 진행한다.

DB 사용자 생성 -> 테이블 생성 -> 데이터 입력

만들어진 데이터베이스의 라이너 데이터 베이스로 접속한다.

애플리케이션에서 이용할 사용자인 'sbcntruser'와 'migrate'를 생성.

이후 blitz.js의 migrate 명령어를 이용하여 migration을 수행한다.

데이터 삽입 완료.

2. Secrets Manager 설정.

이제 컨테이너 애플리케이션에서 데이터베이스에 접속하기 위한 인증 정보를 secret manager에 설정한다.

밑 정책을 생성해서 AWS Secrets Manager에서 모든 시크릿을 읽을 수 있는 권한을 부여해주자.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "GetSecretForECS",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue"
            ],
            "Resource": ["*"]
        }
    ]
}

역할에 정책 추가.

2. Secrets Manager에 vpc 엔드포인트 추가.

ECS 작업 에이전트가 secrets manager에 연결하기 위해서는 인터페이스용 vpc 엔드포인트가 필요하다.

aws vpc 관리 콘솔에서 엔드포인트를 생성하자.

3. 백엔드 애플리케이션에 인증 정보 설정.

Secretes manager에 설정한 보안 암호를 컨테이너의 환경 변수로 읽어 들이기 위해서는 ECS 정의를 갱신해야한다.

그후 테스크를 업데이트.

이제 되돌리기는 하지 않을것이므로 기존 작업 세트 바로 종료.

3. 데이터베이스 접속 확인.


management에서 백엔드와의 통신 가능확인

2. 애플리케이션 간 통신 확인

현재 ecr에 등록한 프런트엔드버전은 데이터베이스가 필요 없는 버전임으로 새롭게 다시 등록해보자.

1. DB에 접속하는 프런트엔드 애플리케이션 이미지 생성, 등록, 실행.

  • docker image build
  • push

프런트엔드 애플리케이션 이미지를 ecr에 등록 했으면 이미지를 이용하기 위해 작업 정의 내에서 이미지 변경 및 환경 변수를 추가해야함.

2. ECS 작업정의에서 환경변수 추가.


실행중인 작업 중지 후 새로운 ecs작업 시작.

대상 그룹에도 추가해준다.

3. 마지막으로 통신을 확인해보자.

프런트용 애플리케이션에 연결되어있는 alb의 dns주소를 입력.


0개의 댓글