UNPKG

1.06 kBJavaScriptView Raw
1import awsEmbeddedMetrics from 'aws-embedded-metrics'
2
3const defaults = {}
4
5const cloudwatchMetricsMiddleware = (opts = {}) => {
6 const { namespace, dimensions } = { ...defaults, ...opts }
7 const cloudwatchMetricsBefore = (request) => {
8 const metrics = awsEmbeddedMetrics.createMetricsLogger()
9
10 // If not set, defaults to aws-embedded-metrics
11 if (namespace) {
12 metrics.setNamespace(namespace)
13 }
14
15 // If not set, keeps defaults as defined here https://github.com/awslabs/aws-embedded-metrics-node/#configuration
16 if (dimensions) {
17 metrics.setDimensions(dimensions)
18 }
19 Object.assign(request.context, { metrics })
20 }
21
22 const cloudwatchMetricsAfter = async (request) => {
23 await request.context.metrics.flush()
24 }
25 const cloudwatchMetricsOnError = async (request) => {
26 try {
27 await cloudwatchMetricsAfter(request)
28 } catch (e) {}
29 }
30
31 return {
32 before: cloudwatchMetricsBefore,
33 after: cloudwatchMetricsAfter,
34 onError: cloudwatchMetricsOnError
35 }
36}
37
38export default cloudwatchMetricsMiddleware