DEV Community

Aissa Laribi
Aissa Laribi

Posted on

6 3

Creating Unique IDs programmatically on DynamoDB

Create a DynamoDB Table

DynamoDB Table

Leave the Partition Key Set To String, this way it will be easier to create Unique Ids Identifiers because unlike MySQL Databases DynamoDB will not generate an auto increment ID. Furthermore, if we select Number or Binaries, there will be a conflict between DynamoDB and the
uuid library because they respectively use different decimal calculation.

Go to the Terminal and create an uuid

Terminal UUID

Copy and paste the uuid, and create the item on the table

Item

Create a put_dynamodb function

put_dynamodb Lambda function

Go to Configuration Permissions, Click on the Role Name and Attach the DynamoDbFullAccess policy to this Role

Role Lambda

Attach Dynamodb Policy To Lambda Role

First check if we can retrieve the data



import json
import uuid
import boto3

db = boto3.client('dynamodb')


def lambda_handler(event, context):
    data = db.scan(TableName='database')
    return {
        'statusCode': 200,
        'body': json.dumps('Success')
    }


Enter fullscreen mode Exit fullscreen mode

Let's test the function

Test function

Now, let's add a new item and an auto generated id with uuid module, and test the function



import json
import uuid
import boto3

db = boto3.client('dynamodb')
id_db=uuid.uuid4()


def lambda_handler(event, context):
    data= db.put_item(TableName='database', Item={'id':{'S':str(id_db)},'item':{'S':'iphone-10'},'available':{'BOOL': False}})
    return {
        'statusCode': 200,
        'body': json.dumps('Success')
    }


Enter fullscreen mode Exit fullscreen mode

Image description

Let's write the exact same code except that we are going to add a color attribute.



import json
import uuid
import boto3

db = boto3.client('dynamodb')
id_db=uuid.uuid4()


def lambda_handler(event, context):
    data= db.put_item(TableName='database', Item={'id':{'S':str(id_db)},'item':{'S':'iphone-10'},'available':{'BOOL': False},'color':{'S':'pink'}})
    return {
        'statusCode': 200,
        'body': json.dumps('Success')
    }



Enter fullscreen mode Exit fullscreen mode

Now let's check our database

DynamoDb updated

As you can see we haven't entered any id manually, and they have been generated programmatically.

Heroku

Simplify your DevOps and maximize your time.

Since 2007, Heroku has been the go-to platform for developers as it monitors uptime, performance, and infrastructure concerns, allowing you to focus on writing code.

Learn More

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay