func GetVolumeByInstanceIDSearch(region, instanceId, search string) (*Volumes, error) {
	sess := session.Must(session.NewSession(&aws.Config{Region: aws.String(region)}))
	svc := ec2.New(sess)
	params := &ec2.DescribeVolumesInput{
		Filters: []*ec2.Filter{
			{
				Name: aws.String("attachment.instance-id"),
				Values: []*string{
					aws.String(instanceId),
				},
			},
		},
	}
	result, err := svc.DescribeVolumes(params)
	if err != nil {
		return &Volumes{}, err
	}
	volList := new(Volumes)
	instList := new(Instances)
	GetRegionInstances(region, instList, "", false)
	vol := make(Volumes, len(result.Volumes))
	for i, volume := range result.Volumes {
		vol[i].Marshal(volume, region, instList)
	}
	term := regexp.MustCompile(search)
Loop:
	for i, v := range vol {
		rV := reflect.ValueOf(v)
		for k := 0; k < rV.NumField(); k++ {
			sVal := rV.Field(k).String()
			if term.MatchString(sVal) {
				*volList = append(*volList, vol[i])
				continue Loop
			}
		}
	}
	return volList, nil
}
GetVolumeByInstanceIDandTag returns a list of EBS Volumes given an Instance Id and tag pair
package aws
import (
	"errors"
	"fmt"
	"os"
	"reflect"
	"regexp"
	"sort"
	"sync"
	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/awserr"
	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/service/ec2"
	humanize "github.com/dustin/go-humanize"
	"github.com/murdinc/awsm/aws/regions"
	"github.com/murdinc/awsm/config"
	"github.com/murdinc/awsm/models"
	"github.com/murdinc/cli"
	"github.com/murdinc/terminal"
	"github.com/olekukonko/tablewriter"
)
type Volumes []Volume
type Volume models.Volume
func GetVolumesByInstanceID(region, instanceId string) (Volumes, error) {
	sess := session.Must(session.NewSession(&aws.Config{Region: aws.String(region)}))
	svc := ec2.New(sess)
	params := &ec2.DescribeVolumesInput{
		Filters: []*ec2.Filter{
			{
				Name: aws.String("attachment.instance-id"),
				Values: []*string{
					aws.String(instanceId),
				},
			},
		},
	}
	result, err := svc.DescribeVolumes(params)
	if err != nil {
		return Volumes{}, err
	}
	instList := new(Instances)
	GetRegionInstances(region, instList, "", false)
	volList := make(Volumes, len(result.Volumes))
	for i, volume := range result.Volumes {
		volList[i].Marshal(volume, region, instList)
	}
	return volList, nil
}
func GetVolumeById(region, volumeId string) (Volume, error) {
	sess := session.Must(session.NewSession(&aws.Config{Region: aws.String(region)}))
	svc := ec2.New(sess)
	params := &ec2.DescribeVolumesInput{
		VolumeIds: []*string{aws.String(volumeId)},
	}
	result, err := svc.DescribeVolumes(params)
	if err != nil {
		return Volume{}, err
	}
	count := len(result.Volumes)
	instList := new(Instances)
	GetRegionInstances(region, instList, "", false)
	switch count {
	case 0:
		return Volume{}, errors.New("No Volume found with id of [" + volumeId + "] in [" + region + "].")
	case 1:
		volume := new(Volume)
		volume.Marshal(result.Volumes[0], region, instList)
		return *volume, nil
	}
	volList := make(Volumes, len(result.Volumes))
	for i, volume := range result.Volumes {
		volList[i].Marshal(volume, region, instList)
	}
	sort.Sort(volList)
	volList.PrintTable()
	return Volume{}, errors.New("Please limit your search to return only one volume.")
}
func GetVolumeByTag(region, key, value string) (Volume, error) {
	sess := session.Must(session.NewSession(&aws.Config{Region: aws.String(region)}))
	svc := ec2.New(sess)
	params := &ec2.DescribeVolumesInput{
		Filters: []*ec2.Filter{
			{
				Name: aws.String("tag:" + key),
				Values: []*string{
					aws.String(value),
				},
			},
		},
	}
	result, err := svc.DescribeVolumes(params)
	if err != nil {
		return Volume{}, err
	}
	count := len(result.Volumes)
	instList := new(Instances)
	GetRegionInstances(region, instList, "", false)
	switch count {
	case 0:
		return Volume{}, errors.New("No Volume found with tag [" + key + "] of [" + value + "].")
	case 1:
		volume := new(Volume)
		volume.Marshal(result.Volumes[0], region, instList)
		return *volume, nil
	}
	volList := make(Volumes, len(result.Volumes))
	for i, volume := range result.Volumes {
		volList[i].Marshal(volume, region, instList)
	}
	sort.Sort(volList)
	volList.PrintTable()
	return Volume{}, errors.New("Please limit your search to return only one volume.")
}