in lib/ec2macosinit/imds.go [26:56]
func (i *IMDSConfig) getIMDSProperty(endpoint string) (value string, httpResponseCode int, err error) {
// Check that an IMDSv2 token exists - get one if it doesn't
if i.token == "" {
err = i.getNewToken()
if err != nil {
return "", 0, fmt.Errorf("ec2macosinit: error while getting new IMDS token: %s\n", err)
}
}
// Create request
client := &http.Client{}
req, err := http.NewRequest(http.MethodGet, imdsBase+endpoint, nil)
if err != nil {
return "", 0, fmt.Errorf("ec2macosinit: error while creating new HTTP request: %s\n", err)
}
req.Header.Set(tokenHeader, i.token) // set IMDSv2 token
// Make request
resp, err := client.Do(req)
if err != nil {
return "", 0, fmt.Errorf("ec2macosinit: error while requesting IMDS property: %s\n", err)
}
// Convert returned io.ReadCloser to string
value, err = ioReadCloserToString(resp.Body)
if err != nil {
return "", 0, fmt.Errorf("ec2macosinit: error reading response body: %s\n", err)
}
return value, resp.StatusCode, nil
}