AWS SDK boto3 / DynamoDB [Python3]

Boto3 is the Amazon Web Services (AWS) Software Development Kit (SDK) for Python.
In this article, I would like to share how to access DynamoDB by Boto3/Python3.

😎 Installation

pip install boto3

😀 Get DynamoDB Resource object

import boto3

def get_dynamodb_resource():
rds = boto3.client('dynamodb', region_name='us-west-2')

🍮 Create table if there is no table

def create_table():
dynamodb = get_dynamodb_resource()

table = dynamodb.create_table(
{'AttributeName': 'id', 'KeyType': 'HASH'},
{'AttributeName': 'id', 'AttributeType': 'N'},
ProvisionedThroughput={'ReadCapacityUnits': 5, 'WriteCapacityUnits': 5}
# Wait until the table exists.
print('created table {}.'.format(table_name))
except ClientError as e:
# If there is the table already, the error will be skipped
if e.response['Error']['Code'] != 'ResourceInUseException':
raise e

🐡 Put Item

def save_articles(id):
dynamodb = get_dynamodb_resource()
table = dynamodb.Table('articles')

'id': id,
'title': 'sample-title',
'content': 'sample-content',
'created_at': arrange_datetime(round(time.time() * 1000)),

😼 Batch Writing

def save_all_articles(items):
dynamodb = get_dynamodb_resource()
table = dynamodb.Table(D_JOURNAL_TABLE)

with table.batch_writer() as batch:
for item in items:
arranged_item = {
'id': item['id'],
'title': item['title'],
'content': item['content'],
'created_at': arrange_datetime(round(time.time() * 1000)),

🤔 Get Item

def get_article(id):
dynamodb = get_dynamodb_resource()

table = dynamodb.Table('articles')
response = table.get_item(
'id': str(id),
if 'Item' in response:
return response['Item']
return None

🎃 References

🖥 Recommended VPS Service

VULTR provides high performance cloud compute environment for you. Vultr has 15 data-centers strategically placed around the globe, you can use a VPS with 512 MB memory for just $ 2.5 / month ($ 0.004 / hour). In addition, Vultr is up to 4 times faster than the competition, so please check it => Check Benchmark Results!!