yield makeMetric()

in code/log-processing/src/handlers/index.js [100:165]


			yield makeMetric(initDuration, 'Milliseconds', 'InitDuration', dimensions, namespace, timestamp)
		}
	} catch (e) {
		log.error('failed to parse Lambda cold start metric, skipped...', { event, timestamp })
		return
	}
}

function parseFloatWith(regex, input) {
	const res = regex.exec(input)
	return parseFloat(res[1])
}

function makeMetric(value, unit, name, dimensions, namespace, timestamp) {
	return {
		Value: value,
		Unit: unit,
		MetricName: name,
		Dimensions: dimensions,
		Namespace: namespace,
		Timestamp: timestamp
	}
}

function* parseRawLogData(dimensions, logEvent) {
	//log.debug('Parsing raw log event %o', logEvent)

	const timestamp = new Date(logEvent.timestamp).toJSON()

	yield* tryParseCustomMetric(logEvent.event, dimensions, timestamp)
}

function* parseLambdaLogData(dimensions, event) {
	//log.debug('Parsing lambda log event %o', event)

	const rawEvent = _.get(event, 'extractedFields.event', event.message)
	const timestamp = _.get(
		event,
		'extractedFields.timestamp',
		new Date(event.timestamp).toJSON())

	yield* tryParseCustomMetric(rawEvent, dimensions, timestamp)

	if (process.env.RECORD_LAMBDA_COLD_START_METRIC === 'true') {
		yield* tryParseUsageMetrics(rawEvent, dimensions, timestamp)
	}

	if (process.env.RECORD_LAMBDA_COST_METRIC === 'true') {
		yield* tryParseCostMetric(rawEvent, dimensions, timestamp)
	}

	if (process.env.RECORD_LAMBDA_COLD_START_METRIC === 'true') {
		yield* tryParseColdStartMetric(rawEvent, dimensions, timestamp)
	}
}


const extractLogEvents = event => {
	// CloudWatch Logs
	if (event.awslogs) {
		return [parseCWLogEvent(event.awslogs.data)]
	}

	// Kinesis
	if (event.Records && event.Records[0].eventSource === 'aws:kinesis') {
		return event.Records.map(record => {