[Spring Boot] AWS S3에 파일 업로드
·
Server/Spring&Spring Boot
IAM 사용자 생성 사용자 이름을 입력하고 다음으로 넘어갑니다. 검토 후 사용자를 생성합니다. 생성된 사용자에 들어가서 보안 자격 증명의 액세스키를 생성합니다. 체크박스에 체크 후 다음 버튼을 클릭합니다. 태그 설명을 작성한 후 엑세스 키를 생성합니다. 액세스 키와 비밀키를 저장합니다. 이후로 확인이 어려우니 csv 파일을 다운로드하여 보관합니다. 스프링 build.gradle 설정 implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE' Application.yml 설정 # multipart 설정 spring.servlet.multipart.max-file-size: 10MB spring.servlet.multip..
[AWS S3] 이미지 업로드/삭제 테스트
·
Server/Infra
이미지 업로드 해당 버킷을 선택합니다. 이미지 파일을 드래그해서 옮겨 올립니다. 다시 S3 버킷을 들어가면 업로드한 파일을 확인할 수 있습니다. 객체 URL을 누르면 업로드된 이미지를 확인할 수 있습니다. 삭제 버킷에서 삭제할 객체(파일)을 선택하고 삭제 버튼을 클릭합니다. 영구 삭제를 타이핑한후 삭제 버튼이 활성화되면 버튼을 눌러줍니다.
[AWS S3] 버킷 생성
·
Server/Infra
버킷 생성 AWS S3 페이지에서 버킷 만들기를 클릭합니다. 버킷 이름에는 사용자가 원하는 이름을 작성합니다. AWS 리전은 현재 살고 있는 지역(나라)을 선택합니다. 객체 소유권의 경우에는 현재 프로젝트 중이므로 다른 AWS 계정에서 사용할 수도 있으므로 ACL을 활성화하였습니다. URL을 입력하여 이미지가 업로드될 수 있도록 하기 위해 모든 퍼블릭 액세스 차단을 해제했습니다. 정책 설정 버킷 ARN 복사 정책 생성기 클릭 정책 생성기 Amazon Resource Name(ARN)에는 "버킷 ARN/*" 형식으로 입력. Add Statement 클릭 확인 후 Generate Policy 클릭 생성된 정책을 복사하여 정책생서기를 눌렀던 화면으로 돌아가 정책 부분에 붙여 넣습니다. 참조 [AWS] 이미지 ..
[GitLab] Branch CI/CD Pass 하는 방법
·
Server/ETC.
프로젝트를 진행하면서, 우리 프로젝트팀이 구성한 깃 브랜치 전략은 Master, Develop, Feature 3가지를 메인으로 브랜치를 구성한 후 HotFix를 유동적으로 관리하는 전략을 채택했다. 각자 feature에서 기능들을 만든 후 Develop으로 머지를 하고, 이상이 없으면 Master에 다시 한번 머지하는 방식으로 깃을 관리한다. 배포 오류 배포는 Master와 Develop부분에서 이뤄질 수 있도록 잠시 설정해뒀었는데 Develop에서 CI/CD jobs가 계속 failed 되는 현상이 발생되었다. 에러코드만 봤을 때는 로그인 관련 문제인 것 같았은데, 지금까지 이상이 없어서 괜찮은 것 아닌가?라는 생각을 했었다. 하지만 Master 부분에서만 머지를 했을 때, 또는 이 상태에서 Mast..
[Spring] test code에 대한 회고
·
Server/Spring&Spring Boot
거창한 회고는 아니다. 그냥 오랜만에 혼자 천천히 진행하고 있는, 학원의 종합 프로젝트를 진행하면서 무기한 보류 중인, 개인프로젝트의 코드를 다시 꺼내봤다. 현재 계정부분의 로그인, 회원가입만 구현되어 있는 작고 소중한 프로젝트이며, 여기서 구현 완료된 계정 부분의 컨트롤러 테스트 코드를 작성해 보았다. 테스트 코드 작성 전 나의 JOIN API public class MemberRestController { @PostMapping("/join") public Response join(@RequestBody @Valid final MemberJoinRequest dto) { MemberDto member = memberService.join(dto); return Response.success( Memb..
[코드스테이츠 백앤드 부트캠프 42기] 합격 후기
·
회고록/Archive
벌써 작년이 되어버린 일이지만, 짧게나마 합격 후기(?), 기록(?)을 남기고 싶어서 글을 작성하게 되었다. 국비 지원 교육이 한 차례 끝이 나고 난 후 교육의 필요성을 느끼고 있던 내 입장에서는 부트캠프 수업이 꼭 듣고 싶었다. 그래서 국비지원 교육의 파이널 프로젝트를 진행하던 도중, 8월 28일에 멋쟁이 사자처럼을 이미 지원한 상태였다. 멋쟁이 사자처럼의 지원이 끝나자마자 9월 초 코드스테이츠 지원이 열렸다. 지원했던 멋쟁이 사자처럼의 교육 과정이 탈락으로 끝날 것을 대비해야 했으므로 다른 교육과정에 지원하는 것은 당연한 수순이었다. (그 당시 달력에 우아한 테크코스, 멋쟁이 사자처럼, 코드스테이츠, 사피, 프로그래머스의 지원 일정이 적혀있었다.) 코드스테이츠의 과제로는 자기소개서, 인적성 문제, 코..
[JPA Error] Either use @Param on all parameters except Pageable and Sort typed once, or none at all
·
Server/Error
문제 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'recommendRestController' defined in file [\controller\RecommendRestController.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'recommendService' defined in file [\service\RecommendService.class]: Unsatisfied dependency expressed through const..
[JPA Error] jakarta.persistence.TransactionRequiredException: Executing an update/delete query
·
Server/Error
문제 프로젝트를 진행하며 엔티티 수정 로직을 구현하던 도중 다음과 같은 에러가 발생했다. jakarta.persistence.TransactionRequiredException: Executing an update/delete query 에러가 발생한 로직 Service public RecommendModifyResponse modifyPost(String userEmail, Long recommendNo, RecommendModifyRequest request) { // 글을 작성하는 Member 확인 Member member = validateGetMemberInfoByUserEmail(userEmail); // 수정 글 확인 Recommend recommend = validateGetRecommen..
코드플리
코드 플레이 리스트