UNPKG

@punchcard/data-lake

Version:
47 lines 3.89 kB
"use strict"; 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==