Bluetape4k AWS 시작하기
최신 안정판 AWS 0.4.0 릴리스 기준
버전은 한 곳에서만 정한다
섹션 제목: “버전은 한 곳에서만 정한다”중앙 bluetape4k-dependencies BOM을 사용한다. 애플리케이션에서 이 버전을 한 번 정한 다음, 필요한 bluetape4k 아티팩트와 AWS 서비스 아티팩트를 버전 없이 선언하면 된다.
dependencies { implementation(platform("io.github.bluetape4k:bluetape4k-dependencies:<version>"))
implementation("io.github.bluetape4k.aws:bluetape4k-aws-java") implementation("software.amazon.awssdk:s3")}<version>에는 애플리케이션에서 사용할 bluetape4k-dependencies 릴리스 버전을 넣는다. 이 매뉴얼에 표시한 0.4.0은 문서를 검증한 AWS 소스 기준일 뿐, 사용자가 따로 맞춰야 할 두 번째 버전이 아니다.
AWS 서비스 SDK는 래퍼 라이브러리에서 compileOnly로 선언한다. 실제로 호출하는 서비스 아티팩트는 애플리케이션에 직접 추가해야 한다. S3를 예로 들면 Java SDK 경로에서는 software.amazon.awssdk:s3, Kotlin SDK 경로에서는 aws.sdk.kotlin:s3가 필요하다. 쓰지 않는 AWS 서비스가 런타임 클래스패스에 따라오는 것을 막기 위한 구조다.
SDK 경로를 고른다
섹션 제목: “SDK 경로를 고른다”이미 Java SDK 클라이언트를 사용하고 있거나 Enhanced DynamoDB 클라이언트, S3 Transfer Manager, CompletableFuture 기반 라이브러리와 연동한다면 Java SDK v2 경로가 잘 맞는다. Bluetape4k는 이 모델에 동기 도우미, 비동기 확장 함수, suspend 어댑터를 더한다.
dependencies { implementation(platform("io.github.bluetape4k:bluetape4k-dependencies:<version>")) implementation("io.github.bluetape4k.aws:bluetape4k-aws-java") implementation("software.amazon.awssdk:dynamodb-enhanced") implementation("software.amazon.awssdk:s3") implementation("software.amazon.awssdk:sqs")}처음부터 네이티브 suspend 클라이언트와 Kotlin 요청 빌더를 중심으로 구성한다면 Kotlin SDK 경로를 선택한다. 두 경로를 모두 쓸 수 있다는 이유만으로 함께 추가하지는 말자. SDK가 둘이면 클라이언트, HTTP 엔진, 설정과 종료 책임도 둘로 늘어난다.
dependencies { implementation(platform("io.github.bluetape4k:bluetape4k-dependencies:<version>")) implementation("io.github.bluetape4k.aws:bluetape4k-aws-kotlin") implementation("aws.sdk.kotlin:dynamodb") implementation("aws.sdk.kotlin:s3") implementation("aws.sdk.kotlin:sqs")}자세한 기준은 SDK 선택 가이드에 정리했다.
애플리케이션 연동은 하나만 더한다
섹션 제목: “애플리케이션 연동은 하나만 더한다”Spring Boot 애플리케이션은 보통 bluetape4k-aws-spring-boot부터 시작한다. 필요한 자동 설정이 활성화되도록 사용할 서비스 SDK를 함께 추가한다.
dependencies { implementation(platform("io.github.bluetape4k:bluetape4k-dependencies:<version>")) implementation("io.github.bluetape4k.aws:bluetape4k-aws-spring-boot") implementation("software.amazon.awssdk:s3") implementation("software.amazon.awssdk:sqs")}Ktor에서는 bluetape4k-aws-ktor로 SigV4, S3 REST 클라이언트, SQS 소비자, DynamoDB 저장소, CloudWatch, IMDS와 AWS 설정 기반 Exposed 연동을 구성한다. 설치할 플러그인이 요구하는 서비스 SDK도 함께 선언한다.
dependencies { implementation(platform("io.github.bluetape4k:bluetape4k-dependencies:<version>")) implementation("io.github.bluetape4k.aws:bluetape4k-aws-ktor") implementation("software.amazon.awssdk:sqs") implementation("aws.sdk.kotlin:dynamodb")}문법 취향보다는 설정과 자원의 수명 주기를 누가 맡는지 보고 선택해야 한다. Spring Boot와 Ktor 비교에 차이를 정리했다.
가장 가까운 예제 하나를 검증한다
섹션 제목: “가장 가까운 예제 하나를 검증한다”저장소 전체를 먼저 실행하지 말고 애플리케이션 경계와 가장 가까운 예제를 고른다.
./gradlew :aws-ktor-s3-examples:test./gradlew :aws-spring-boot-dynamodb-examples:test./gradlew :aws-spring-boot-sqs-examples:test기본 에뮬레이터는 Floci다. Floci가 지원하지 않는 작업이나 연동을 확인할 때만 LocalStack을 명시한다.
./gradlew :aws-spring-boot-sqs-examples:test \ -Dbluetape4k.aws.emulator=localstack