In this hands-on lab, we will create a DynamoDB table to store pet inventory data. In the scenario, the data architect on the team has requested a table definition with a partition key of `pet_species` with the data type `String`, a sort key of `pet_id` with the data type `Number`, and that the table be named `PetInventory`. Because the workload in development is not known, `On-Demand` provisioning should be utilized. We’re free to create the table with any method we choose (web console, CLI/SDK, CloudFormation).
Learning Objectives
Successfully complete this lab by achieving the following learning objectives:
- Create a DynamoDB Table Using the AWS Web Console
- Navigate to the DynamoDB web console.
- Click Create table.
- Provide configuration options outlined in the lab instructions.
- Click Create.
- Create a DynamoDB Table Using the AWS CLI
The following command will create the requested DynamoDB table:
aws dynamodb create-table --table-name PetInventory --attribute-definitions AttributeName=pet_species,AttributeType=S AttributeName=pet_id,AttributeType=S --key-schema AttributeName=pet_species,KeyType=HASH AttributeName=pet_id,KeyType=RANGE --billing-mode PAY_PER_REQUEST
- Create a DynamoDB Table with the Python Boto3 SDK
The following Python script will create the requested DynamoDB table:
import boto3 ddb = boto3.client('dynamodb') createResponse = ddb.create_table( AttributeDefinitions=[ { 'AttributeName':'pet_species', 'AttributeType': 'S', }, { 'AttributeName':'pet_id', 'AttributeType':'N' } ], KeySchema=[ { 'AttributeName':'pet_species', 'KeyType':'HASH' }, { 'AttributeName':'pet_id', 'KeyType':'RANGE' }, ], BillingMode = 'PAY_PER_REQUEST', TableName='PetInventory' )
- Create a DynamoDB Table with CloudFormation
The following template will create the requested DynamoDB table"
{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "PetTable": { "Type": "AWS::DynamoDB::Table", "Properties": { "AttributeDefinitions" : [ { "AttributeName": "pet_species", "AttributeType": "S" }, { "AttributeName": "pet_id", "AttributeType": "N" } ], "KeySchema" : [ { "AttributeName": "pet_species", "KeyType": "HASH" }, { "AttributeName": "pet_id", "KeyType": "RANGE" } ], "TableName": "PetInventory", "BillingMode": "PAY_PER_REQUEST" } } } }