func getEcsEnvoyContainerMetadata()

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
	}
}