github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/lib/awsutil/tags.go (about) 1 package awsutil 2 3 import ( 4 libtags "github.com/Cloud-Foundations/Dominator/lib/tags" 5 "github.com/aws/aws-sdk-go/aws" 6 "github.com/aws/aws-sdk-go/service/ec2" 7 ) 8 9 func makeFilterFromTag(tag libtags.Tag) *ec2.Filter { 10 if tag.Key == "" { 11 return nil 12 } 13 if tag.Value == "" { 14 return &ec2.Filter{ 15 Name: aws.String("tag-key"), 16 Values: aws.StringSlice([]string{tag.Key}), 17 } 18 } else { 19 return &ec2.Filter{ 20 Name: aws.String("tag:" + tag.Key), 21 Values: aws.StringSlice([]string{tag.Value}), 22 } 23 } 24 } 25 26 func createTagsFromList(list []*ec2.Tag) libtags.Tags { 27 tags := make(libtags.Tags, len(list)) 28 for _, tag := range list { 29 tags[aws.StringValue(tag.Key)] = aws.StringValue(tag.Value) 30 } 31 return tags 32 } 33 34 func makeFiltersFromTags(tags libtags.Tags) []*ec2.Filter { 35 if len(tags) < 1 { 36 return nil 37 } 38 filters := make([]*ec2.Filter, 0, len(tags)) 39 for key, value := range tags { 40 filters = append(filters, makeFilterFromTag(libtags.Tag{key, value})) 41 } 42 return filters 43 }