일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- laravel
- JVM
- tool
- redis
- jsp
- linux
- MySQL
- springboot
- Spring Batch
- Oracle
- Web Server
- Spring
- Spring Boot
- 맛집
- elasticsearch
- Git
- IntelliJ
- AWS
- db
- ubuntu
- jenkins
- ReactJS
- devops
- Gradle
- php
- 요리
- Design Patterns
- javascript
- it
- java
Archives
- Today
- Total
아무거나
Spring Boot 에서 aws-java-sdk-dynamodb 를 활용한 AWS DynamoDB 연동 (+Credentials Setting 포함) 본문
Java & Kotlin/Spring
Spring Boot 에서 aws-java-sdk-dynamodb 를 활용한 AWS DynamoDB 연동 (+Credentials Setting 포함)
전봉근 2022. 7. 2. 13:40반응형
Spring Boot 에서 aws-java-sdk-dynamodb 를 활용한 AWS DynamoDB 연동 (+Credentials Setting 포함)
- 먼저 AWS Credentials 설정을 application.yml 기반으로 하게된다면 중요키들이 노출하게된다. 그래서 보통 KMS(=Key Management System)를 통한 관리, 키값 암호화 관리, 서버에 설정된 AWS CLI 를 통한 저장된 프로필 사용(Ex- ~/.aws/credentials) 등의 방법이 있으며 해당 내용에서는
서버에 설정된 AWS CLI 를 통한 저장된 프로필 사용
하는 방법으로 진행하도록 한다. aws-java-sdk-dynamodb
를 선택한 이유 (=spring-data-dynamodb
의 단점)- 2020.03.08 기준 Spring Data 팀이
공식 지원하는 프로젝트가 없다.
그래서 개인이 만든 프로젝트를 사용 boostchicken/spring-data-dynamodb - Spring Boot 가 버전이 올라갈때마다 호환성 이슈로 인하여 사용에 제약이 있다. (이전엔 Spring Boot 2.1.x 까지만 지원하였으나 지금은 그 이상 사용이 가능하긴하다.)
- 레거시 DynamoDB 의 데이터 구조가 복잡할경우 용이함
- 2020.03.08 기준 Spring Data 팀이
- 의존성 추가(build.gradle)
dependencies { implementation 'com.amazonaws:aws-java-sdk-dynamodb:1.12.239' }
- DynamoDB Configuration 생성
[DynamoDBConfig.java]package com.test.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.client.builder.AwsClientBuilder; import com.amazonaws.regions.Regions; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperConfig; @Configuration public class DynamoDBConfiguration { @Bean public DynamoDBMapper dynamoDBMapper() { DynamoDBMapperConfig mapperConfig = DynamoDBMapperConfig.builder() .withSaveBehavior(DynamoDBMapperConfig.SaveBehavior.CLOBBER) .withConsistentReads(DynamoDBMapperConfig.ConsistentReads.CONSISTENT) .withTableNameOverride(null) .withPaginationLoadingStrategy(DynamoDBMapperConfig.PaginationLoadingStrategy.EAGER_LOADING) .build(); return new DynamoDBMapper(buildAmazonDynamoDB(), mapperConfig); } @Primary @Bean public AWSCredentialsProvider awsCredentialsProvider() { return new ProfileCredentialsProvider(); // 서버에 설정된 AWS CLI 를 통한 저장된 프로필 사용 (~/.aws/credentials) } @Bean public AmazonDynamoDB buildAmazonDynamoDB() { return AmazonDynamoDBClientBuilder .standard() .withEndpointConfiguration( new AwsClientBuilder.EndpointConfiguration( "dynamodb.ap-northeast-2.amazonaws.com", Regions.AP_NORTHEAST_2.getName() ) ) .withCredentials(awsCredentialsProvider()) .build(); } }
- DynamoDB 를 호출할 Repository 생성(예시로 값을 넣었으므로 잘 참고해서 사용하자. -> https://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/DynamoDBMapper.Methods.html)
[TestRepository.java]@RequiredArgsConstructor @Repository public class TestRepository { private final DynamoDBMapper dynamoDBMapper; public TestData getTestData(String testNo) { // dynamoDBMapper.load({리턴할 클래스}, {Hash Key}, {Sort Key}); return dynamoDBMapper.load(TestData.class, "TEST$" + testNo, "TEST"); } }
반응형
'Java & Kotlin > Spring' 카테고리의 다른 글
서킷브레이커(=Circuitbreaker) Resilience4j 적용 (Java + Spring Boot) 1편 (4) | 2022.07.07 |
---|---|
AWS JAVA SDK 사용시 AWS Credential 클래스별 자격증명 (AWS Credential 관련 코드를 작성할 때 필수적으로 참고해야되는 내용이다.) (1) | 2022.07.02 |
빌드시 plain.jar 생성 방지 (1) | 2022.05.06 |
@NotEmpty 등과 같은 Annotation 이 import 안될 때 (0) | 2022.05.06 |
결과값 리턴값이 String 인 경우 한글이 깨지는 현상 (설정 파일에서 인코딩을 지정해도 안될 경우) (0) | 2022.04.26 |
Comments