code: func NewDiscovery(conf *SDConfig, logger log.Logger) *Discovery {
  	creds := credentials.NewStaticCredentials(conf.AccessKey, string(conf.SecretKey), "")
  	if conf.AccessKey == "" && conf.SecretKey == "" {
  		creds = nil
  	}
  	if logger == nil {
  		logger = log.NewNopLogger()
  	}
  	d := &Discovery{
  		aws: &aws.Config{
  			Endpoint:    &conf.Endpoint,
  			Region:      &conf.Region,
  			Credentials: creds,
  		},
  		profile:  conf.Profile,
  		roleARN:  conf.RoleARN,
  		filters:  conf.Filters,
  		interval: time.Duration(conf.RefreshInterval),
  		port:     conf.Port,
  	}
  	d.Discovery = refresh.NewDiscovery(
  		logger,
  		"ec2",
  		time.Duration(conf.RefreshInterval),
  		d.refresh,
  	)
  	return d
  }
docs: // NewDiscovery returns a new EC2Discovery which periodically refreshes its targets.