본문 바로가기

Previous (20-22)/Development

AWS DynamoDB in Python (Boto3) - #2. 테이블 관리

이번 글에서는 Amazon Web Service(AWS) 에서 DynamoDB를 사용하는 방법을 Python을 이용해서 다루도록 하겠습니다.

처음에 AWS Python 카테고리에서 DynamoDB를 다루고자 했던 것은 아니였지만, 이번 회사에서 기술보고서를 작성하는 과정에 있어서 주제를 DynamoDB를 하다 보니까 블로그에도 같이 다루는 것이 좋을 것 같아서 올려봅니다.


2018/06/03 - [Onik Lab./AWS Python] - AWS DynamoDB in Python (Boto3) - #1. 소개


이번 글은 Boto3 및 DynamoDB 테이블 관리에 대해서 다루어보도록 하겠습니다.

이전 글에서 언급했다시피, AWS DynamoDB를 사용하기 위해서 Amazon에서는 각 프로그래밍 언어 별 SDK를 배포하고 있다고 하였습니다.

Python SDK도 당연히 있으며, AWS SDK in Python 인 Boto3 를 이용해서 DynamoDB와 연동해보도록 하겠습니다.


원본 문서: http://boto3.readthedocs.io/en/latest/guide/

영어 문서이므로 참고하시기 바랍니다.


1. Boto3 설치

매우 쉽습니다. 이미 Python 2.7 이상 버전이 모두 설치되어 있을 것이므로, pip를 통해서 설치를 하면 됩니다.

$ pip install boto3 


큰 문제가 없다면 설치가 정상적으로 이루어 질 것입니다. 중간 과정은 너무 길어서 생략했습니다.

참고로 중간에 빨간색 에러메시지가 나타날 수 있는데, 해당 부분보다도 성공적으로 설치되었는지 확인만 하면 됩니다. 

(다만 에러메시지 부분은 추후 재확인해보도록 하겠습니다)


2. Table 생성

Boto3 만 설치했는데 테이블을 바로 생성한다고요?

네 그렇습니다. DynamoDB는 AWS의 EC2 Server 구축만 되어있고, Python, Boto3, AWS CLI 설치가 완료되면 곧바로 사용이 가능합니다.


AWS Console 상에서 테이블을 생성하는 것이 가능하지만, Python과의 연동을 위해서 Python을 통해서 생성하도록 하겠습니다.


import boto3

 

# Get the service resource.

dynamodb = boto3.resource('dynamodb')

 

# Create the DynamoDB table.

table = dynamodb.create_table(

    TableName='users',

    KeySchema=[

        {

            'AttributeName': 'username',

            'KeyType': 'HASH'

        },

        {

            'AttributeName': 'last_name',

            'KeyType': 'RANGE'

        }

    ],

    AttributeDefinitions=[

        {

            'AttributeName': 'username',

            'AttributeType': 'S'

        },

        {

            'AttributeName': 'last_name',

            'AttributeType': 'S'

        },

 

    ],

    ProvisionedThroughput={

        'ReadCapacityUnits': 5,

        'WriteCapacityUnits': 5

    }

)

 

# Wait until the table exists.

table.meta.client.get_waiter('table_exists').wait(TableName='users')

 

# Print out some data about the table.

print(table.item_count)


이게 다입니다. 굉장히 쉬울 것입니다.

그리고 실행만 하면 끝.


1) import boto3를 하여 boto3 SDK를 불러옵니다.

2) DynamoDB의 기본 키(Primary Key) 생성을 위해서 Key Schema 속성을 사용하고, 파티션키와 정렬키를 각각 HASH / RANGE 속성값으로 지정합니다.

3) 기본 키에 해당하는 속성의 유형을 AttributeDefinitions로 지정하고, 문자열(String) 유형인 'S"로 지정합니다.

4) 읽기 / 쓰기 용량도 더불어 지정합니다.

5) 커맨드 창에서 Python을 실행하면 '0'이라고 나오는데, 정상입니다. '0'은 생성된 이후 항목(Item) 개수를 나타내는 결과값이기 때문입니다.


생성된 DynamoDB 테이블을 보도록 하겠습니다.


아무 문제 없이 설치가 완료된 것을 볼 수 있습니다.


3. Table 사용

테이블 사용은 매우 간단합니다. 

아래의 세번째 라인의 table 변수에 dynamodb.Table(테이블명)을 입력하면 간단합니다.

import boto3

dynamodb = boto3.resource('dynamodb')

table = dynamodb.Table('users')

단 앞으로 DynamoDB의 Table에서 사용되는 모든 값은 이 table 변수를 통해서 사용하므로, 모든 예제에는 위의 코드가 반드시 들어가야 한다는 점을 참고하시기 바랍니다.


4. Table 삭제

삭제는 위의 table 변수가 지정된 상태에서 delete() 함수를 실행하면 됩니다.

table.delete()


DynamoDB의 Table 생성/사용/삭제 등 관리 방법에 대해서 알아보았습니다.

생각보다는 매우 쉽게 관리가 이루어진다는 것을 알 수 있습니다.

하지만 실제 데이터를 어떻게 관리하는 지도 보아야 되겠죠?


다음 글에서 다루도록 하겠습니다.