@punchcard/data-lake
Version:
Data Lake Construct
47 lines • 3.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DataLake = void 0;
const aws_glue_1 = require("@aws-cdk/aws-glue");
const punchcard_1 = require("punchcard");
const cdk_1 = require("punchcard/lib/core/cdk");
const construct_1 = require("punchcard/lib/core/construct");
const data_pipeline_1 = require("./data-pipeline");
const schema_1 = require("./schema");
class DataLake extends construct_1.Construct {
constructor(_scope, id, props) {
super(construct_1.Scope.resolve(_scope), id);
const scope = cdk_1.CDK.chain(({ core }) => construct_1.Scope.resolve(_scope).map(scope => new core.Construct(scope, id)));
this.database = scope.map(scope => new aws_glue_1.Database(scope, 'Database', {
databaseName: props.lakeName
}));
this.domain = props.domain || new punchcard_1.ElasticSearch.Domain(scope, 'Domain', {
version: punchcard_1.ElasticSearch.Version.V7_4,
ebsOptions: {
iops: 1000,
volumeSize: 128,
volumeType: punchcard_1.ElasticSearch.EbsVolumeType.io1,
},
elasticsearchClusterConfig: {
instanceType: 'c5.large.elasticsearch',
dedicatedMasterEnabled: true,
dedicatedMasterCount: 2,
dedicatedMasterType: 'c5.large.elasticsearch',
instanceCount: 1,
zoneAwarenessEnabled: false,
},
});
}
addDataType(props) {
return new data_pipeline_1.DataPipeline(this, props.type.FQN, {
schema: new schema_1.Schema({
id: props.id,
schemaName: props.type.FQN,
shape: props.type,
timestampField: props.timestamp
}),
indexSettings: props.indexSettings
});
}
}
exports.DataLake = DataLake;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1sYWtlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RhdGEtbGFrZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnREFBNkM7QUFFN0MseUNBQTBDO0FBRTFDLGdEQUE2QztBQUM3Qyw0REFBZ0U7QUFFaEUsbURBQStDO0FBQy9DLHFDQUFrQztBQU1sQyxNQUFhLFFBQVMsU0FBUSxxQkFBUztJQUlyQyxZQUFZLE1BQWEsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDekQsS0FBSyxDQUFDLGlCQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sS0FBSyxHQUFHLFNBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUUsQ0FBQyxpQkFBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2RyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLG1CQUFRLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRTtZQUNqRSxZQUFZLEVBQUUsS0FBSyxDQUFDLFFBQVE7U0FDN0IsQ0FBQyxDQUFDLENBQUM7UUFDSixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSx5QkFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFO1lBQ3RFLE9BQU8sRUFBRSx5QkFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQ25DLFVBQVUsRUFBRTtnQkFDVixJQUFJLEVBQUUsSUFBSTtnQkFDVixVQUFVLEVBQUUsR0FBRztnQkFDZixVQUFVLEVBQUUseUJBQWEsQ0FBQyxhQUFhLENBQUMsR0FBRzthQUM1QztZQUNELDBCQUEwQixFQUFFO2dCQUMxQixZQUFZLEVBQUUsd0JBQXdCO2dCQUN0QyxzQkFBc0IsRUFBRSxJQUFJO2dCQUM1QixvQkFBb0IsRUFBRSxDQUFDO2dCQUN2QixtQkFBbUIsRUFBRSx3QkFBd0I7Z0JBQzdDLGFBQWEsRUFBRSxDQUFDO2dCQUNoQixvQkFBb0IsRUFBRSxLQUFLO2FBQzVCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFdBQVcsQ0FJaEIsS0FBK0I7UUFDL0IsT0FBTyxJQUFJLDRCQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBSSxFQUFFO1lBQzdDLE1BQU0sRUFBRSxJQUFJLGVBQU0sQ0FBQztnQkFDakIsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNaLFVBQVUsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUk7Z0JBQzNCLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSTtnQkFDakIsY0FBYyxFQUFFLEtBQUssQ0FBQyxTQUFnQjthQUN2QyxDQUFDO1lBQ0YsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO1NBQ25DLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTVDRCw0QkE0Q0MifQ==