Codeit 18

[sprint8] RDS/EC2, ECR, ECS 배포

RDS 연결 - DataGrip General 탭실제 목적지인 RDS, 즉 DB와 연결시켜주는 역할을 한다. RDS, EC2 생성 이후에 DataGrip 들어가서 하면 된다.입력값Host: RDS > 연결 및 보안 > 엔드로인트 및 포트 > 엔드포인트 복붙하면 된다Authentication: User & PasswordRDS 생성 당시 사용했던 마스터 사용자 이름과 암호를 각각 User, Password에 입력해주면 된다Database: 이것 또한 RDS 생성 당시 정할 수 있다. 기본값은 postgres이다 (PostgreSQL을 사용할 경우). 만약에 설정 정보를 잊었다면, RDS 인스턴스 > 구성 (Configuration) 에서 찾아보면 된다.SSH/SSL 탭위와 같이 아무리 RDS 설정 정보를 ..

[sprint8] S3 관련 코드 + S3Client와 Presigned Url

먼저 주요 요소들 설명 S3ClientAWS SDK에 포함된 클래스로 S3에 파일 업로드, 다운로드 등의 명령을 내리는 역할을 하는 서버용 도구다. 이 객체를 사용하려면 어떤 AWS계정의 자격증명(Credentials)을 쓰고 어느 리전에 접속할지 등 설정을 해주어야 한다. S3Presigner클라이언트(예: 웹 브라우저)가 S3에 직접 안전하게 접근할 수 있도록 임시 허가증(URL)을 발급해주는 보안용 도구다.퍼블릭 URL에 response-content-disposition을 붙이는 건 익명 요청에서 허용되지 않기 때문에, 다운로드 시점에 프리사인드 URL을 만들어 저장 상자를 띄워야 한Presigned Url: 제한된 시간 동안 특정 S3 버킷의 객체에 접근할 수 있는 임시 URLS3Presigne..

[sprint8] 어플리케이션 컨테이너화 - dockerfile, docker compose, docker volume

내가 나중에 보기 편하려고 쓴 블로그 포스트이다. Dockerfile# ====== build args는 반드시 FROM보다 위에 선언 ======ARG BUILDER_IMAGE=gradle:7.6.0-jdk17ARG RUNTIME_IMAGE=amazoncorretto:17.0.7-alpine# ============ (1) Builder ============FROM ${BUILDER_IMAGE} AS builderENV GRADLE_USER_HOME=/home/gradle/.gradleUSER rootWORKDIR /appRUN mkdir -p $GRADLE_USER_HOME && chown -R gradle:gradle /home/gradle /appUSER gradle# enabling the g..

[sprint5] 과제에서 사용한 swagger 간단하게 정리

Controllersprint5과제는 컨트롤러 구현을 주어진 API 스펙에 맞추고 Swagger을 붙혀 Swagger UI + Postman에 테스트하는 것이다6개의 entity에 맞춰서 6개의 컨트롤러다: Controller 예시 - BinaryFileController일단 그냥 메서드 2개가 있는 간단한 컨트롤러를 가져왔다:@RestController@RequestMapping("/api/binaryContents")@RequiredArgsConstructor@Tag(name = "BinaryContent", description = "Binary Content 관련 API")public class BinaryFileController { private final BinaryContentServic..

[sprint4] IOException과 @Transactional (멘토님 피드백)

스프린트 4 완료 후, 멘토님한테서 이런 피드백을 받았다: 내 코드는 이렇게 쓰여져 있었다:import org.springframework.stereotype.Component;import org.springframework.web.multipart.MultipartFile;import java.io.IOException;import java.util.UUID;@Componentpublic class BinaryContentMapper { // DTO를 Entity로 변환하는 메소드 public BinaryContent toBinaryContent(BinaryContentRequestDto binaryContentRequestDto) { return new BinaryContent..

[sprint3] 심화 2 - application.yaml로 Bean 구현하기 (File*Repository 구현체의 파일 저장 경로 설정하기

업무: File*Repository 구현체의 파일을 저장할 디렉토리 경로를 application.yaml 설정 값을 통해 제어해보세요.먼저 심화 1부분의 파일들을 그대로 가져와서 설명하려고 한다.application.ymlspring: application: name: discodeitdiscodeit: repository: # jcf | file type: file file-directory: .discodeit extension: .serRepositorySettings.java@ConfigurationProperties("discodeit.repository")// need getters and setters for spring to inject values@Gette..

[sprint3] 심화 1 - application.yaml로 Repository 구현체 선택하기 (File/JCF)

업무: Repository 구현체 중에 어떤 구현체를 Bean으로 등록할지 Java 코드의 변경 없이 application.yaml 설정 값을 통해 제어해보세요.discodeit.repository.type 설정값에 따라 Repository 구현체가 정해집니다.값이 jcf 이거나 없으면 JCF*Repository 구현체가 Bean으로 등록되어야 합니다.값이 file 이면 File*Repository 구현체가 Bean으로 등록되어야 합니다.application.yml - 설정 파일spring: application: name: discodeitdiscodeit: repository: # jcf | file type: file file-directory: .discodeit e..