AWS CLI, Boto3

DynamoDB with Boto3(Python) 1편

Joon0464 2021. 7. 16. 23:11

1.  DynamoDB 구성 요소

- 테이블(Table)

- 항목(Items)

- 속성(Attributes)

- 기본키

Partition Key (파티션키)는 테이블이 파티션 키만 구성되어 있으면 모든 항목은 이 파티션 키 하나로 식별이 가능하다. DynamoDB가 내부적으로 해시함수를 사용하기 때문에 해시 키라고 불린다.

 

Sort Key (정렬키) 파티션 내에서 정렬하는 기준 값이다.

 

2. 테이블 생성

# createtable.py

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)

테이블을 생성하는 파이썬 코드를 작성하고 createtable.py라는 이름으로 저장한다.

Key Type을 HASH로 지정하면 Partition Key가 되고 RANGE로 지정하면 Sort Key가 된다.

AttributeType을 S로 지정하면 String N으로 지정하면 Number가 된다.

해당 파일을 실행하면 0이 출력되면서 테이블이 생성된다.

콘솔에서 생성된 테이블을 확인할 수 있다.

 

3. 이미 존재하는 테이블 사용하기

import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('users')

이미 존재하는 테이블을 사용하기 위해서는 3번째 줄 처럼 변수로 테이블 명을 적은 코드가 반드시 작성되야 한다.

즉, 앞으로 작성할 모든 코드는 위의 3줄을 포함하고 있어야 users라는 테이블에 작성한 코드가 사용되는 것이다.

4. 테이블 삭제

# deletetable.py

import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('users')
table.delete()

테이블을 삭제하려면 이미 존재하는 테이블을 호출하고 마지막줄에 table.delete() 메서드를 호출하면 된다.

테이블을 삭제하는 파이썬 코드를 실행한다.

콘솔에서 확인하면 테이블이 삭제된 것을 볼 수 있다.