Skip to content

Instantly share code, notes, and snippets.

@jumping
Last active July 21, 2020 22:24
Show Gist options
  • Select an option

  • Save jumping/65fe77fa75dcbb2ee2b35c9b864c7e17 to your computer and use it in GitHub Desktop.

Select an option

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
Copy Markdown
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