import boto3 import names import random import datetime # return dynamodb client to authenticate def dynamodb(): client = boto3.client('dynamodb', region_name=TABLE_REGION) return client # the function will produce a random date depending on set range def random_date(): day = random.randint(10, 20) month = random.randint(5, 7) year = 2019 date = datetime.date(year, month, day).strftime("%Y%m%d") return date # the function willl generate a random job position def random_position(): positions = [ 'HR', 'devops', 'data scientist', 'developer', 'janitor', 'office coordinator' ] return random.choice(positions) # the function will generate random first name def random_contract_type(): contract_types = ['permanent', 'intern', 'contract'] return random.choice(contract_types) # the function writes to the table, item with ID partition key def write_items(id_number): client = dynamodb() client.put_item( TableName=TABLE_NAME, Item={ "id": { "S": id_number }, "contract_type": { "S": random_contract_type() }, "last_accessed": { "N": random_date() }, "name": { "S": names.get_first_name() }, "position": { "S": random_position() } }) print('writing item number {}'.format(id_number)) # the function reads from the table, item with ID partition key def read_items(id_number): client = dynamodb() client.get_item(TableName=TABLE_NAME, Key={"id": {"S": id_number}}) print('reading item number {}'.format(id_number)) # set the number of requests you'd like to make to the table REQUESTS = 10000 # set table name, where you want to sent the requests TABLE_NAME = 'elaborate_employee_table' # in what region does the table reside TABLE_REGION = 'eu-west-1' # which action you'd like to do write / read ACTION = 'read' # for loop that will go through request number and either write or read from the table # depending on action type for request in range(REQUESTS): if ACTION == 'write': write_items(str(request)) elif ACTION == 'read': read_items(str(request)) else: pass