1 | import awsEmbeddedMetrics from 'aws-embedded-metrics';
|
2 | const defaults = {};
|
3 | const cloudwatchMetricsMiddleware = (opts = {})=>{
|
4 | const { namespace, dimensions } = {
|
5 | ...defaults,
|
6 | ...opts
|
7 | };
|
8 | const cloudwatchMetricsBefore = (request)=>{
|
9 | const metrics = awsEmbeddedMetrics.createMetricsLogger();
|
10 |
|
11 | if (namespace) {
|
12 | metrics.setNamespace(namespace);
|
13 | }
|
14 |
|
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 | };
|
36 | export default cloudwatchMetricsMiddleware;
|
37 |
|