code: func NewAWSSDProvider(domainFilter DomainFilter, namespaceType string, assumeRole string, dryRun bool) (*AWSSDProvider, error) {
  	config := aws.NewConfig()
  
  	config = config.WithHTTPClient(
  		instrumented_http.NewClient(config.HTTPClient, &instrumented_http.Callbacks{
  			PathProcessor: func(path string) string {
  				parts := strings.Split(path, "/")
  				return parts[len(parts)-1]
  			},
  		}),
  	)
  
  	sess, err := session.NewSessionWithOptions(session.Options{
  		Config:            *config,
  		SharedConfigState: session.SharedConfigEnable,
  	})
  	if err != nil {
  		return nil, err
  	}
  
  	if assumeRole != "" {
  		log.Infof("Assuming role: %s", assumeRole)
  		sess.Config.WithCredentials(stscreds.NewCredentials(sess, assumeRole))
  	}
  
  	sess.Handlers.Build.PushBack(request.MakeAddToUserAgentHandler("ExternalDNS", externaldns.Version))
  
  	provider := &AWSSDProvider{
  		client:              sd.New(sess),
  		namespaceFilter:     domainFilter,
  		namespaceTypeFilter: newSdNamespaceFilter(namespaceType),
  		dryRun:              dryRun,
  	}
  
  	return provider, nil
  }
docs: // NewAWSSDProvider initializes a new AWS Route53 Auto Naming based Provider.