lib/classes/Variables.js/Variables/getValueFromSource
class Variables:  getValueFromSource(variableString, propertyString) {
    let ret;
    if (this.tracker.contains(variableString)) {
      ret = this.tracker.get(variableString, propertyString);
    } else {
      if (variableString.match(this.slsRefSyntax)) {
        ret = this.getValueFromSls(variableString);
      } else if (variableString.match(this.envRefSyntax)) {
        ret = this.getValueFromEnv(variableString);
      } else if (variableString.match(this.optRefSyntax)) {
        ret = this.getValueFromOptions(variableString);
      } else if (variableString.match(this.selfRefSyntax)) {
        ret = this.getValueFromSelf(variableString);
      } else if (variableString.match(this.fileRefSyntax)) {
        ret = this.getValueFromFile(variableString);
      } else if (variableString.match(this.cfRefSyntax)) {
        ret = this.getValueFromCf(variableString);
      } else if (variableString.match(this.s3RefSyntax)) {
        ret = this.getValueFromS3(variableString);
      } else if (variableString.match(this.stringRefSyntax)) {
        ret = this.getValueFromString(variableString);
      } else if (variableString.match(this.ssmRefSyntax)) {
        ret = this.getValueFromSsm(variableString);
      } else if (variableString.match(this.deepRefSyntax)) {
        ret = this.getValueFromDeep(variableString);
      } else {
        const errorMessage = [
          `Invalid variable reference syntax for variable ${variableString}.`,
          ' You can only reference env vars, options, & files.',
          ' You can check our docs for more info.',
        ].join('');
        ret = BbPromise.reject(new this.serverless.classes.Error(errorMessage));
      }
      ret = this.tracker.add(variableString, ret, propertyString);
    }
    return ret;
  }