반응형

AWS

    dynamoDbEnhancedClient range query condition 사용 시 The provided starting key does not match the range key predicate 에러 발생

    이전글에서 QueryConditional에서 range로 requestDateTime의 값을 sortkey로 구간 조건으로 조회를 했었다. 근데 dynamodb 특성상 페이징을 하기 위해서는 exclusiveStartKey값을 이용해서 마지막 이후 부터 값을 읽도록 쿼리를 수행해야한다. 하지만 작성한 쿼리로 로직을 수행하던중 The provided starting key does not match the range key 에러가 발생했다. 삽질을 계속 하던 중 query condition에서 사용했던 sortkey range구간을 벗어나는 값을 넣었을 경우에 발생했다. 만약 range query condition을 사용할 경우 range구간을 벗어나는 값을 exclusiveStartKey값으로 넣지 않도..

    dynamoDbEnhancedClient에서 QueryConditional에서 sort key range 조회하기

    아래와 같이 데이터가 존재하는 상황을 가정해보자. import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean; import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbPartitionKey; import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbSortKey; @Getter @Setter ..

    Dynamodb enhanced client

    dynamodb enhanced client 기존에 dynamodb를 조작하기 위해서 aws에서 제공되던 sdk를 사용할 때 DynamodbDBMapper를 사용해서 객체-테이블 매핑하여 질의해서 사용하였는데 생각보다 사용하기 번거로웠던 기억이 있었다. (마지막으로 프로젝트에서 사용한지 벌써 2년이 지나서 자세한 불편내용은 기억이 나진 않지만 사용에 편리하지 않았던 기억은 명확하게 남아있다.) 그래서 이번에 dynamodb를 프로젝트에서 사용하게 되었을 때 조금 더 편하게 사용할 수 있는 방법이 없을까 찾아봤고 dynamodb sdk for Java version 2에서 제공되는 DynamoDb Enhanced를 사용해보기로 했다. 사용법 gradle import plugins { id 'org.spri..

    S3Mock을 사용한 S3 테스트 방법

    s3를 로컬에서 테스트 진행하기 위해서는 별도의 mock 서버가 필요하다. 이를 대신해서 AWS s3에서 사용하는 api 구현체를 제공해주는 s3Mock이라는 라이브러리가 있어 사용해봤는데 괜찮아서 정리해본다. Gradle Import https://github.com/findify/s3mock GitHub - findify/s3mock: Embedded S3 server for easy mocking Embedded S3 server for easy mocking. Contribute to findify/s3mock development by creating an account on GitHub. github.com dependencies{ api 'org.springframework.cloud:spr..

    spring boot api를 쿠버네티스로 deployment 해보기

    저번 글에서 기본적인 쿠버네티스 관련 개념과 자원에 대해 공부했다. 이제 실질적으로 api애플리케이션을 하나 만들어보고 배포까지 진행해보자. 로컬 이미지를 담을 registry 생성 쿠버네티스의 노드들은 외부와 연결되는 경우도 있지만 그렇지 못하는 환경도 많이 존재한다. 그럴 경우 이미지를 내려받을 수 없고 로컬에서만 만들어서 사용할 이미지를 등록할 registry가 필요하다. # registry 이미지 가져오기 docker pull registry:latest # 레지스트리 실행 docker run --name MyPrivateRegistry -d -p 5000:5000 registry 애플리케이션 생성 우선 spring boot gradle 프로젝트로 아무것도 만들지 않고 바로 빌드해서 사용해보자. ..

    node.js에서 multer 사용하여 이미지 업로드 및 텍스트 파일 다루기

    Multer는 파일 업로드를 위해서 사용되는 multipart/form-data를 다루기 위한 node.js 미들웨어이다. busyboy를 기반으로 하고 있다. 자세한 내용은 https://github.com/expressjs/multer/blob/master/doc/README-ko.md 이곳에서 참고하면 된다. 그럼 간단하게 multipart/form-data로 올린 이미지 파일과 텍스트파일을 request post로 받아서 처리하는 코드를 만들어보자. 우선 multer를 설치한다. npm i multer 그리고 이미지 파일을 특정 경로에 저장해놓고 사용할 수 있지만 나는 메모리 스토리지를 사용해서 조작하는 방식으로 진행해보겠다. multer 라이브러리를 선언하고 memoryStorage를 사용할 수..

    node.js에서 aws s3 스토리지에 이미지 저장하기

    AWS에서 제공하는 S3 스토리지는 다양한 파일을 bucket에 보관할 수 있다. 자세한 내용은 생활코딩 강의 참고하면 좋다. https://opentutorials.org/course/608/3006 그럼 우선 aws sdk를 설치하여야 한다.1npm i aws-sdk --savecs 그리고 AWS IAM에서 생성한 사용자가 있어야 한다. 사용자는 S3에 대한 권한을 가지고 있어야 한다. 사용자를 생성하고 권한을 부여하는 기능은 어렵지 않기때문에 검색해서 적용하면 된다. 그리고 해당 사용자를 생성하면 csv 파일로 secretkey를 받을 수 있다. 이를 AWS S3에 접근하여 사용하기 위해서 사용된다. 기본 정보가 담긴 config.json 생성 우선 부여 받은 사용자 accessKeyId와 secr..

    오토 스케일링(Auto Scaling) 소개

    클라우드 환경이 대세다. 솔직히 말하면 대세인건 알지만 간단하게 aws 내 작은 서버 하나를 사용하고 있는 정도만 사용하고 있다. 아니 물론 SaaS 프로그램은 많이 사용하고 있지만 실질적으로 클라우드 환경이 어떻게 구성되고 있는지는 자주 사용하지 않아 100% 다 알지 못한다. 그래서 공부를 더욱 열심히 하고 있고 오늘은 오토 스케일링에 대해 알아보자. #오토스케일링 서버를 운영하다보면 갑작스럽게 트래픽이 몰리는 경우가 있다. 예를 들면 이벤트를 한다거나 특정 티켓이 오픈되는 경우가 될 수 있다. 이런 경우에 서버의 자원이 자동으로 확장되어 트래픽에 대응할 수 있다면 얼마나 좋을까? 이때 사용되는 기술이 오토 스케일링이다. 사용자가 미리 지정한 오토 스케일링 정책에 따라 트래픽이 발생하였을 때 미리 지..

    클라우드 컴퓨팅 설명 및 서비스 종류 정리

    클라우드 서비스 아마존과 MS, 구글 뿐만 아니라 국내에서는 NHN, 카페 25시등 클라우딩 컴퓨팅 사업에 뛰어들고 있다. 대체 클라우드가 왜 인기가 있고 클라우드가 무엇인지 알아보자. 클라우드란? 클라우드는 사용자가 서비스를 사용한 만큼의 비용을 지불하면서 서비스를 사용하는 것을 말하고 언제 어디서든 서비스를 접근하여 사용할 수 있는 서비스를 말한다. 인기 이유 인터넷이 보급되고 각 가정에 컴퓨터와 IT 기기들이 대중화 되면서 그 인기와 함께 기술도 같이 향상되었다. 나 또한 IT 업계에서 3년정도 일을 하고 있다. 세상이 편해지고 주머니가 가볍게 편하게 모든 서비스를 이용하고 싶어 카카오 페이, 삼성페이등도 넘처나는 시대가 되었다. 컴퓨터 역시 예전에는 사람들이 노트북을 들고다니고 별도의 소프트웨어를..

반응형