in agent/envoy_bootstrap/platforminfo/platform_info_collector.go [202:232]
func getEcsEnvoyContainerMetadata(uri string, ecsMetadata map[string]interface{}) {
response, err := http.Get(uri)
if err != nil {
log.Warnf("Unable to fetch ECS envoy container metadata from %s: %v", uri, err)
return
}
defer response.Body.Close()
responseBody, err := ioutil.ReadAll(response.Body)
if err != nil {
log.Warnf("Unable to read ECS envoy container metadata: %v", err)
return
}
var metadataMap map[string]interface{}
err = json.Unmarshal(responseBody, &metadataMap)
if err != nil {
log.Warnf("Unable to parse ECS envoy container metadata: %v", err)
return
}
// For reference on all the information that is returned from the task metadata endpoint, see
// https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-metadata-endpoint-v4.html
// Here we only pick the ones that are needed.
if CPULimit := fmt.Sprintf("%v", metadataMap["Limits"].(map[string]interface{})["CPU"]); CPULimit != "" {
ecsMetadata[ecsEnvoyContainerCpuLimit] = CPULimit
}
if MemoryLimit := fmt.Sprintf("%v", metadataMap["Limits"].(map[string]interface{})["Memory"]); MemoryLimit != "" {
ecsMetadata[ecsEnvoyContainerMemoryLimit] = MemoryLimit
}
}