serverless-plugin-aws-alerts
Version:
[![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Dependency Status][daviddm-image]][daviddm-url] [![codecov][codecov-image]][codecov-url]
60 lines (54 loc) • 1.61 kB
JavaScript
const widgets = {
'api-gw': {
latency: {
numbers: require('./api-gw/latency/numbers'),
'time-series': require('./api-gw/latency/time-series'),
},
requests: {
numbers: require('./api-gw/requests/numbers'),
'time-series': require('./api-gw/requests/time-series'),
},
},
lambda: {
duration: {
numbers: require('./lambda/duration/numbers'),
'time-series': require('./lambda/duration/time-series'),
},
errors: {
numbers: require('./lambda/errors/numbers'),
'time-series': require('./lambda/errors/time-series'),
},
invocations: {
numbers: require('./lambda/invocations/numbers'),
'time-series': require('./lambda/invocations/time-series'),
},
throttles: {
numbers: require('./lambda/throttles/numbers'),
'time-series': require('./lambda/throttles/time-series'),
},
iteratorage: {
numbers: require('./lambda/iterator-age/numbers'),
'time-series': require('./lambda/iterator-age/time-series'),
},
},
};
const getWidget = (service, metric, display) => {
const serviceWidgets = widgets[service];
if (!serviceWidgets) {
throw new Error(`Invalid service ${service}`);
}
const serviceMetricWidgets = serviceWidgets[metric];
if (!serviceMetricWidgets) {
throw new Error(`Invalid metric ${metric} for service ${service}`);
}
const widget = serviceMetricWidgets[display];
if (!widget) {
throw new Error(
`Invalid metric ${display} for service ${service} and metric ${metric}`
);
}
return widget;
};
module.exports = {
getWidget,
};