DevOps/AWS

[AWS] DynamoDB 그리고 Lambda로 DynamoDB 접근

세리둥절 2023. 5. 8. 00:45
반응형

데이터 아키텍쳐의 변화

- DynamoDB도 S3나 RDS같은 Storage System이다. 
- 데이터 레이크 : S3라고 생각하면 된다
- 요새는 압축해서 저장하는 것이 아니라 그냥 raw 데이터를 그대로 저장한다
- 서비스 자체 뿐만아니라 저장한 DB의 가능성을 보고 투자를 받는다.

 

 

DynamoDB

- DynamoDB는 AWS의 Nosql 서비스이다
- 빠르고(Primary Key를 기준으로 찾을때) 백업이 되기 때문에 빅데이터에서 유용하게 사용된다
- Primary Key가 아닌 값으로 찾을때 느리다
- 자유도가 높을수록 비용이 저렴해진다. RDS >> DynamoDB >> S3
- 조인과 같은 복잡한 쿼리 불가능하다 

 

 

DynamoDB의 구성요소

- Item은 row라고 생각하면 된다
- 형식이 정해져있지 않은 부분은 Attribute { key, value }
- 완벽하게 형식이 자유가 아닌 이유는 Index 때문이다
- Index값은 무조건 있어야 한다! Index는 3가지 종류가 있다 (Partition Key, Sort Key, GSI) 

< Index >
- Sort Key와 GSI는 없어도 된다
- Partition Key가 중복값으로 들어오면 Partition Key가 PK가 될수가 없다
- Partition Key와 Sort Key의 결합은 무조건 unique해야 한다
- GSI는 여러개가 될 수 있다 (Region으로 내가 많이 필터링하고자 한다는 것이 결정되었다면, GSI로 만들어주자)
- Attribute에 있는 것들 중에서 Partition이나 Sort로 만들기에는 애매한데, 많이 사용할 것 같은 것은 GSI로 빼줘야해!

 

 

DynamoDB 생성하기

(1) AWS에서 DynamoDB 검색해서 테이블 생성하기
(2) 이것저것 적어주고 생성하자

- 프로비저닝이라는 말은 할당해둔다는 의미이다.
- 프로비저닝은 DynamoDB의 동접인원이 대충 예상가능할 때 -> 프로비저닝이 좋을 것 같다

 

 

DynamoDB 항목(Item) 추가하기

- 항목 생성을 통해서 JSON 형태로 항목을 추가해줄 수 있다

 

 

 

 

Lambda함수로 DynamoDB 접근하기

(1) Lambda 함수에서 Nodejs 14 버전으로 async 함수를 작성해서 만든다
(2) Lambda가 EFS에 접근할 때도 권한을 설정해준 것처럼 Lambda가 DynamoDB에 접근할 수 있는 역할을 설정해야한다
(3) Lambda >> 역할 >> 정책 생성 >> AmazonDynamoDBFullAccess

 

DynamoDB에 입력하는 Lambda 함수 Example
aws-sdk에서 AWS 관련 함수를 가져와서 쉽게 쓸 수 있다

반응형