UNPKG

aws-ddk-core

Version:

The AWS DataOps Development Kit is an open source development framework for customers that build data workflows and modern data architecture on AWS.

69 lines 9.92 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.DataPipeline = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const cloudwatch_actions = require("aws-cdk-lib/aws-cloudwatch-actions"); const events = require("aws-cdk-lib/aws-events"); const sns = require("aws-cdk-lib/aws-sns"); const constructs_1 = require("constructs"); const stage_1 = require("./stage"); class DataPipeline extends constructs_1.Construct { constructor(scope, id, props) { super(scope, id); this.name = props.name; this.description = props.description; this.rules = []; } addStage(props) { const { stage } = props; const skipRule = props.skipRule ?? false; if (props.overrideRule) { this.addRule({ overrideRule: props.overrideRule, schedule: props.schedule, ruleName: props.ruleName }); } else if (this.previousStage && skipRule === false) { if (stage.targets === undefined) { throw new Error("DataPipeline stage is missing a targets. Unless the rule between stages is overridden, every stage except for the first one must be a DataStage with a defined list of targets."); } this.addRule({ id: `${stage.node.id} Rule`, eventPattern: this.previousStage?.eventPattern, eventTargets: stage.targets, schedule: props.schedule, ruleName: props.ruleName, }); } if (this.notificationsTopic && stage instanceof stage_1.DataStage) { const topic = this.notificationsTopic; stage.cloudwatchAlarms.forEach((alarm) => { alarm.addAlarmAction(new cloudwatch_actions.SnsAction(topic)); }); } this.previousStage = stage; return this; } addRule(props) { this.rules.push(props.overrideRule ? props.overrideRule : props.schedule ? new events.Rule(this, props.id, { schedule: props.schedule, targets: props.eventTargets, ruleName: props.ruleName, }) : new events.Rule(this, props.id, { eventPattern: props.eventPattern, targets: props.eventTargets, ruleName: props.ruleName, })); return this; } addNotifications(notificationsTopic) { this.notificationsTopic = notificationsTopic ?? new sns.Topic(this, "Notifications"); return this; } } exports.DataPipeline = DataPipeline; _a = JSII_RTTI_SYMBOL_1; DataPipeline[_a] = { fqn: "aws-ddk-core.DataPipeline", version: "1.4.1" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BpcGVsaW5lcy9waXBlbGluZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5RUFBeUU7QUFDekUsaURBQWlEO0FBQ2pELDJDQUEyQztBQUMzQywyQ0FBdUM7QUFDdkMsbUNBQTJDO0FBd0IzQyxNQUFhLFlBQWEsU0FBUSxzQkFBUztJQVF6QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXdCO1FBQ2hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUVyQyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQW9CO1FBQzNCLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDeEIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7UUFFekMsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDeEc7YUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksUUFBUSxLQUFLLEtBQUssRUFBRTtZQUNuRCxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFO2dCQUMvQixNQUFNLElBQUksS0FBSyxDQUNiLGlMQUFpTCxDQUNsTCxDQUFDO2FBQ0g7WUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUNYLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPO2dCQUMzQixZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxZQUFZO2dCQUM5QyxZQUFZLEVBQUUsS0FBSyxDQUFDLE9BQU87Z0JBQzNCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtnQkFDeEIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO2FBQ3pCLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksS0FBSyxZQUFZLGlCQUFTLEVBQUU7WUFDekQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQ3RDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDdkMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBbUI7UUFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ2IsS0FBSyxDQUFDLFlBQVk7WUFDaEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZO1lBQ3BCLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUTtnQkFDaEIsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUcsRUFBRTtvQkFDL0IsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO29CQUN4QixPQUFPLEVBQUUsS0FBSyxDQUFDLFlBQVk7b0JBQzNCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtpQkFDekIsQ0FBQztnQkFDSixDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRyxFQUFFO29CQUMvQixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7b0JBQ2hDLE9BQU8sRUFBRSxLQUFLLENBQUMsWUFBWTtvQkFDM0IsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO2lCQUN6QixDQUFDLENBQ1AsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGdCQUFnQixDQUFDLGtCQUErQjtRQUM5QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztRQUNyRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7O0FBekVILG9DQTBFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNsb3Vkd2F0Y2hfYWN0aW9ucyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gtYWN0aW9uc1wiO1xuaW1wb3J0ICogYXMgZXZlbnRzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZXZlbnRzXCI7XG5pbXBvcnQgKiBhcyBzbnMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1zbnNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBEYXRhU3RhZ2UsIFN0YWdlIH0gZnJvbSBcIi4vc3RhZ2VcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhUGlwZWxpbmVQcm9wcyB7XG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZFN0YWdlUHJvcHMge1xuICByZWFkb25seSBzdGFnZTogU3RhZ2U7XG4gIHJlYWRvbmx5IHNraXBSdWxlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgb3ZlcnJpZGVSdWxlPzogZXZlbnRzLklSdWxlO1xuICByZWFkb25seSBydWxlTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgc2NoZWR1bGU/OiBldmVudHMuU2NoZWR1bGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkUnVsZVByb3BzIHtcbiAgcmVhZG9ubHkgaWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGV2ZW50UGF0dGVybj86IGV2ZW50cy5FdmVudFBhdHRlcm47XG4gIHJlYWRvbmx5IGV2ZW50VGFyZ2V0cz86IGV2ZW50cy5JUnVsZVRhcmdldFtdO1xuICByZWFkb25seSBvdmVycmlkZVJ1bGU/OiBldmVudHMuSVJ1bGU7XG4gIHJlYWRvbmx5IHJ1bGVOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBzY2hlZHVsZT86IGV2ZW50cy5TY2hlZHVsZTtcbn1cblxuZXhwb3J0IGNsYXNzIERhdGFQaXBlbGluZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIHByaXZhdGUgcHJldmlvdXNTdGFnZT86IFN0YWdlO1xuICBwcml2YXRlIHJ1bGVzOiBldmVudHMuSVJ1bGVbXTtcbiAgcHJpdmF0ZSBub3RpZmljYXRpb25zVG9waWM/OiBzbnMuSVRvcGljO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhUGlwZWxpbmVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLm5hbWUgPSBwcm9wcy5uYW1lO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBwcm9wcy5kZXNjcmlwdGlvbjtcblxuICAgIHRoaXMucnVsZXMgPSBbXTtcbiAgfVxuXG4gIGFkZFN0YWdlKHByb3BzOiBBZGRTdGFnZVByb3BzKTogRGF0YVBpcGVsaW5lIHtcbiAgICBjb25zdCB7IHN0YWdlIH0gPSBwcm9wcztcbiAgICBjb25zdCBza2lwUnVsZSA9IHByb3BzLnNraXBSdWxlID8/IGZhbHNlO1xuXG4gICAgaWYgKHByb3BzLm92ZXJyaWRlUnVsZSkge1xuICAgICAgdGhpcy5hZGRSdWxlKHsgb3ZlcnJpZGVSdWxlOiBwcm9wcy5vdmVycmlkZVJ1bGUsIHNjaGVkdWxlOiBwcm9wcy5zY2hlZHVsZSwgcnVsZU5hbWU6IHByb3BzLnJ1bGVOYW1lIH0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcmV2aW91c1N0YWdlICYmIHNraXBSdWxlID09PSBmYWxzZSkge1xuICAgICAgaWYgKHN0YWdlLnRhcmdldHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJEYXRhUGlwZWxpbmUgc3RhZ2UgaXMgbWlzc2luZyBhIHRhcmdldHMuIFVubGVzcyB0aGUgcnVsZSBiZXR3ZWVuIHN0YWdlcyBpcyBvdmVycmlkZGVuLCBldmVyeSBzdGFnZSBleGNlcHQgZm9yIHRoZSBmaXJzdCBvbmUgbXVzdCBiZSBhIERhdGFTdGFnZSB3aXRoIGEgZGVmaW5lZCBsaXN0IG9mIHRhcmdldHMuXCIsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWRkUnVsZSh7XG4gICAgICAgIGlkOiBgJHtzdGFnZS5ub2RlLmlkfSBSdWxlYCxcbiAgICAgICAgZXZlbnRQYXR0ZXJuOiB0aGlzLnByZXZpb3VzU3RhZ2U/LmV2ZW50UGF0dGVybixcbiAgICAgICAgZXZlbnRUYXJnZXRzOiBzdGFnZS50YXJnZXRzLFxuICAgICAgICBzY2hlZHVsZTogcHJvcHMuc2NoZWR1bGUsXG4gICAgICAgIHJ1bGVOYW1lOiBwcm9wcy5ydWxlTmFtZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm5vdGlmaWNhdGlvbnNUb3BpYyAmJiBzdGFnZSBpbnN0YW5jZW9mIERhdGFTdGFnZSkge1xuICAgICAgY29uc3QgdG9waWMgPSB0aGlzLm5vdGlmaWNhdGlvbnNUb3BpYztcbiAgICAgIHN0YWdlLmNsb3Vkd2F0Y2hBbGFybXMuZm9yRWFjaCgoYWxhcm0pID0+IHtcbiAgICAgICAgYWxhcm0uYWRkQWxhcm1BY3Rpb24obmV3IGNsb3Vkd2F0Y2hfYWN0aW9ucy5TbnNBY3Rpb24odG9waWMpKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMucHJldmlvdXNTdGFnZSA9IHN0YWdlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkUnVsZShwcm9wczogQWRkUnVsZVByb3BzKTogRGF0YVBpcGVsaW5lIHtcbiAgICB0aGlzLnJ1bGVzLnB1c2goXG4gICAgICBwcm9wcy5vdmVycmlkZVJ1bGVcbiAgICAgICAgPyBwcm9wcy5vdmVycmlkZVJ1bGVcbiAgICAgICAgOiBwcm9wcy5zY2hlZHVsZVxuICAgICAgICA/IG5ldyBldmVudHMuUnVsZSh0aGlzLCBwcm9wcy5pZCEsIHtcbiAgICAgICAgICAgIHNjaGVkdWxlOiBwcm9wcy5zY2hlZHVsZSxcbiAgICAgICAgICAgIHRhcmdldHM6IHByb3BzLmV2ZW50VGFyZ2V0cyxcbiAgICAgICAgICAgIHJ1bGVOYW1lOiBwcm9wcy5ydWxlTmFtZSxcbiAgICAgICAgICB9KVxuICAgICAgICA6IG5ldyBldmVudHMuUnVsZSh0aGlzLCBwcm9wcy5pZCEsIHtcbiAgICAgICAgICAgIGV2ZW50UGF0dGVybjogcHJvcHMuZXZlbnRQYXR0ZXJuLFxuICAgICAgICAgICAgdGFyZ2V0czogcHJvcHMuZXZlbnRUYXJnZXRzLFxuICAgICAgICAgICAgcnVsZU5hbWU6IHByb3BzLnJ1bGVOYW1lLFxuICAgICAgICAgIH0pLFxuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFkZE5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uc1RvcGljPzogc25zLklUb3BpYyk6IERhdGFQaXBlbGluZSB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25zVG9waWMgPSBub3RpZmljYXRpb25zVG9waWMgPz8gbmV3IHNucy5Ub3BpYyh0aGlzLCBcIk5vdGlmaWNhdGlvbnNcIik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cbiJdfQ==