Skip to content

Instantly share code, notes, and snippets.

@jumping
Last active July 21, 2020 22:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jumping/65fe77fa75dcbb2ee2b35c9b864c7e17 to your computer and use it in GitHub Desktop.
Save jumping/65fe77fa75dcbb2ee2b35c9b864c7e17 to your computer and use it in GitHub Desktop.
print all tags and value of the running EC2 instance from the inside (golang)
package main
import (
"fmt"
"strings"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/ec2"
"github.com/aws/aws-sdk-go/aws/ec2metadata"
)
func RegionInstanceId() (region string, instanceID string) {
c := ec2metadata.New(session.New())
ec2InstanceIdentifyDocument, _ := c.GetInstanceIdentityDocument()
region = ec2InstanceIdentifyDocument.Region
instanceID = ec2InstanceIdentifyDocument.InstanceID
//fmt.Println(instanceID)
return
}
func GetNameTag(name string) (value string, err error) {
region, instanceID := RegionInstanceId()
svc := ec2.New(session.New(&aws.Config{Region: aws.String(region)}))
params := &ec2.DescribeInstancesInput{
InstanceIds: []*string{
aws.String(instanceID),
},
}
resp, err := svc.DescribeInstances(params)
if err != nil {
fmt.Printf("%s", err)
return "", err
}
if len(resp.Reservations) == 0 {
return "", err
}
for idx := range resp.Reservations {
for _, inst := range resp.Reservations[idx].Instances {
for _, tag := range inst.Tags {
if (name != "") && (*tag.Key == name) {
//fmt.Println(*tag.Key, "=", *tag.Value)
return *tag.Value, nil
}
}
}
}
return
}
func main() {
var name string
flag.StringVar(&name, "name", "", "Which tag will output instead of all tags")
flag.Parse()
value, err := GetNameTag(name)
if err != nil {
log.Println(err)
return
}
fmt.Println(value)
}
@jumping
Copy link
Author

jumping commented Jul 29, 2016

code refactoring

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment