diff --git a/deploy-cluster-aws/clusterize_confiles.py b/deploy-cluster-aws/clusterize_confiles.py
new file mode 100644
index 00000000..498953e5
--- /dev/null
+++ b/deploy-cluster-aws/clusterize_confiles.py
@@ -0,0 +1,72 @@
+# -*- coding: utf-8 -*-
+"""Given a directory full of default BigchainDB config files,
+transform them into config files for a cluster with proper
+keyrings, API endpoint values, etc.
+
+Note: This script assumes that there is a file named hostlist.py
+containing public_dns_names = a list of the public DNS names of
+all the hosts in the cluster.
+
+Usage:
+    python clusterize_confiles.py <dir> <number_of_files>
+"""
+
+from __future__ import unicode_literals
+import os
+import json
+import argparse
+
+from hostlist import public_dns_names
+
+
+# Parse the command-line arguments
+parser = argparse.ArgumentParser()
+parser.add_argument('dir',
+                    help='Directory containing the config files')
+parser.add_argument('number_of_files',
+                    help='Number of config files expected in dir',
+                    type=int)
+args = parser.parse_args()
+
+conf_dir = args.dir
+numfiles_expected = int(args.number_of_files)
+
+# Check if the number of files in conf_dir is what was expected
+conf_files = os.listdir(conf_dir)
+numfiles = len(conf_files)
+if numfiles != numfiles_expected:
+    raise ValueError('There are {} files in {} but {} were expected'.
+                     format(numfiles, conf_dir, numfiles_expected))
+
+# Make a list containing all the public keys from
+# all the config files
+pubkeys = []
+for filename in conf_files:
+    file_path = os.path.join(conf_dir, filename)
+    with open(file_path, 'r') as f:
+        conf_dict = json.load(f)
+        pubkey = conf_dict['keypair']['public']
+        pubkeys.append(pubkey)
+
+# Rewrite each config file, one at a time
+for i, filename in enumerate(conf_files):
+    file_path = os.path.join(conf_dir, filename)
+    with open(file_path, 'r') as f:
+        conf_dict = json.load(f)
+        # The keyring is the list of *all* public keys
+        # minus the config file's own public key
+        keyring = list(pubkeys)
+        keyring.remove(conf_dict['keypair']['public'])
+        conf_dict['keyring'] = keyring
+        # Allow incoming server traffic from any IP address
+        # to port 9984
+        conf_dict['server']['bind'] = '0.0.0.0:9984'
+        # Set the api_endpoint
+        conf_dict['api_endpoint'] = 'http://' + public_dns_names[i] + \
+                                    ':9984/api/v1'
+    # Delete the config file
+    os.remove(file_path)
+    # Write new config file with the same filename
+    print('Rewriting {}'.format(file_path))
+    with open(file_path, 'w') as f2:
+        json.dump(conf_dict, f2)
diff --git a/deploy-cluster-aws/make_confiles.sh b/deploy-cluster-aws/make_confiles.sh
new file mode 100755
index 00000000..91f4d1fa
--- /dev/null
+++ b/deploy-cluster-aws/make_confiles.sh
@@ -0,0 +1,40 @@
+#! /bin/bash
+
+# The set -e option instructs bash to immediately exit
+# if any command has a non-zero exit status
+set -e
+
+function printErr()
+    {
+        echo "usage: ./make_confiles.sh <dir> <number_of_files>"
+        echo "No argument $1 supplied"
+    }
+
+if [ -z "$1" ]; then
+    printErr "<dir>"
+    exit 1
+fi
+
+if [ -z "$2" ]; then
+    printErr "<number_of_files>"
+    exit 1
+fi
+
+CONFDIR=$1
+NUMFILES=$2
+
+# If $CONFDIR exists, remove it
+if [ -d "$CONFDIR" ]; then
+    rm -rf $CONFDIR
+fi
+
+# Create $CONFDIR
+mkdir $CONFDIR
+
+# Use the bigchaindb configure command to create
+# $NUMFILES BigchainDB config files in $CONFDIR
+for (( i=1; i<=$NUMFILES; i++ )); do
+    CONPATH=$CONFDIR"/bcdb_conf"$i
+    echo "Writing "$CONPATH
+    bigchaindb -y -c $CONPATH configure
+done