import boto3 def user_statement_export_items(user_id_type, periods=''): dynamodb = boto3.resource('dynamodb', region_name='us-east-1') table = dynamodb.Table('qa-accounting-statement-export') response = table.query( TableName='qa-accounting-statement-export', ExpressionAttributeNames={'#user_id_type': 'user_id_type', '#user_params': 'user_params'}, KeyConditionExpression='#user_id_type = :user_id_type', ExpressionAttributeValues={':user_id_type': user_id_type}, ProjectionExpression='#user_id_type, #user_params' ) items_no_avro = list( filter(lambda item: 'AVRO' not in item['user_params'], response['Items'])) items = list(filter(lambda item: periods in item['user_params'], items_no_avro)) return items def clean_up(user_id_type, user_params): dynamodb = boto3.resource('dynamodb', region_name='us-east-1') table = dynamodb.Table('qa-accounting-statement-export') items = user_statement_export_items(user_id_type) items_to_delete = list( filter(lambda item: item['user_params'] == user_params, items)) for item in items_to_delete: print('\nRemoving item: {}'.format(item['user_params'])) response = table.delete_item(Key={'user_id_type': item['user_id_type'], 'user_params': item['user_params']}) assert response['ResponseMetadata']['HTTPStatusCode'] == 200