code: private Signer computeSignerByURI(URI uri, String signerRegionOverride,
              boolean isRegionIdAsSignerParam) {
          if (uri == null) {
              throw new IllegalArgumentException(
                      "Endpoint is not set. Use setEndpoint to set an endpoint before performing any request.");
          }
          String service = getServiceNameIntern();
          String region = AwsHostNameUtils.parseRegionName(uri.getHost(), service);
  
          return computeSignerByServiceRegion(
                  service, region, signerRegionOverride, isRegionIdAsSignerParam);
      }
docs: Returns the signer for the given uri and the current client
  configuration.
  <p>
  Note, however, the signer returned for S3 is incomplete at this stage as
  the information on the S3 bucket and key is not yet known.
  
  @param signerRegionOverride
  the overriding signer region; or null if there is none.
  @param isRegionIdAsSignerParam
  true if the "regionId" is used to configure the signer if
  applicable; false if this method is called for the purpose of
  purely setting the communication end point of this AWS client,
  and therefore the "regionId" parameter will not be used
  directly for configuring the signer.