utils/datamigration/lightbox_migration.py (22 lines of code) (raw):

#!/usr/bin/env python3 import boto3 import logging source_table = "" ddb = boto3.resource("dynamodb") class OperationBuffer(object): def __init__(self): pass def iterate_source_records(source_table_name:str): """ a generator that yields records from the source table :param source_table_name: :return: """ logger = logging.getLogger("iterate_source_records") continuation = None while True: response = ddb.scan( TableName=source_table_name, ExclusiveStartKey=continuation ) logger.debug("page response is {}".format(response)) if response["LastEvaluatedKey"] is None: break for entry in response["Items"]: yield entry continuation = {"S":response["LastEvaluatedKey"]} logger.info("Finished iterating source records") ###START MAIN