업비트 API를 이용하여 가져오는 실시간 데이터를 AWS의 dynamoDB에 저장해보자.
AWS에는 데이터를 저장할 수 있는 여러가지 저장소들과 서비스들이 있다.
그중에서도 S3와 dynamoDB에 대해 알아보았다.
인터넷 스토리지 서비스. 용량에 관계 없이 파일을 저장할 수 있고 웹(HTTP 프로토콜)에서 파일에 접근할 수 있다.
s3
이미지, 동영상, 로그 파일 및 백업과 같은 대량의 비정형 데이터를 저장.
데이터 분석과 같은 일괄 처리를 위한 데이터 저장소로 사용
무제한 저장 용량과 내구성을 제공하며 확장성이 뛰어나고 비용 효율적
DynamoDB
빠르고 일관된 데이터 액세스가 필요한 높은 트래픽 애플리케이션을 지원해야 하는 경우.
대기 시간이 짧은 NoSQL 데이터베이스가 필요한 경우.
실시간 쿼리와 짧은 지연 시간이 필요한 경우.
일반적으로 S3는 즉각적인 액세스가 필요하지 않을 수 있는 많은 양의 비정형 데이터를 저장하는 데 더 적합한 반면 DynamoDB는 높은 확장성과 짧은 대기 시간 액세스가 필요한 트랜잭션 데이터에 더 적합합니다.
파티션 키 - 물리적 공간인 파티션을 특정하는 키, 파티션키로는 일치하는 값만 가져올 수 있고 조건문으로 작성할 수 없는 이유이기도 하다.
정렬 키 - 파티션 내에서 정렬하는 기준 값이다. (검색을 위한 최소의 조건이다) eq, lt, gt 등의 비교 조건과 between, begin_with 만 지원한다.
사용자 이름을 설정한다.
권한을 위한 사용자그룹을 생성한다.
dynamoDB에 접근하기위한 정책을 선택하고 그룹 생성.
python 연동을 위해선 boto3 모듈을 설치 해야한다.
pip install boto3
dynamoDB 연결시 액세스 키가 필요한데 사용자 관리 - 보안 자격 증명 에서 액세스키를 만든다.
dynamo_test.py
import boto3
dynamodb = boto3.resource('dynamodb',region_name='ap-northeast-2', aws_access_key_id='accesskey',aws_secret_access_key='secretkey')
table = dynamodb.Table('upbit')
data = {'market':'KRW-BTC', 'timestamp':123213211}
table.put_item(Item=data)
위 테스트 코드를 실행 하면
데이터가 정상적으로 들어간것을 확인할 수 있다.
💡참고:
https://hi-space.github.io/web/2019/09/16/s2-vs-dynamodb.html#dynamodb
https://ryan-han.com/post/aws/s3/