serverless-step-functions
Version:
The module is AWS Step Functions plugin for Serverless Framework
68 lines (57 loc) • 1.44 kB
JavaScript
const Joi = require('joi');
const arn = Joi.alternatives().try(
Joi.string(),
Joi.object().keys({
Ref: Joi.string(),
}),
Joi.object().keys({
'Fn::GetAtt': Joi.array().items(Joi.string()),
}),
Joi.object().keys({
'Fn::ImportValue': Joi.alternatives().try(
Joi.string(),
Joi.object(),
),
}),
Joi.object().keys({
'Fn::Join': Joi.array().items(
Joi.string(),
Joi.array().items(
Joi.string(),
Joi.object().keys({
Ref: Joi.string(),
}),
),
),
}),
);
const topics = Joi.object().keys({
ok: arn,
alarm: arn,
insufficientData: arn,
}).or('ok', 'alarm', 'insufficientData');
const treatMissingData = Joi.string()
.allow('missing', 'ignore', 'breaching', 'notBreaching')
.default('missing');
const simpleMetric = Joi.string()
.allow('executionsTimedOut', 'executionsFailed', 'executionsAborted', 'executionThrottled',
'executionsSucceeded');
const complexMetric = Joi.object().keys({
metric: simpleMetric.required(),
logicalId: Joi.string(),
alarmName: Joi.string(),
treatMissingData,
});
const metric = Joi.alternatives().try(
simpleMetric,
complexMetric,
);
const metrics = Joi.array().items(metric).min(1);
const nameTemplate = Joi.string();
const schema = Joi.object().keys({
topics: topics.required(),
metrics: metrics.required(),
nameTemplate,
treatMissingData,
});
module.exports = schema;