in scripts/go/analyzeCUR/analyzeCUR.go [92:120]
func getInstanceMetadata(sess *session.Session) map[string]interface{} {
c := &http.Client{
Timeout: 100 * time.Millisecond,
}
resp, err := c.Get("http://169.254.169.254/latest/dynamic/instance-identity/document")
var m map[string]interface{}
if err == nil {
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err == nil {
err = json.Unmarshal(body, &m)
if err != nil {
log.Fatalln("Could not parse MetaData, erorr: " + err.Error())
}
}
}
// if we havent obtained instance meta-data fetch account from STS - likely were not on EC2
_, ok := m["region"].(string)
if !ok {
svc := sts.New(sess)
result, err := svc.GetCallerIdentity(&sts.GetCallerIdentityInput{})
if err == nil {
m = make(map[string]interface{})
m["accountId"] = *result.Account
m["region"] = *sess.Config.Region
}
}
return m
}