import boto3 from boto3.dynamodb.conditions import Key import json DYNAMODB_TABLE_NAME = 'prod_feed_ingestion_status' OLD_FEED_NAME = 'spotify' NEW_FEED_NAME = 'spotify_streams' def main(): dynamodb = boto3.resource('dynamodb', region_name='us-east-1') dynamodb_table = dynamodb.Table(DYNAMODB_TABLE_NAME) response = dynamodb_table.query( KeyConditionExpression=Key('feed_name').eq(OLD_FEED_NAME)) items = response['Items'] # save statuses in file with open('{}_statuses.json'.format(OLD_FEED_NAME), 'w') as outfile: json.dump(items, outfile) with dynamodb_table.batch_writer() as batch: for item in items: # insert new item new_item = dict(item) new_item['feed_name'] = NEW_FEED_NAME batch.put_item(Item=new_item) print('Inserting: {}'.format(new_item)) # delete old item batch.delete_item( Key={ 'feed_name': item['feed_name'], 'date': item['date']}) if __name__ == '__main__': main()