[TIL 61일 차] Sprint Mission8 - BinaryContentStroage 고도화 및 AWS RDS 구성
오늘의 성취
1. 개발 진행 상황
- AWS S3를 활용한
BinaryContentStorage고도화S3BinaryContentStorageTest구현- 고도화 후 S3 테스트
- AWS RDS 구성
- AWS RDS PostgreSQL 인스턴스를 생성
- SSH 터널링을 통해 개발 환경에서 접근
- EC2 인스턴스를 생성
- DataGrip을 통해 연결
- 데이터 소스 추가 시
SSH/SSL > Use SSH tunnel설정을 활성화 - 다운로드한
.pem파일을 활용
- 데이터 소스 추가 시
- 연결이 성공하면 데이터베이스와 사용자, 테이블을 초기화
- 구성이 완료되면 EC2 인스턴스는 완전히 삭제하여 과금에 유의
프로젝트 요구 사항
2. 기본 요구사항
//...
2-02. BinaryContentStorage 고도화 (AWS S3)
//...
AWS S3를 활용한 BinaryContentStroage 고도화
- 앞서 작성한 테스트 메서드를 참고해
S3BinaryContentStorage를 구현하세요.-
클래스 다이어그램
-
discodeit.storage.type값이s3인 경우에만 Bean으로 등록되어야 합니다.S3BinaryContentStorageTest를 함께 작성하면서 구현하세요.-
BinaryContentStorage설정을 유연하게 제어할 수 있도록application.yaml을 수정하세요.discodeit: storage: - type: local + type: ${STORAGE_TYPE:local} # local | s3 (기본값: local) local: - root-path: .discodeit/storage + root-path: ${STORAGE_LOCAL_ROOT_PATH:.discodeit/storage} + s3: + access-key: ${AWS_S3_ACCESS_KEY} + secret-key: ${AWS_S3_SECRET_KEY} + region: ${AWS_S3_REGION} + bucket: ${AWS_S3_BUCKET} + presigned-url-expiration: ${AWS_S3_PRESIGNED_URL_EXPIRATION:600} # (기본값: 10분)- AWS 관련 정보는 형상관리하면 안되므로
.env파일에 작성된 값을 임포트하는 방식으로 설정하세요. - Docker Compose에서도 위 설정을 주입할 수 있도록 수정하세요.
- AWS 관련 정보는 형상관리하면 안되므로
download메서드는PresignedUrl을 활용해 리다이렉트하는 방식으로 구현하세요.
2-03. AWS를 활용한 배포 (AWS RDS, ECR, ECS)
AWS RDS 구성
- AWS RDS PostgreSQL 인스턴스를 생성하세요.
-
이외 설정은 기본값을 유지하세요.
- 과금이 발생할 수 있으니 다음 항목은 한번 더 확인해주세요.
- 템플릿:
프리티어 - 퍼블릭 액세스:
아니오 - 모니터링 > 보존기간:
7일 - 모니터링 > 추가 모니터링 설정:
모두 체크 해제 - 추가 구성 > 백업:
비활성화
- 템플릿:
- SSH 터널링을 통해 개발 환경에서 접근할 수 있도록 EC2를 구성하세요.
- EC2 인스턴스를 생성하세요.
- 이외 설정은 기본값을 유지하세요.
- 보안 그룹에서 인바운드 규칙을 편집하세요.
- 유형:
SSH - 소스:
내 IP- 작업 환경의 네트워크(와이파이 등)가 달라지면 계속 수정해주어야 할 수 있습니다.
- 유형:
- DataGrip을 통해 연결 후 데이터베이스와 사용자, 테이블을 초기화하세요.
- 데이터 소스 추가 시
SSH/SSL > Use SSH tunnel설정을 활성화하세요. 이때 이전에 다운로드한.pem파일을 활용하세요. -
연결이 성공하면 데이터베이스와 사용자, 테이블을 초기화하세요.
-- 1. 새 유저 'discodeit_user' 생성 (비밀번호는 원하는 값으로 설정) CREATE USER discodeit_user WITH PASSWORD 'discodeit1234'; -- 2. postgres 계정은 AWS RDS 환경 특성상 완전한 super user가 아니므로, discodeit_user에 대한 권한을 추가로 부여해야함. GRANT discodeit_user TO postgres; -- 3. 'discodeit' 데이터베이스 생성 (소유자는 'discodeit_user') CREATE DATABASE discodeit OWNER discodeit_user; -- 4. schema.sql 실행하여 테이블 생성 - 구성이 완료되면
rds-ssh인스턴스는 완전히 삭제하여 과금에 유의하세요.
- 데이터 소스 추가 시
//...
GitHub Repository 주소
https://github.com/JungH200000/10-sprint-mission/tree/sprint8
Leave a comment