docs: func (s *CreateCachediSCSIVolumeInput) Validate() error {
  	invalidParams := request.ErrInvalidParams{Context: "CreateCachediSCSIVolumeInput"}
  	if s.ClientToken == nil {
  		invalidParams.Add(request.NewErrParamRequired("ClientToken"))
  	}
  	if s.ClientToken != nil && len(*s.ClientToken) < 5 {
  		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 5))
  	}
  	if s.GatewayARN == nil {
  		invalidParams.Add(request.NewErrParamRequired("GatewayARN"))
  	}
  	if s.GatewayARN != nil && len(*s.GatewayARN) < 50 {
  		invalidParams.Add(request.NewErrParamMinLen("GatewayARN", 50))
  	}
  	if s.KMSKey != nil && len(*s.KMSKey) < 7 {
  		invalidParams.Add(request.NewErrParamMinLen("KMSKey", 7))
  	}
  	if s.NetworkInterfaceId == nil {
  		invalidParams.Add(request.NewErrParamRequired("NetworkInterfaceId"))
  	}
  	if s.SourceVolumeARN != nil && len(*s.SourceVolumeARN) < 50 {
  		invalidParams.Add(request.NewErrParamMinLen("SourceVolumeARN", 50))
  	}
  	if s.TargetName == nil {
  		invalidParams.Add(request.NewErrParamRequired("TargetName"))
  	}
  	if s.TargetName != nil && len(*s.TargetName) < 1 {
  		invalidParams.Add(request.NewErrParamMinLen("TargetName", 1))
  	}
  	if s.VolumeSizeInBytes == nil {
  		invalidParams.Add(request.NewErrParamRequired("VolumeSizeInBytes"))
  	}
  	if s.Tags != nil {
  		for i, v := range s.Tags {
  			if v == nil {
  				continue
  			}
  			if err := v.Validate(); err != nil {
  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
  			}
  		}
  	}
  
  	if invalidParams.Len() > 0 {
  		return invalidParams
  	}
  	return nil
  }