projects/imds/imds.go (43 lines of code) (raw):
package main
import (
"context"
"flag"
"fmt"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/ec2"
)
var region string
func getLaunchTemplates() {
sess, _ := session.NewSession(&aws.Config{
Region: aws.String(region)},
)
client := ec2.New(sess)
ctx := context.Background()
client.DescribeLaunchTemplatesPagesWithContext(ctx, &ec2.DescribeLaunchTemplatesInput{},
func(page *ec2.DescribeLaunchTemplatesOutput, lastPage bool) bool {
fmt.Println("Received", len(page.LaunchTemplates), "objects in page")
for _, obj := range page.LaunchTemplates {
output, _ := client.DescribeLaunchTemplateVersions(&ec2.DescribeLaunchTemplateVersionsInput{
LaunchTemplateId: obj.LaunchTemplateId,
Versions: []*string{aws.String("$Default")},
})
versions := output.LaunchTemplateVersions
for _, v := range versions {
fmt.Println("The launch template:\t", aws.StringValue(v.LaunchTemplateId), aws.StringValue(v.LaunchTemplateName))
if v.LaunchTemplateData.MetadataOptions != nil {
fmt.Println("Has hop count of:\t", aws.Int64Value(v.LaunchTemplateData.MetadataOptions.HttpPutResponseHopLimit))
} else {
fmt.Println("Has hop count of:\t undefined")
}
}
}
return true
},
)
}
func main() {
flag.StringVar(®ion, "region", "us-west-2", "AWS region")
flag.Parse()
getLaunchTemplates()
}