Project/Poppin 19

AWS ECR -> ECS 배포(VPC, 서브넷, NAT, ASG, 로드밸런서 등 전부!) 기초

개요 Ref.)https://blog.doctor-cha.com/ecs-in-depth AWS ECS를 이용하여 애플리케이션을 배포하는 방법을 기록해둔다. 이전에 PROD 및 DEV 환경별로 구분하고, CI/CD를 통해 자동으로 배포되도록 하기 위해서 여러 과정들을 거쳤다. ECR로 Docker Image 옮기기 AWS Credential(AcceesKey, SecretKey), github Actions - ECR CI 설정하기 S3 이미지 업로드 구현, Profile 설정 및 불러오기, Swagger 이미지 업로드(multipart) 코틀린 logback 환경 분리, validated 검증, exception 처리, CD 적용 이 글에서 다룰 요소들 네트워크: VPC, 서브넷(서브네팅), 로드밸런서,..

Project/Poppin 2024.01.14

mysql dump(docker instance)

local에서 docker instance를 통해 mysql을 구동하여 사용하고 있는 경우, dump 방법 macOS 기준, DataGrip 활용 1. terminal에서 mysqlworkbench 캐스크로 설치 $ brew install --cask mysqlworkbench -> 일반 mysql을 brew install로 local에 설치해버리면, 기존 docker instance로 떠있는 mysql 설정을 DataGrip이 참고하던게, local용 mysql 설정을 참조하면서 권한이 밀리는 것 같음. Access Denied가 뜸! 이럴 땐 brew services stop mysql로 local로 설치된 mysql을 중단시켜버리고 docker로 실행하는 애플리케이션의 mysql container가..

Project/Poppin 2024.01.01

코틀린 logback 환경 분리, validated 검증, exception 처리, CD 적용

1. 코틀린 logback 환경 분리 라이브러리 import implementation("org.springframework.boot:spring-boot-starter-logging:3.1.5") resources/ 하위에 logback-spring.xml 파일을 만든다. 반드시 이 이름이여야한다. slack에 메시지를 보내는 설정을 포함했다. 로 환경을 구분할 수 있다. timestamp, property, appender, root 등의 logback 문법을 따른다. %d %-5level %logger{35} - %msg%n ${SLACK_WEBHOOK_URI} %d{yyyy-MM-dd HH:mm:ss.SSS} %msg %n ...-${HOSTNAME} ... true %d %-5level %log..

Project/Poppin 2024.01.01

스프링부트: 시큐리티- 회원가입, 로그인 기능 추가하기, swagger 로그인 하기, @ControllerAdvice

스프링부트 - 코틀린 - 스프링 시큐리티를 사용해서 회원가입, 로그인 기능을 구현한 내용을 기록해둔다. 상세한 내용들은 워딩만 알면 구글링을 하든 GPT에게 물어보든 얼마든지 알 수 있다. 여기서는 전체적인 개념과 작동원리가 어떻게 되는지 개략적으로 살펴본다. 1. 스프링 시큐리티 회원가입, 로그인 기능 추가 라이브러리 상기 언급한 스택에서 기본적인 라이브러리는 설치한다. spring-security는 3.1.5 버전을 사용했다. implementation("org.springframework.boot:spring-boot-starter-security:3.1.5") 목표 JWT 토큰을 활용한 회원가입/로그인 처리를 한다. Refresh 토큰은 처리하지 않는다. 나중에 migration 해도 된다. Ro..

Project/Poppin 2023.12.25

S3 이미지 업로드 구현, Profile 설정 및 불러오기, Swagger 이미지 업로드(multipart)

1. S3 이미지 업로드 구현 설정 파일 추가 @Configuration open class AwsConfig { @Value("\${cloud.aws.credentials.accessKey}") private val accessKey: String? = null @Value("\${cloud.aws.credentials.secretKey}") private val secretKey: String? = null @Value("\${cloud.aws.region.static}") private val region: String? = null @Bean open fun amazonS3(): AmazonS3 { val awsCredentials: AWSCredentials = BasicAWSCredential..

Project/Poppin 2023.12.25

Thymeleaf로 input 확인 및 수정 Admin 페이지 만들기(jquery, script)

1. 목적 thymeleaf로 테이블로 구성된 admin 페이지를 만들고 거기서 이미지 URL 값을 input 박스로 확인함과 동시에 save 버튼으로 수정도 할 수 있게 만들어주고 싶었다. 2. fragment fragments는 아래처럼 구성했다. 여기서 중요한 부분은 td를 th:if를 이용해서 reward.ImageUrl이 null이 아니고 비어있지 않은 경우에는 th:each를 사용하고 아닐 경우 th:unless를 사용해서 빈 값임을 표시해준 것이다. 그리고 data-initial-value로 model로 넘어온 값을 표시하면서 동시에 th:value로 사용자가 수정한 값을 button을 눌렀을 때 제출하도록 설정했다. 공간 ID 공간 이름 ID 이름 이미지 URL Save no url 3. ..

Project/Poppin 2023.12.17

AWS Credential(AcceesKey, SecretKey), github Actions - ECR CI 설정하기

1. AWS Credential ref.) https://www.daleseo.com/aws-cli-configure/ aws cli를 통해서 AWS 콘솔이 아니라 terminal을 통해 여러 정보에 접근할 수 있다. AWS는 accessKey(=ID), SecretKey(=PW)를 통해 인증받는 방식을 택하고 있다. 대부분의 AWS 기능이나 AWS와 연동된 라이브러리들은 credentials로 설정된 값을 기반으로 인증이 작동한다. 따라서 기본적으로 어떻게 AWS 인증이 이루어지는지 알고 있어야한다. aws cli의 인증 정보를 설정한다. $ aws configure 인증 정보 확인 $ aws configure list 인증 정보 저장 위치에 접근하여 확인(이 방법이 제일 편함) $ cat ~/.aws..

Project/Poppin 2023.12.09

AWS EC2 다른 계정용 pem key 만들고 접속: Permission Denied error

기존 AWS EC2에 기본적으로 제공되는 pem 키를 통해 접속이 되는 상태에서, 새로운 pem 키를 만들고 다른 계정의 사람에게 등록 가능하도록 하기 위한 방법이다. permission denied error는 ec2상의 authorized_keys내에 pem키의 pub 정보를 붙여넣지 않아서 발생했다. 1. AWS EC2 Console - 키 페어에 들어가서 키페어 생성을 클릭한다. 이름을 지정하고 rsa 방식으로 만들면 된다. .pem 파일이 다운로드 된다. 2. EC2에도 이 내용을 등록해야한다. 외부에 등록할 public key를 생성한다. $ ssh-keygen -y -f [pem키 이름.pem] > [pem키 이름.pub] .pub 파일이 생성된다. 3. .pub 파일의 내용을 복사해서 E..

Project/Poppin 2023.12.07

ECR로 Docker Image 옮기기

기존 Dockerhub에서 AWS ECR(Elastic Container Registry)로 Image registry를 옮겼다. Dockerhub에 Image가 노출되는 것은 보안상 좋지 못하기 때문이다. 다만 다른 AZ나 리전으로 데이터 전송 시 비용이 들 수도 있다. ref.) https://sangchul.kr/entry/aws-Amazon-ECR%ED%94%84%EB%9D%BC%EC%9D%B4%EB%B9%97-%EB%A0%88%EC%A7%80%EC%8A%A4%ED%8A%B8%EB%A6%AC 1. ECR에서 리포지토리 생성 프라이빗 리포지토리 생성에서 리포지토리 생성 버튼을 누르고 이름만 지정하면 된다. 생성 후 URI 정보를 확인할 수 있다. 이후 다른 곳에서 리포지토리를 이용할 수 있도록 정책..

Project/Poppin 2023.12.03