secretsfile = basefp.child('secrets').child(logfilename).open('a+')
    logfile = basefp.child('signup_logs').child(logfilename).open('a+')
    stdin = sys.stdin
    stdout = LoggingTeeStream(sys.stdout, logfile, '>')
    stderr = LoggingTeeStream(sys.stderr, logfile, '')

    # This is to work around the fact that fabric echoes all commands and output to sys.stdout.
    # It does have a way to disable that, but not (easily) to redirect it.
    sys.stdout = stderr

    def _close(res):
        stdout.flush()
        stderr.flush()
        secretsfile.close()
        logfile.close()
        return res
    def _err(f):
        print >>stderr, str(f)
        if hasattr(f.value, 'response'):
            print >>stderr, f.value.response
        print >>stdout, "%s: %s" % (f.value.__class__.__name__, f.value)
        return f

    d = defer.succeed(None)
    d.addCallback(lambda ign: replace_server(oldsecrets, amiimageid, instancesize, customer_email, stdout, stderr,
                                             secretsfile, logfilename))
    d.addErrback(_err)
    d.addBoth(_close)
    d.addCallbacks(lambda ign: os._exit(0), lambda ign: os._exit(1))
    reactor.run()
    old_ssec2_secrets_path = sys.argv[2]
    old_ssec2_secrets = simplejson.loads(FilePath(old_ssec2_secrets_path).getContent())

    # TODO: ideally these would be in the secrets file.
    amiimageid = sys.argv[3]
    instancesize = sys.argv[4]
    customer_email = sys.argv[5]


    def _close(res):
        sys.stdout.flush()
        sys.stderr.flush()
        signup_log_fp.open().close()
        stripesecrets_log_fp.open().close()
        SSEC2secrets_log_fp.open().close()
        return res
    def _err(f):
        print >>sys.stderr, str(f)
        if hasattr(f.value, 'response'):
            print >>sys.stderr, f.value.response
        print >>sys.stdout, "%s: %s" % (f.value.__class__.__name__, f.value)
        return f

    d = defer.succeed(None)
    d.addCallback(lambda ign: replace_server(old_ssec2_secrets, amiimageid, instancesize, customer_email, signup_stdout, signup_stderr,
                                             SSEC2_secretsfile, signup_logfile))
    d.addErrback(_err)
    d.addBoth(_close)
    d.addCallbacks(lambda ign: os._exit(0), lambda ign: os._exit(1))
    reactor.run()