import boto3 from boto3.dynamodb.conditions import Key DYNAMODB_TABLE_NAME = 'prod_feed_ingestion_status' REMOVE_FEED_NAME = 'apple_music_sme' CHANGE_FEED_NAME = 'apple_music_sme_amStreams' 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(REMOVE_FEED_NAME)) remove_items = response['Items'] response = dynamodb_table.query( KeyConditionExpression=Key('feed_name').eq(CHANGE_FEED_NAME)) change_items = response['Items'] with dynamodb_table.batch_writer() as batch: for item in change_items: if item['status'] == 'INGESTED': # insert new item new_item = dict(item) new_item['status'] = 'POPULATED_RAW_TABLE' batch.put_item(Item=new_item) print('Inserting: {}'.format(new_item)) for item in remove_items: if item['status'] == 'INGESTED': # delete old item batch.delete_item( Key={ 'feed_name': item['feed_name'], 'date': item['date']}) if __name__ == '__main__': main()