UNPKG

raindancers-network

Version:
76 lines 10.4 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.RedShiftDatabase = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const path = require("path"); const aws_cdk_lib_1 = require("aws-cdk-lib"); const cdk = require("aws-cdk-lib"); const constructs = require("constructs"); /** * Create a Database in a Redshift Cluster */ class RedShiftDatabase extends constructs.Construct { constructor(scope, id, props) { super(scope, id); const addDatabaseLambda = new cdk.aws_lambda.Function(this, 'addDatabaseFunction', { runtime: aws_cdk_lib_1.aws_lambda.Runtime.PYTHON_3_9, handler: 'createdatabase.on_event', code: aws_cdk_lib_1.aws_lambda.Code.fromAsset(path.join(__dirname, '../../lambda/redshift')), timeout: cdk.Duration.seconds(900), }); addDatabaseLambda.addToRolePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({ effect: aws_cdk_lib_1.aws_iam.Effect.ALLOW, actions: [ 'redshift:GetClusterCredentialsWithIAM', 'redshift-data:ExecuteStatement', ], resources: ['*'], })); new cdk.CustomResource(this, `AddDatabaseCR${props.databaseName}`, { resourceType: 'Custom::RedshiftDatabase', serviceToken: new aws_cdk_lib_1.custom_resources.Provider(this, `AddDatabaseProvider${props.databaseName}`, { onEventHandler: addDatabaseLambda, }).serviceToken, properties: { ClusterIdentifier: props.cluster.clusterName, DatabaseName: props.databaseName, }, }); this.databaseName = props.databaseName, this.cluster = props.cluster; } executeSQLStatement(statementName, sql) { const executeSQLLambda = new cdk.aws_lambda.SingletonFunction(this, 'executeSQLFunction', { uuid: 'af1a295c-b69c-45bf-9bee-d9944a9da811', runtime: aws_cdk_lib_1.aws_lambda.Runtime.PYTHON_3_9, handler: 'executesql.on_event', code: aws_cdk_lib_1.aws_lambda.Code.fromAsset(path.join(__dirname, '../../lambda/redshift')), timeout: cdk.Duration.seconds(900), }); executeSQLLambda.addToRolePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({ effect: aws_cdk_lib_1.aws_iam.Effect.ALLOW, actions: [ 'redshift:GetClusterCredentialsWithIAM', 'redshift-data:ExecuteStatement', ], resources: ['*'], })); new cdk.CustomResource(this, `ExecuteSQL${statementName}`, { resourceType: 'Custom::ExecuteSQLStatment', serviceToken: new aws_cdk_lib_1.custom_resources.Provider(this, `ExecuteSQL-${statementName}`, { onEventHandler: executeSQLLambda, }).serviceToken, properties: { StatementName: statementName, ClusterIdentifier: this.cluster.clusterName, DatabaseName: this.databaseName, Sql: sql, }, }); } } exports.RedShiftDatabase = RedShiftDatabase; _a = JSII_RTTI_SYMBOL_1; RedShiftDatabase[_a] = { fqn: "raindancers-network.redshift.RedShiftDatabase", version: "1.29.3" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVkc2hpZnQvZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBNkI7QUFFN0IsNkNBS3FCO0FBRXJCLG1DQUFtQztBQUNuQyx5Q0FBeUM7QUFhekM7O0dBRUc7QUFDSCxNQUFhLGdCQUFpQixTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBS3hELFlBQVksS0FBMkIsRUFBRSxFQUFVLEVBQUUsS0FBNEI7UUFDL0UsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLGlCQUFpQixHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFO1lBQ2pGLE9BQU8sRUFBRSx3QkFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVO1lBQ3RDLE9BQU8sRUFBRSx5QkFBeUI7WUFDbEMsSUFBSSxFQUFFLHdCQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBQ2pGLE9BQU8sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7U0FDaEMsQ0FBQyxDQUFDO1FBRUgsaUJBQWlCLENBQUMsZUFBZSxDQUFDLElBQUkscUJBQUcsQ0FBQyxlQUFlLENBQUM7WUFDeEQsTUFBTSxFQUFFLHFCQUFHLENBQUMsTUFBTSxDQUFDLEtBQUs7WUFDeEIsT0FBTyxFQUFFO2dCQUNQLHVDQUF1QztnQkFDdkMsZ0NBQWdDO2FBQ2pDO1lBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO1NBQ2pCLENBQUMsQ0FBQyxDQUFDO1FBRUosSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsS0FBSyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ2pFLFlBQVksRUFBRSwwQkFBMEI7WUFDeEMsWUFBWSxFQUFFLElBQUksOEJBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLHNCQUFzQixLQUFLLENBQUMsWUFBWSxFQUFFLEVBQUU7Z0JBQzlFLGNBQWMsRUFBRSxpQkFBaUI7YUFDbEMsQ0FBQyxDQUFDLFlBQVk7WUFDZixVQUFVLEVBQUU7Z0JBQ1YsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXO2dCQUM1QyxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7YUFDakM7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZO1lBQ3RDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUMvQixDQUFDO0lBRU0sbUJBQW1CLENBQUMsYUFBcUIsRUFBRSxHQUFXO1FBRTNELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRTtZQUN4RixJQUFJLEVBQUUsc0NBQXNDO1lBQzVDLE9BQU8sRUFBRSx3QkFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVO1lBQ3RDLE9BQU8sRUFBRSxxQkFBcUI7WUFDOUIsSUFBSSxFQUFFLHdCQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBQzlFLE9BQU8sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7U0FDcEMsQ0FBQyxDQUFDO1FBRUgsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLElBQUkscUJBQUcsQ0FBQyxlQUFlLENBQUM7WUFDdEQsTUFBTSxFQUFFLHFCQUFHLENBQUMsTUFBTSxDQUFDLEtBQUs7WUFDeEIsT0FBTyxFQUFFO2dCQUNYLHVDQUF1QztnQkFDdkMsZ0NBQWdDO2FBQzdCO1lBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO1NBQ2xCLENBQUMsQ0FBQyxDQUFDO1FBRUosSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxhQUFhLGFBQWEsRUFBRSxFQUFFO1lBQ3hELFlBQVksRUFBRSw0QkFBNEI7WUFDMUMsWUFBWSxFQUFFLElBQUksOEJBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGNBQWMsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pFLGNBQWMsRUFBRSxnQkFBZ0I7YUFDakMsQ0FBQyxDQUFDLFlBQVk7WUFDZixVQUFVLEVBQUU7Z0JBQ1YsYUFBYSxFQUFFLGFBQWE7Z0JBQzVCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVztnQkFDM0MsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO2dCQUMvQixHQUFHLEVBQUUsR0FBRzthQUNUO1NBQ0gsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs7QUF0RUgsNENBd0VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIHJlZHNoaWZ0IGZyb20gJ0Bhd3MtY2RrL2F3cy1yZWRzaGlmdC1hbHBoYSc7XG5pbXBvcnQge1xuICBhd3NfaWFtIGFzIGlhbSxcbiAgYXdzX2xhbWJkYSxcbiAgY3VzdG9tX3Jlc291cmNlcyBhcyBjcixcbn1cbiAgZnJvbSAnYXdzLWNkay1saWInO1xuXG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgY29uc3RydWN0cyBmcm9tICdjb25zdHJ1Y3RzJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZFNoaWZ0RGF0YWJhc2VQcm9wc3tcbiAgLyoqXG5cdCAqIEEgbmFtZSBmb3IgdGhlIGRhdGFiYXNlXG5cdCAqL1xuICByZWFkb25seSBkYXRhYmFzZU5hbWU6IHN0cmluZztcbiAgLyoqXG5cdCAqIHdoaWNoIGNsdXN0ZXIgd2lsbCB0aGUgZGF0YWJhc2UgYmUgY3JlYXRlZCBpbi5cblx0ICovXG4gIHJlYWRvbmx5IGNsdXN0ZXI6IHJlZHNoaWZ0LkNsdXN0ZXI7XG59XG4vKipcbiAqIENyZWF0ZSBhIERhdGFiYXNlIGluIGEgUmVkc2hpZnQgQ2x1c3RlclxuICovXG5leHBvcnQgY2xhc3MgUmVkU2hpZnREYXRhYmFzZSBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IHtcblxuICByZWFkb25seSBkYXRhYmFzZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgY2x1c3RlcjogcmVkc2hpZnQuQ2x1c3RlcjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSZWRTaGlmdERhdGFiYXNlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgYWRkRGF0YWJhc2VMYW1iZGEgPSBuZXcgY2RrLmF3c19sYW1iZGEuRnVuY3Rpb24odGhpcywgJ2FkZERhdGFiYXNlRnVuY3Rpb24nLCB7XG4gICAgICBydW50aW1lOiBhd3NfbGFtYmRhLlJ1bnRpbWUuUFlUSE9OXzNfOSxcbiAgICAgIGhhbmRsZXI6ICdjcmVhdGVkYXRhYmFzZS5vbl9ldmVudCcsXG4gICAgICBjb2RlOiBhd3NfbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi9sYW1iZGEvcmVkc2hpZnQnKSksXG5cdCAgdGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoOTAwKSxcbiAgICB9KTtcblxuICAgIGFkZERhdGFiYXNlTGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgICdyZWRzaGlmdDpHZXRDbHVzdGVyQ3JlZGVudGlhbHNXaXRoSUFNJyxcbiAgICAgICAgJ3JlZHNoaWZ0LWRhdGE6RXhlY3V0ZVN0YXRlbWVudCcsXG4gICAgICBdLFxuICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICB9KSk7XG5cbiAgICBuZXcgY2RrLkN1c3RvbVJlc291cmNlKHRoaXMsIGBBZGREYXRhYmFzZUNSJHtwcm9wcy5kYXRhYmFzZU5hbWV9YCwge1xuICAgICAgcmVzb3VyY2VUeXBlOiAnQ3VzdG9tOjpSZWRzaGlmdERhdGFiYXNlJyxcbiAgICAgIHNlcnZpY2VUb2tlbjogbmV3IGNyLlByb3ZpZGVyKHRoaXMsIGBBZGREYXRhYmFzZVByb3ZpZGVyJHtwcm9wcy5kYXRhYmFzZU5hbWV9YCwge1xuICAgICAgICBvbkV2ZW50SGFuZGxlcjogYWRkRGF0YWJhc2VMYW1iZGEsXG4gICAgICB9KS5zZXJ2aWNlVG9rZW4sXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIENsdXN0ZXJJZGVudGlmaWVyOiBwcm9wcy5jbHVzdGVyLmNsdXN0ZXJOYW1lLFxuICAgICAgICBEYXRhYmFzZU5hbWU6IHByb3BzLmRhdGFiYXNlTmFtZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFiYXNlTmFtZSA9IHByb3BzLmRhdGFiYXNlTmFtZSxcbiAgICB0aGlzLmNsdXN0ZXIgPSBwcm9wcy5jbHVzdGVyO1xuICB9XG5cbiAgcHVibGljIGV4ZWN1dGVTUUxTdGF0ZW1lbnQoc3RhdGVtZW50TmFtZTogc3RyaW5nLCBzcWw6IHN0cmluZyk6IHZvaWQge1xuXG4gICAgY29uc3QgZXhlY3V0ZVNRTExhbWJkYSA9IG5ldyBjZGsuYXdzX2xhbWJkYS5TaW5nbGV0b25GdW5jdGlvbih0aGlzLCAnZXhlY3V0ZVNRTEZ1bmN0aW9uJywge1xuICAgICAgdXVpZDogJ2FmMWEyOTVjLWI2OWMtNDViZi05YmVlLWQ5OTQ0YTlkYTgxMScsXG4gICAgICBydW50aW1lOiBhd3NfbGFtYmRhLlJ1bnRpbWUuUFlUSE9OXzNfOSxcbiAgICAgIGhhbmRsZXI6ICdleGVjdXRlc3FsLm9uX2V2ZW50JyxcbiAgICAgIGNvZGU6IGF3c19sYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLy4uL2xhbWJkYS9yZWRzaGlmdCcpKSxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDkwMCksXG5cdCAgfSk7XG5cblx0ICBleGVjdXRlU1FMTGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICBhY3Rpb25zOiBbXG5cdFx0ICAncmVkc2hpZnQ6R2V0Q2x1c3RlckNyZWRlbnRpYWxzV2l0aElBTScsXG5cdFx0ICAncmVkc2hpZnQtZGF0YTpFeGVjdXRlU3RhdGVtZW50JyxcbiAgICAgIF0sXG4gICAgICByZXNvdXJjZXM6IFsnKiddLFxuXHQgIH0pKTtcblxuXHQgIG5ldyBjZGsuQ3VzdG9tUmVzb3VyY2UodGhpcywgYEV4ZWN1dGVTUUwke3N0YXRlbWVudE5hbWV9YCwge1xuICAgICAgcmVzb3VyY2VUeXBlOiAnQ3VzdG9tOjpFeGVjdXRlU1FMU3RhdG1lbnQnLFxuICAgICAgc2VydmljZVRva2VuOiBuZXcgY3IuUHJvdmlkZXIodGhpcywgYEV4ZWN1dGVTUUwtJHtzdGF0ZW1lbnROYW1lfWAsIHtcbiAgICAgICAgb25FdmVudEhhbmRsZXI6IGV4ZWN1dGVTUUxMYW1iZGEsXG4gICAgICB9KS5zZXJ2aWNlVG9rZW4sXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIFN0YXRlbWVudE5hbWU6IHN0YXRlbWVudE5hbWUsXG4gICAgICAgIENsdXN0ZXJJZGVudGlmaWVyOiB0aGlzLmNsdXN0ZXIuY2x1c3Rlck5hbWUsXG4gICAgICAgIERhdGFiYXNlTmFtZTogdGhpcy5kYXRhYmFzZU5hbWUsXG4gICAgICAgIFNxbDogc3FsLFxuICAgICAgfSxcblx0ICB9KTtcbiAgfVxuXG59XG5cbiJdfQ==