UNPKG

raindancers-network

Version:
76 lines 9.47 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.GlueDataBase = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const cdk = require("aws-cdk-lib"); const aws_cdk_lib_1 = require("aws-cdk-lib"); const constructs = require("constructs"); const lakeformation = require("../../lakeformation/index"); const glue = require("../index"); class GlueDataBase extends constructs.Construct { constructor(scope, id, props) { super(scope, id); //this.bucket = props.bucket this.databaseName = props.databaseName; this.database = new aws_cdk_lib_1.aws_glue.CfnDatabase(this, props.databaseName, { catalogId: `${cdk.Aws.ACCOUNT_ID}`, databaseInput: { name: props.databaseName, }, }); } addCrawler(props) { // validate that the props provided are valid if (props.s3Targets && props.jdbcTargets) { throw new Error('Cannot have both s3Targets and jdbcTargets'); } ; if (props.s3Targets === undefined && props.jdbcTargets === undefined) { throw new Error('Must have one of s3Targets or jdbcTargets'); } ; // allow the crawler to access to the glue database new aws_cdk_lib_1.aws_lakeformation.CfnPermissions(this, 'gluedatabasepermission', { dataLakePrincipal: { dataLakePrincipalIdentifier: props.role.roleArn, }, resource: { databaseResource: { catalogId: this.database.catalogId, name: this.databaseName, }, }, permissions: [lakeformation.Permissions.ALL], }); if (props.s3Targets) { props.s3Targets.forEach((target, index) => { new aws_cdk_lib_1.aws_lakeformation.CfnPermissions(this, `s3permission${index}`, { dataLakePrincipal: { dataLakePrincipalIdentifier: props.role.roleArn, }, resource: { dataLocationResource: { catalogId: this.database.catalogId, s3Resource: `${target.s3Arn}`, }, }, permissions: [lakeformation.Permissions.CREATE_TABLE_READ_WRITE], }); }); } const dataCrawler = new glue.Crawler(this, `crawler${props.name}`, { name: props.name, role: props.role, databaseName: this.databaseName, description: props.description, s3Targets: props.s3Targets, jdbcTargets: props.jdbcTargets, }); return dataCrawler; } } exports.GlueDataBase = GlueDataBase; _a = JSII_RTTI_SYMBOL_1; GlueDataBase[_a] = { fqn: "raindancers-network.glue.GlueDataBase", version: "1.29.3" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x1ZWRhdGFiYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dsdWUvZGF0YWJhc2UvZ2x1ZWRhdGFiYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQW1DO0FBQ25DLDZDQUlxQjtBQUVyQix5Q0FBeUM7QUFDekMsMkRBQTJEO0FBQzNELGlDQUFpQztBQWdCakMsTUFBYSxZQUFhLFNBQVEsVUFBVSxDQUFDLFNBQVM7SUFLcEQsWUFBWSxLQUEyQixFQUFFLEVBQVUsRUFBRSxLQUFvQjtRQUN2RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLDRCQUE0QjtRQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFFdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHNCQUFRLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFO1lBQ2pFLFNBQVMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFO1lBQ2xDLGFBQWEsRUFBRTtnQkFDYixJQUFJLEVBQUUsS0FBSyxDQUFDLFlBQVk7YUFDekI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQXNCO1FBRXRDLDZDQUE2QztRQUM3QyxJQUFJLEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRTtZQUN4QyxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7U0FDL0Q7UUFBQSxDQUFDO1FBRUYsSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLFNBQVMsRUFBRTtZQUNwRSxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7U0FDOUQ7UUFBQSxDQUFDO1FBRUYsbURBQW1EO1FBQ25ELElBQUksK0JBQWlCLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSx3QkFBd0IsRUFBRTtZQUNuRSxpQkFBaUIsRUFBRTtnQkFDakIsMkJBQTJCLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPO2FBQ2hEO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLGdCQUFnQixFQUFFO29CQUNoQixTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTO29CQUNsQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVk7aUJBQ3hCO2FBQ0Y7WUFDRCxXQUFXLEVBQUUsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztTQUM3QyxDQUFDLENBQUM7UUFFSCxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUU7WUFDbkIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ3hDLElBQUksK0JBQWlCLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxlQUFlLEtBQUssRUFBRSxFQUFFO29CQUNqRSxpQkFBaUIsRUFBRTt3QkFDakIsMkJBQTJCLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPO3FCQUNoRDtvQkFDRCxRQUFRLEVBQUU7d0JBQ1Isb0JBQW9CLEVBQUU7NEJBQ3BCLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVM7NEJBQ2xDLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUU7eUJBQzlCO3FCQUNGO29CQUNELFdBQVcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsdUJBQXVCLENBQUM7aUJBQ2pFLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2pFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDMUIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1NBQy9CLENBQUMsQ0FBQztRQUVILE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7O0FBdkVILG9DQXdFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge1xuICBhd3NfbGFrZWZvcm1hdGlvbiBhcyBhd3NfbGFrZWZvcm1hdGlvbixcbiAgYXdzX2dsdWUsXG4gIGF3c19pYW0gYXMgaWFtLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5cbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBsYWtlZm9ybWF0aW9uIGZyb20gJy4uLy4uL2xha2Vmb3JtYXRpb24vaW5kZXgnO1xuaW1wb3J0ICogYXMgZ2x1ZSBmcm9tICcuLi9pbmRleCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkQ3Jhd2xlclByb3BzIHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSByb2xlOiBpYW0uUm9sZTtcbiAgcmVhZG9ubHkgczNUYXJnZXRzPzogZ2x1ZS5TM1RhcmdldFtdIHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBqZGJjVGFyZ2V0cz86IGdsdWUuSkRCQ1RhcmdldFtdO1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFCYXNlUHJvcHMge1xuICByZWFkb25seSBkYXRhYmFzZU5hbWU6IHN0cmluZztcbn1cblxuXG5leHBvcnQgY2xhc3MgR2x1ZURhdGFCYXNlIGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3Qge1xuXG4gIGRhdGFiYXNlOiBhd3NfZ2x1ZS5DZm5EYXRhYmFzZTtcbiAgZGF0YWJhc2VOYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRGF0YUJhc2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvL3RoaXMuYnVja2V0ID0gcHJvcHMuYnVja2V0XG4gICAgdGhpcy5kYXRhYmFzZU5hbWUgPSBwcm9wcy5kYXRhYmFzZU5hbWU7XG5cbiAgICB0aGlzLmRhdGFiYXNlID0gbmV3IGF3c19nbHVlLkNmbkRhdGFiYXNlKHRoaXMsIHByb3BzLmRhdGFiYXNlTmFtZSwge1xuICAgICAgY2F0YWxvZ0lkOiBgJHtjZGsuQXdzLkFDQ09VTlRfSUR9YCxcbiAgICAgIGRhdGFiYXNlSW5wdXQ6IHtcbiAgICAgICAgbmFtZTogcHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRDcmF3bGVyKHByb3BzOiBBZGRDcmF3bGVyUHJvcHMpOiBnbHVlLkNyYXdsZXIge1xuXG4gICAgLy8gdmFsaWRhdGUgdGhhdCB0aGUgcHJvcHMgcHJvdmlkZWQgYXJlIHZhbGlkXG4gICAgaWYgKHByb3BzLnMzVGFyZ2V0cyAmJiBwcm9wcy5qZGJjVGFyZ2V0cykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgaGF2ZSBib3RoIHMzVGFyZ2V0cyBhbmQgamRiY1RhcmdldHMnKTtcbiAgICB9O1xuXG4gICAgaWYgKHByb3BzLnMzVGFyZ2V0cyA9PT0gdW5kZWZpbmVkICYmIHByb3BzLmpkYmNUYXJnZXRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTXVzdCBoYXZlIG9uZSBvZiBzM1RhcmdldHMgb3IgamRiY1RhcmdldHMnKTtcbiAgICB9O1xuXG4gICAgLy8gYWxsb3cgdGhlIGNyYXdsZXIgdG8gYWNjZXNzIHRvIHRoZSBnbHVlIGRhdGFiYXNlXG4gICAgbmV3IGF3c19sYWtlZm9ybWF0aW9uLkNmblBlcm1pc3Npb25zKHRoaXMsICdnbHVlZGF0YWJhc2VwZXJtaXNzaW9uJywge1xuICAgICAgZGF0YUxha2VQcmluY2lwYWw6IHtcbiAgICAgICAgZGF0YUxha2VQcmluY2lwYWxJZGVudGlmaWVyOiBwcm9wcy5yb2xlLnJvbGVBcm4sXG4gICAgICB9LFxuICAgICAgcmVzb3VyY2U6IHtcbiAgICAgICAgZGF0YWJhc2VSZXNvdXJjZToge1xuICAgICAgICAgIGNhdGFsb2dJZDogdGhpcy5kYXRhYmFzZS5jYXRhbG9nSWQsXG4gICAgICAgICAgbmFtZTogdGhpcy5kYXRhYmFzZU5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcGVybWlzc2lvbnM6IFtsYWtlZm9ybWF0aW9uLlBlcm1pc3Npb25zLkFMTF0sXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMuczNUYXJnZXRzKSB7XG4gICAgICBwcm9wcy5zM1RhcmdldHMuZm9yRWFjaCgodGFyZ2V0LCBpbmRleCkgPT4ge1xuICAgICAgICBuZXcgYXdzX2xha2Vmb3JtYXRpb24uQ2ZuUGVybWlzc2lvbnModGhpcywgYHMzcGVybWlzc2lvbiR7aW5kZXh9YCwge1xuICAgICAgICAgIGRhdGFMYWtlUHJpbmNpcGFsOiB7XG4gICAgICAgICAgICBkYXRhTGFrZVByaW5jaXBhbElkZW50aWZpZXI6IHByb3BzLnJvbGUucm9sZUFybixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc291cmNlOiB7XG4gICAgICAgICAgICBkYXRhTG9jYXRpb25SZXNvdXJjZToge1xuICAgICAgICAgICAgICBjYXRhbG9nSWQ6IHRoaXMuZGF0YWJhc2UuY2F0YWxvZ0lkLFxuICAgICAgICAgICAgICBzM1Jlc291cmNlOiBgJHt0YXJnZXQuczNBcm59YCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwZXJtaXNzaW9uczogW2xha2Vmb3JtYXRpb24uUGVybWlzc2lvbnMuQ1JFQVRFX1RBQkxFX1JFQURfV1JJVEVdLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGFDcmF3bGVyID0gbmV3IGdsdWUuQ3Jhd2xlcih0aGlzLCBgY3Jhd2xlciR7cHJvcHMubmFtZX1gLCB7XG4gICAgICBuYW1lOiBwcm9wcy5uYW1lLFxuICAgICAgcm9sZTogcHJvcHMucm9sZSxcbiAgICAgIGRhdGFiYXNlTmFtZTogdGhpcy5kYXRhYmFzZU5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBzM1RhcmdldHM6IHByb3BzLnMzVGFyZ2V0cyxcbiAgICAgIGpkYmNUYXJnZXRzOiBwcm9wcy5qZGJjVGFyZ2V0cyxcbiAgICB9KTtcblxuICAgIHJldHVybiBkYXRhQ3Jhd2xlcjtcbiAgfVxufVxuIl19