func buildMetadataForEcsPlatform()

in agent/envoy_bootstrap/platforminfo/platform_info_collector.go [107:144]


func buildMetadataForEcsPlatform(mapping map[string]interface{}) {
	// ECS platform information

	// Networks info: supportedIPFamilies, it's not an ECS only info, for others we may also need to set this
	supportedIPFamilies := ""

	ecsLaunchType := env.Get(ecsExecutionEnvVar)
	if ecsLaunchType != "" {
		ecsMetadata := map[string]interface{}{
			ecsLaunchTypeKey: ecsLaunchType,
		}

		ecsContainerInstanceArn := env.Get(ecsContainerInstanceArnEnvVar)
		if ecsContainerInstanceArn != "" {
			ecsMetadata[ecsContainerInstanceArnKey] = ecsContainerInstanceArn
		}

		// Look for V4 URI first and fallback on V3 URI
		ecsContainerMetadataUri := env.Or(ecsContainerMetadataUriV4Env, env.Get(ecsContainerMetadataUriEnv))
		// Get ECS container metadata
		if ecsContainerMetadataUri != "" {
			getEcsContainerMetadata(ecsContainerMetadataUri+ecsContainerMetadataTaskPath, ecsMetadata)
			getEcsEnvoyContainerMetadata(ecsContainerMetadataUri, ecsMetadata)
			supportedIPFamilies = getEcsContainerSupportedIPFamilies(ecsContainerMetadataUri + ecsContainerMetadataTaskPath)
		}
		// The AZ info is available from ECS container metadata itself
		if availabilityZone, exists := ecsMetadata[AvailabilityZoneKey]; exists {
			mapping[AvailabilityZoneKey] = availabilityZone
			delete(ecsMetadata, AvailabilityZoneKey)
		}

		// Build SupportedIPFamilies info in platform
		if supportedIPFamilies != "" {
			mapping[supportedIPFamiliesKey] = supportedIPFamilies
		}
		mapping[ecsPlatformInfoKey] = ecsMetadata
	}
}