code: func (p *AWSSDProvider) ListServicesByNamespaceID(namespaceID *string) (map[string]*sd.Service, error) {
  	serviceIds := make([]*string, 0)
  
  	f := func(resp *sd.ListServicesOutput, lastPage bool) bool {
  		for _, srv := range resp.Services {
  			serviceIds = append(serviceIds, srv.Id)
  		}
  
  		return true
  	}
  
  	err := p.client.ListServicesPages(&sd.ListServicesInput{
  		Filters: []*sd.ServiceFilter{{
  			Name:   aws.String(sd.ServiceFilterNameNamespaceId),
  			Values: []*string{namespaceID},
  		}},
  	}, f)
  	if err != nil {
  		return nil, err
  	}
  
  	// get detail of each listed service
  	services := make(map[string]*sd.Service)
  	for _, serviceID := range serviceIds {
  		service, err := p.GetServiceDetail(serviceID)
  		if err != nil {
  			return nil, err
  		}
  
  		services[aws.StringValue(service.Name)] = service
  	}
  
  	return services, nil
  }
docs: // ListServicesByNamespaceID returns list of services in given namespace. Returns map[srv_name]*sd.Service