@bitblit/ratchet-epsilon-common
Version:
Tiny adapter to simplify building API gateway Lambda APIS
36 lines • 1.49 kB
JavaScript
import { Logger } from '@bitblit/ratchet-common/logger/logger';
import { AwsUtil } from '../util/aws-util.js';
import { LambdaEventDetector } from '@bitblit/ratchet-aws/lambda/lambda-event-detector';
import { NoHandlersFoundError } from '../config/no-handlers-found-error.js';
export class DynamoEpsilonLambdaEventHandler {
_epsilon;
constructor(_epsilon) {
this._epsilon = _epsilon;
}
extractLabel(evt, _context) {
return 'DDBEvt:' + evt.Records[0].eventName + ':' + evt.Records[0].eventSource;
}
handlesEvent(evt) {
return LambdaEventDetector.isValidDynamoDBEvent(evt);
}
async processEvent(evt, _context) {
let rval = null;
if (this._epsilon.config && this._epsilon.config.dynamoDb && evt && evt.Records && evt.Records.length > 0) {
const finder = evt.Records[0].eventSourceARN;
const handler = AwsUtil.findInMap(finder, this._epsilon.config.dynamoDb.handlers);
if (handler) {
rval = await handler(evt);
}
else {
Logger.info('Found no Dynamo handler for : %s', finder);
throw new NoHandlersFoundError();
}
}
return rval;
}
async processUncaughtError(event, context, err) {
Logger.error('Error slipped out to outer edge (Dynamo). Logging and rethrowing : %s', err, err);
throw err;
}
}
//# sourceMappingURL=dynamo-epsilon-lambda-event-handler.js.map