code: func NewAWSProvider(awsConfig AWSConfig) (*AWSProvider, error) {
  	config := aws.NewConfig().WithMaxRetries(awsConfig.APIRetries)
  
  	config.WithHTTPClient(
  		instrumented_http.NewClient(config.HTTPClient, &instrumented_http.Callbacks{
  			PathProcessor: func(path string) string {
  				parts := strings.Split(path, "/")
  				return parts[len(parts)-1]
  			},
  		}),
  	)
  
  	session, err := session.NewSessionWithOptions(session.Options{
  		Config:            *config,
  		SharedConfigState: session.SharedConfigEnable,
  	})
  	if err != nil {
  		return nil, err
  	}
  
  	if awsConfig.AssumeRole != "" {
  		log.Infof("Assuming role: %s", awsConfig.AssumeRole)
  		session.Config.WithCredentials(stscreds.NewCredentials(session, awsConfig.AssumeRole))
  	}
  
  	provider := &AWSProvider{
  		client:               route53.New(session),
  		domainFilter:         awsConfig.DomainFilter,
  		zoneIDFilter:         awsConfig.ZoneIDFilter,
  		zoneTypeFilter:       awsConfig.ZoneTypeFilter,
  		zoneTagFilter:        awsConfig.ZoneTagFilter,
  		batchChangeSize:      awsConfig.BatchChangeSize,
  		batchChangeInterval:  awsConfig.BatchChangeInterval,
  		evaluateTargetHealth: awsConfig.EvaluateTargetHealth,
  		dryRun:               awsConfig.DryRun,
  	}
  
  	return provider, nil
  }
docs: // NewAWSProvider initializes a new AWS Route53 based Provider.