AWS DynamoDB 실습

흑이·2023년 1월 26일
0

테이블 생성

  • 구성할 테이블 스키마
  • 참고로 실습은 한명의 고객은 여러개의 물품을 살 수 없다는 조건으로 구성

  • 파티션 키 : customer_id
  • 정렬 키 : transaction_date

  • 기본 설정으로 하게 되면 Auto Scaling 포함됨


항목 생성

  • AWS에서 직접 데이터를 넣을 수 있다.
  • 다량의 데이터를 한번에 넣기 힘듬
  • 간단한 테스트용으로, 실제 프로덕트에서는 사용 안함
  • 어떻게 대량의 데이터를 넣을 수 있을까?

EX.

  • IoT 기기와 연결하여 실시간 데이터를 불러온 후 DB에 적재
  • S3 버켓에 파일 업로드 -> 람다 함수 발동 -> DynamoDB


실습에서는 람다 함수를 만들고, DynamoDB에 연결 시켜 데이터를 삽입 하는 방법으로 진행

  1. 정책 생성
  2. 역할 생성
  3. 람다 생성

Lambda 함수 생성

  • DynamoDB에 직접 데이터를 삽입하는 권한을 가지고 있어야 함 (권한)

  • Lambda 선택

  • 정책 생성 선택

  • 리소스 : DB의 여러개 테이블이 있다면 하나 하나의 테이블에 서비스를 적용 시킬지 아닐지

  • 정책 이름 생성

  • 다음을 누르게 되면 정책이 생성됐다.

  • IAM Lambda 역할 생성

  • 방금전 생성한 정책으로 권한 추가

  • 역할 이름 지정

  • IAM 역할 생성 내역 확인

람다의 기본적인 요소들을 사용 가능하게 권한을 넣어줘야 함

IAM 역할에 생성한 정책 연결하기



  • AWSLambdaBasicExecutionRole 선택

  • 기본적으로 AWS에서 제공해주는 정책, 다른 하나는 생성한 정책


  • 다시 Lambda로 돌아와서 기존 역할 사용, 기존 역할에서 생성한 역할 선택


함수 코드 작성

import boto3  // aws 사용 가능하게 sdk

def lambda_handler(event, context):
    client = boto3.resource('dynamodb')  // aws 리소스 명시
    table = client.Table('aws-learner-dynamodb-table') // 테이블 이름

    table.put_item(
        Item={
            'customer_id': '12MCX',
            'transaction_date': '2020-08-02',
            'item_category': 'Book',
            'price': 18000
        }
    )


  • 테스트 이벤트 구성, 따로 인자값 설정할 필요 없음

  • 테스트 진행

  • DynamoDB에서 확인 결과 코드에서 작성한 값이 항목에 있는걸 확인할 수 있다.


다량의 데이터를 업로드 할 때는 어떻게???

  • DynamoDB에서는 batch 쓰기 기능을 사용
  • put item이 4번


  • 오류 발생 batchwrite 권한이 없음
  • 역할을 다시 수정

  • 기존에 생성한 정책에서 BatchWriteItem 권한 설정
  • 역할은 이미 정책을 포함하기 때문에 바뀐 정책이 적용 됨

  • 다시 테스트해보면 실행 결과는 성공이다.

  • DynamoDB에서 확인해보면 데이터가 정상적으로 업로드 됨


스캔으로 조회 하기

  • 스캔 방식으로 price 속성에 100000 보다 크거나 같음을 필터

  • 필터에 반환된 항목 확인


쿼리로 조회 하기

  • 정렬키는 선택 사항, 정렬키를 넣어주면 파티션키에 맞는 데이터를 가져오고 다시 정렬키에 근거하여 데이터를 sort함
  • 처음에 실습 조건에 한 고객은 하나의 물품밖에 구매할 수 밖에 없다.


  • 한 고객은 하나의 물품만
  • NoSQL은 파티션 키는 중복을 허용
  • 또한 다른 데이터 타입도 들어 갈 수 있다. (ex. Map,List 등)
  • 데이터 포맷에 크게 제한을 받지 않음


https://www.inflearn.com/course/aws-%EC%9E%85%EB%AC%B8/dashboard

0개의 댓글