constructor() {
        super();
        /*
         * Config files will be looked up under the directories:
         * <project-root>/conf
         * <project-root>
         *
         * An error will be thrown if the config files cannot be found
         *
         * The path to the "config.json" config can be overridden using the
         * S3_CONFIG_FILE environment var
         *
         * The path to the "locationConfig.json" config can be overridden using
         * the S3_LOCATION_FILE environment var.
         */
        this._basePath = path.join(__dirname, '..');
        this.configPath = findConfigFile(process.env.S3_CONFIG_FILE ||
                                         'config.json');

        let locationConfigFileName = 'locationConfig.json';
        if (process.env.CI === 'true' && !process.env.S3_END_TO_END) {
            locationConfigFileName =
                'tests/locationConfig/locationConfigTests.json';
        }
        this.locationConfigPath = findConfigFile(process.env.S3_LOCATION_FILE ||
                                                 locationConfigFileName);

        if (process.env.S3_REPLICATION_FILE !== undefined) {
            this.replicationConfigPath = process.env.S3_REPLICATION_FILE;
        }

        // Read config automatically
        this._getLocationConfig();
        const config = this._getConfig();
        this._configureBackends();
        this._sseMigration(config);
    }
Reads from a config file and returns the content as a config object