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
}
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
}
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 ( " " , assumeRole ) sess . Config . WithCredentials ( stscreds . NewCredentials ( sess , assumeRole ) ) } sess . Handlers . Build . PushBack ( request . MakeAddToUserAgentHandler ( " " , externaldns . Version ) ) provider := & AWSSDProvider { client : sd . New ( sess ) , namespaceFilter : domainFilter , namespaceTypeFilter : newSdNamespaceFilter ( namespaceType ) , dryRun : dryRun , } return provider , nil }
// NewAWSSDProvider initializes a new AWS Route53 Auto Naming based Provider.
NewAWSSDProvider initializes a new AWS Route53 Auto Naming based Provider .