UNPKG

1.2 kBJavaScriptView Raw
1import awsEmbeddedMetrics from 'aws-embedded-metrics';
2const defaults = {};
3const cloudwatchMetricsMiddleware = (opts = {})=>{
4 const { namespace, dimensions } = {
5 ...defaults,
6 ...opts
7 };
8 const cloudwatchMetricsBefore = (request)=>{
9 const metrics = awsEmbeddedMetrics.createMetricsLogger();
10 // If not set, defaults to aws-embedded-metrics
11 if (namespace) {
12 metrics.setNamespace(namespace);
13 }
14 // If not set, keeps defaults as defined here https://github.com/awslabs/aws-embedded-metrics-node/#configuration
15 if (dimensions) {
16 metrics.setDimensions(dimensions);
17 }
18 Object.assign(request.context, {
19 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 return {
31 before: cloudwatchMetricsBefore,
32 after: cloudwatchMetricsAfter,
33 onError: cloudwatchMetricsOnError
34 };
35};
36export default cloudwatchMetricsMiddleware;
37