@cdklabs/aws-data-solutions-framework
Version:
L3 CDK Constructs used to build data solutions with AWS
40 lines • 7.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const aws_cdk_lib_1 = require("aws-cdk-lib");
const lib_1 = require("../lib");
/// !show
class ExampleRedshiftDataSharingSameAccountStack extends aws_cdk_lib_1.Stack {
constructor(scope, id) {
super(scope, id);
const dbName = 'defaultdb';
const producerNamespace = new lib_1.RedshiftServerlessNamespace(this, 'ProducerNamespace', {
name: 'producer-namespace',
dbName
});
const producerWorkgroup = new lib_1.RedshiftServerlessWorkgroup(this, 'ProducerRSWorkgroup', {
name: 'producer-workgroup',
namespace: producerNamespace
});
const consumerNamespace = new lib_1.RedshiftServerlessNamespace(this, 'ConsumerNamespace', {
name: 'consumer-namespace',
dbName
});
const consumerWorkgroup = new lib_1.RedshiftServerlessWorkgroup(this, 'ConsumerRSWorkgroup', {
name: 'consumer-workgroup',
namespace: consumerNamespace
});
const shareName = 'testshare';
const createCustomersTable = producerWorkgroup.runCustomSQL('CreateCustomerTable', dbName, 'create table public.customers (id varchar(100) not null, first_name varchar(50) not null, last_name varchar(50) not null, email varchar(100) not null)', 'drop table public.customers');
const newShare = producerWorkgroup.createShare('producer-share', dbName, shareName, 'public', ['public.customers']);
newShare.newShareCustomResource.node.addDependency(createCustomersTable);
const grantToConsumer = producerWorkgroup.grantAccessToShare('GrantToConsumer', newShare, consumerNamespace.namespaceId);
grantToConsumer.resource.node.addDependency(newShare);
grantToConsumer.resource.node.addDependency(consumerNamespace);
const consumeShare = consumerWorkgroup.createDatabaseFromShare('consume-datashare', 'db_from_share', shareName, producerNamespace.namespaceId);
consumeShare.resource.node.addDependency(grantToConsumer);
}
}
/// !hide
const app = new aws_cdk_lib_1.App();
new ExampleRedshiftDataSharingSameAccountStack(app, "ExampleRedshiftDataSharingSameAccountStack");
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkc2hpZnQtZGF0YS1zaGFyaW5nLXNhbWUtYWNjb3VudC5saXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uc3VtcHRpb24vZXhhbXBsZXMvcmVkc2hpZnQtZGF0YS1zaGFyaW5nLXNhbWUtYWNjb3VudC5saXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw2Q0FBeUM7QUFFekMsZ0NBQWtGO0FBQ2xGLFNBQVM7QUFDVCxNQUFNLDBDQUEyQyxTQUFRLG1CQUFLO0lBQzVELFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDO1FBRTNCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxpQ0FBMkIsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7WUFDakYsSUFBSSxFQUFFLG9CQUFvQjtZQUMxQixNQUFNO1NBQ1QsQ0FBQyxDQUFDO1FBRUgsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGlDQUEyQixDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRTtZQUNuRixJQUFJLEVBQUUsb0JBQW9CO1lBQzFCLFNBQVMsRUFBRSxpQkFBaUI7U0FDL0IsQ0FBQyxDQUFDO1FBRUgsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGlDQUEyQixDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRTtZQUNqRixJQUFJLEVBQUUsb0JBQW9CO1lBQzFCLE1BQU07U0FDVCxDQUFDLENBQUM7UUFFSCxNQUFNLGlCQUFpQixHQUFHLElBQUksaUNBQTJCLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFO1lBQ25GLElBQUksRUFBRSxvQkFBb0I7WUFDMUIsU0FBUyxFQUFFLGlCQUFpQjtTQUMvQixDQUFDLENBQUM7UUFFSCxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUM7UUFFOUIsTUFBTSxvQkFBb0IsR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMscUJBQXFCLEVBQUUsTUFBTSxFQUFFLHdKQUF3SixFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFFcFIsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1FBQ3BILFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFekUsTUFBTSxlQUFlLEdBQUcsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBRXhILGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0RCxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUUvRCxNQUFNLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBRTlJLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM1RCxDQUFDO0NBQ0Y7QUFDRCxTQUFTO0FBQ1QsTUFBTSxHQUFHLEdBQUcsSUFBSSxpQkFBRyxFQUFFLENBQUE7QUFDckIsSUFBSSwwQ0FBMEMsQ0FBQyxHQUFHLEVBQUUsNENBQTRDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcCwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBSZWRzaGlmdFNlcnZlcmxlc3NOYW1lc3BhY2UsIFJlZHNoaWZ0U2VydmVybGVzc1dvcmtncm91cCB9IGZyb20gXCIuLi9saWJcIjtcbi8vLyAhc2hvd1xuY2xhc3MgRXhhbXBsZVJlZHNoaWZ0RGF0YVNoYXJpbmdTYW1lQWNjb3VudFN0YWNrIGV4dGVuZHMgU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgY29uc3QgZGJOYW1lID0gJ2RlZmF1bHRkYic7XG5cbiAgICBjb25zdCBwcm9kdWNlck5hbWVzcGFjZSA9IG5ldyBSZWRzaGlmdFNlcnZlcmxlc3NOYW1lc3BhY2UodGhpcywgJ1Byb2R1Y2VyTmFtZXNwYWNlJywge1xuICAgICAgICBuYW1lOiAncHJvZHVjZXItbmFtZXNwYWNlJyxcbiAgICAgICAgZGJOYW1lXG4gICAgfSk7XG4gICAgXG4gICAgY29uc3QgcHJvZHVjZXJXb3JrZ3JvdXAgPSBuZXcgUmVkc2hpZnRTZXJ2ZXJsZXNzV29ya2dyb3VwKHRoaXMsICdQcm9kdWNlclJTV29ya2dyb3VwJywge1xuICAgICAgICBuYW1lOiAncHJvZHVjZXItd29ya2dyb3VwJyxcbiAgICAgICAgbmFtZXNwYWNlOiBwcm9kdWNlck5hbWVzcGFjZVxuICAgIH0pO1xuXG4gICAgY29uc3QgY29uc3VtZXJOYW1lc3BhY2UgPSBuZXcgUmVkc2hpZnRTZXJ2ZXJsZXNzTmFtZXNwYWNlKHRoaXMsICdDb25zdW1lck5hbWVzcGFjZScsIHtcbiAgICAgICAgbmFtZTogJ2NvbnN1bWVyLW5hbWVzcGFjZScsXG4gICAgICAgIGRiTmFtZVxuICAgIH0pO1xuICAgICAgXG4gICAgY29uc3QgY29uc3VtZXJXb3JrZ3JvdXAgPSBuZXcgUmVkc2hpZnRTZXJ2ZXJsZXNzV29ya2dyb3VwKHRoaXMsICdDb25zdW1lclJTV29ya2dyb3VwJywge1xuICAgICAgICBuYW1lOiAnY29uc3VtZXItd29ya2dyb3VwJyxcbiAgICAgICAgbmFtZXNwYWNlOiBjb25zdW1lck5hbWVzcGFjZVxuICAgIH0pO1xuICAgIFxuICAgIGNvbnN0IHNoYXJlTmFtZSA9ICd0ZXN0c2hhcmUnO1xuXG4gICAgY29uc3QgY3JlYXRlQ3VzdG9tZXJzVGFibGUgPSBwcm9kdWNlcldvcmtncm91cC5ydW5DdXN0b21TUUwoJ0NyZWF0ZUN1c3RvbWVyVGFibGUnLCBkYk5hbWUsICdjcmVhdGUgdGFibGUgcHVibGljLmN1c3RvbWVycyAoaWQgdmFyY2hhcigxMDApIG5vdCBudWxsLCBmaXJzdF9uYW1lIHZhcmNoYXIoNTApIG5vdCBudWxsLCBsYXN0X25hbWUgdmFyY2hhcig1MCkgbm90IG51bGwsIGVtYWlsIHZhcmNoYXIoMTAwKSBub3QgbnVsbCknLCAnZHJvcCB0YWJsZSBwdWJsaWMuY3VzdG9tZXJzJyk7XG5cbiAgICBjb25zdCBuZXdTaGFyZSA9IHByb2R1Y2VyV29ya2dyb3VwLmNyZWF0ZVNoYXJlKCdwcm9kdWNlci1zaGFyZScsIGRiTmFtZSwgc2hhcmVOYW1lLCAncHVibGljJywgWydwdWJsaWMuY3VzdG9tZXJzJ10pO1xuICAgIG5ld1NoYXJlLm5ld1NoYXJlQ3VzdG9tUmVzb3VyY2Uubm9kZS5hZGREZXBlbmRlbmN5KGNyZWF0ZUN1c3RvbWVyc1RhYmxlKTtcbiAgICBcbiAgICBjb25zdCBncmFudFRvQ29uc3VtZXIgPSBwcm9kdWNlcldvcmtncm91cC5ncmFudEFjY2Vzc1RvU2hhcmUoJ0dyYW50VG9Db25zdW1lcicsIG5ld1NoYXJlLCBjb25zdW1lck5hbWVzcGFjZS5uYW1lc3BhY2VJZClcbiAgICBcbiAgICBncmFudFRvQ29uc3VtZXIucmVzb3VyY2Uubm9kZS5hZGREZXBlbmRlbmN5KG5ld1NoYXJlKTtcbiAgICBncmFudFRvQ29uc3VtZXIucmVzb3VyY2Uubm9kZS5hZGREZXBlbmRlbmN5KGNvbnN1bWVyTmFtZXNwYWNlKTtcbiAgICBcbiAgICBjb25zdCBjb25zdW1lU2hhcmUgPSBjb25zdW1lcldvcmtncm91cC5jcmVhdGVEYXRhYmFzZUZyb21TaGFyZSgnY29uc3VtZS1kYXRhc2hhcmUnLCAnZGJfZnJvbV9zaGFyZScsIHNoYXJlTmFtZSwgcHJvZHVjZXJOYW1lc3BhY2UubmFtZXNwYWNlSWQpXG4gICAgXG4gICAgY29uc3VtZVNoYXJlLnJlc291cmNlLm5vZGUuYWRkRGVwZW5kZW5jeShncmFudFRvQ29uc3VtZXIpO1xuICB9XG59XG4vLy8gIWhpZGVcbmNvbnN0IGFwcCA9IG5ldyBBcHAoKVxubmV3IEV4YW1wbGVSZWRzaGlmdERhdGFTaGFyaW5nU2FtZUFjY291bnRTdGFjayhhcHAsIFwiRXhhbXBsZVJlZHNoaWZ0RGF0YVNoYXJpbmdTYW1lQWNjb3VudFN0YWNrXCIpIl19