import boto3 from boto3.dynamodb.conditions import Key DYNAMODB_TABLE_NAME_SHADOW = 'shadow_feed_ingestion_status' DYNAMODB_TABLE_NAME_PROD = 'prod_feed_ingestion_status' FEED_NAMES = [ 'spotify', 'spotify_users', 'spotify_tracks', 'spotify_sub_30_sec_streams'] SINCE_DATE = '2018-04-26' def main(): dynamodb = boto3.resource('dynamodb', region_name='us-east-1') dynamodb_table_shadow = dynamodb.Table(DYNAMODB_TABLE_NAME_SHADOW) dynamodb_table_prod = dynamodb.Table(DYNAMODB_TABLE_NAME_PROD) all_items = [] # request all statuses for FEED_NAMES and save in all_items for feed_name in FEED_NAMES: response = dynamodb_table_shadow.query( KeyConditionExpression=Key( 'feed_name').eq(feed_name) & Key('date').gte(SINCE_DATE)) all_items.extend(response['Items']) # insert this statuses into prod Dynamo db with dynamodb_table_prod.batch_writer() as batch: for item in all_items: batch.put_item(Item=item) if __name__ == '__main__': main()