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
JavaScript
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==
;