code: func (secret *SSMSecretResource) retrieveSSMSecretValuesByRegion(region string, secrets []apicontainer.Secret, iamCredentials credentials.IAMRoleCredentials, wg *sync.WaitGroup, errorEvents chan error) {
  	seelog.Infof("ssm secret resource: retrieving secrets for region %s in task: [%s]", region, secret.taskARN)
  	defer wg.Done()
  
  	var wgPerRegion sync.WaitGroup
  	var secretNames []string
  
  	for _, s := range secrets {
  		secretKey := s.GetSecretResourceCacheKey()
  		if _, ok := secret.GetCachedSecretValue(secretKey); ok {
  			continue
  		}
  		secretNames = append(secretNames, s.ValueFrom)
  		if len(secretNames) == MaxBatchNum {
  			secretNamesTmp := make([]string, MaxBatchNum)
  			copy(secretNamesTmp, secretNames)
  			wgPerRegion.Add(1)
  			go secret.retrieveSSMSecretValues(region, secretNamesTmp, iamCredentials, &wgPerRegion, errorEvents)
  			secretNames = []string{}
  		}
  	}
  
  	if len(secretNames) > 0 {
  		wgPerRegion.Add(1)
  		go secret.retrieveSSMSecretValues(region, secretNames, iamCredentials, &wgPerRegion, errorEvents)
  	}
  	wgPerRegion.Wait()
  }
docs: // retrieveSSMSecretValuesByRegion reads secret values from cache first, if not exists, batches secrets based on field
  // valueFrom and call retrieveSSMSecretValues to retrieve values from SSM