UNPKG

@cdklabs/aws-data-solutions-framework

Version:
46 lines 8.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const aws_cdk_lib_1 = require("aws-cdk-lib"); const lib_1 = require("../lib"); /// !show class ExampleRedshiftDataSharingCrossAccountAStack 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 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, undefined, "<CONSUMER-ACCOUNT-ID>", true); grantToConsumer.resource.node.addDependency(newShare); } } class ExampleRedshiftDataSharingCrossAccountBStack extends aws_cdk_lib_1.Stack { constructor(scope, id) { super(scope, id); const dbName = 'defaultdb'; 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'; consumerWorkgroup.createDatabaseFromShare('consume-datashare', "db_from_share", shareName, "<PRODUCER NAMESPACE>", "<PRODUCER ACCOUNT>"); } } /// !hide const app = new aws_cdk_lib_1.App(); new ExampleRedshiftDataSharingCrossAccountAStack(app, "ExampleRedshiftDataSharingCrossAccountAStack"); new ExampleRedshiftDataSharingCrossAccountBStack(app, "ExampleRedshiftDataSharingCrossAccountBStack"); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkc2hpZnQtZGF0YS1zaGFyaW5nLWNyb3NzLWFjY291bnQubGl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnN1bXB0aW9uL2V4YW1wbGVzL3JlZHNoaWZ0LWRhdGEtc2hhcmluZy1jcm9zcy1hY2NvdW50LmxpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZDQUF5QztBQUV6QyxnQ0FBa0Y7QUFDbEYsU0FBUztBQUNULE1BQU0sNENBQTZDLFNBQVEsbUJBQUs7SUFDOUQsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUM7UUFFM0IsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGlDQUEyQixDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRTtZQUNqRixJQUFJLEVBQUUsb0JBQW9CO1lBQzFCLE1BQU07U0FDVCxDQUFDLENBQUM7UUFFSCxNQUFNLGlCQUFpQixHQUFHLElBQUksaUNBQTJCLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFO1lBQ25GLElBQUksRUFBRSxvQkFBb0I7WUFDMUIsU0FBUyxFQUFFLGlCQUFpQjtTQUMvQixDQUFDLENBQUM7UUFFSCxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUM7UUFFOUIsTUFBTSxvQkFBb0IsR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMscUJBQXFCLEVBQUUsTUFBTSxFQUFFLHdKQUF3SixFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFFcFIsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1FBQ3BILFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFekUsTUFBTSxlQUFlLEdBQUcsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVwSSxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEQsQ0FBQztDQUNGO0FBRUQsTUFBTSw0Q0FBNkMsU0FBUSxtQkFBSztJQUM1RCxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQztRQUUzQixNQUFNLGlCQUFpQixHQUFHLElBQUksaUNBQTJCLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFO1lBQ2pGLElBQUksRUFBRSxvQkFBb0I7WUFDMUIsTUFBTTtTQUNULENBQUMsQ0FBQztRQUVILE1BQU0saUJBQWlCLEdBQUcsSUFBSSxpQ0FBMkIsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUU7WUFDbkYsSUFBSSxFQUFFLG9CQUFvQjtZQUMxQixTQUFTLEVBQUUsaUJBQWlCO1NBQy9CLENBQUMsQ0FBQztRQUVILE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQztRQUU5QixpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixFQUFFLG9CQUFvQixDQUFDLENBQUE7SUFDMUksQ0FBQztDQUNGO0FBQ0gsU0FBUztBQUNULE1BQU0sR0FBRyxHQUFHLElBQUksaUJBQUcsRUFBRSxDQUFBO0FBQ3JCLElBQUksNENBQTRDLENBQUMsR0FBRyxFQUFFLDhDQUE4QyxDQUFDLENBQUE7QUFDckcsSUFBSSw0Q0FBNEMsQ0FBQyxHQUFHLEVBQUUsOENBQThDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcCwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBSZWRzaGlmdFNlcnZlcmxlc3NOYW1lc3BhY2UsIFJlZHNoaWZ0U2VydmVybGVzc1dvcmtncm91cCB9IGZyb20gXCIuLi9saWJcIjtcbi8vLyAhc2hvd1xuY2xhc3MgRXhhbXBsZVJlZHNoaWZ0RGF0YVNoYXJpbmdDcm9zc0FjY291bnRBU3RhY2sgZXh0ZW5kcyBTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICBjb25zdCBkYk5hbWUgPSAnZGVmYXVsdGRiJztcblxuICAgIGNvbnN0IHByb2R1Y2VyTmFtZXNwYWNlID0gbmV3IFJlZHNoaWZ0U2VydmVybGVzc05hbWVzcGFjZSh0aGlzLCAnUHJvZHVjZXJOYW1lc3BhY2UnLCB7XG4gICAgICAgIG5hbWU6ICdwcm9kdWNlci1uYW1lc3BhY2UnLFxuICAgICAgICBkYk5hbWVcbiAgICB9KTtcbiAgICBcbiAgICBjb25zdCBwcm9kdWNlcldvcmtncm91cCA9IG5ldyBSZWRzaGlmdFNlcnZlcmxlc3NXb3JrZ3JvdXAodGhpcywgJ1Byb2R1Y2VyUlNXb3JrZ3JvdXAnLCB7XG4gICAgICAgIG5hbWU6ICdwcm9kdWNlci13b3JrZ3JvdXAnLFxuICAgICAgICBuYW1lc3BhY2U6IHByb2R1Y2VyTmFtZXNwYWNlXG4gICAgfSk7XG4gICAgXG4gICAgY29uc3Qgc2hhcmVOYW1lID0gJ3Rlc3RzaGFyZSc7XG5cbiAgICBjb25zdCBjcmVhdGVDdXN0b21lcnNUYWJsZSA9IHByb2R1Y2VyV29ya2dyb3VwLnJ1bkN1c3RvbVNRTCgnQ3JlYXRlQ3VzdG9tZXJUYWJsZScsIGRiTmFtZSwgJ2NyZWF0ZSB0YWJsZSBwdWJsaWMuY3VzdG9tZXJzIChpZCB2YXJjaGFyKDEwMCkgbm90IG51bGwsIGZpcnN0X25hbWUgdmFyY2hhcig1MCkgbm90IG51bGwsIGxhc3RfbmFtZSB2YXJjaGFyKDUwKSBub3QgbnVsbCwgZW1haWwgdmFyY2hhcigxMDApIG5vdCBudWxsKScsICdkcm9wIHRhYmxlIHB1YmxpYy5jdXN0b21lcnMnKTtcblxuICAgIGNvbnN0IG5ld1NoYXJlID0gcHJvZHVjZXJXb3JrZ3JvdXAuY3JlYXRlU2hhcmUoJ3Byb2R1Y2VyLXNoYXJlJywgZGJOYW1lLCBzaGFyZU5hbWUsICdwdWJsaWMnLCBbJ3B1YmxpYy5jdXN0b21lcnMnXSk7XG4gICAgbmV3U2hhcmUubmV3U2hhcmVDdXN0b21SZXNvdXJjZS5ub2RlLmFkZERlcGVuZGVuY3koY3JlYXRlQ3VzdG9tZXJzVGFibGUpO1xuICAgIFxuICAgIGNvbnN0IGdyYW50VG9Db25zdW1lciA9IHByb2R1Y2VyV29ya2dyb3VwLmdyYW50QWNjZXNzVG9TaGFyZSgnR3JhbnRUb0NvbnN1bWVyJywgbmV3U2hhcmUsIHVuZGVmaW5lZCwgXCI8Q09OU1VNRVItQUNDT1VOVC1JRD5cIiwgdHJ1ZSk7XG4gICAgXG4gICAgZ3JhbnRUb0NvbnN1bWVyLnJlc291cmNlLm5vZGUuYWRkRGVwZW5kZW5jeShuZXdTaGFyZSk7XG4gIH1cbn1cblxuY2xhc3MgRXhhbXBsZVJlZHNoaWZ0RGF0YVNoYXJpbmdDcm9zc0FjY291bnRCU3RhY2sgZXh0ZW5kcyBTdGFjayB7XG4gICAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgICAgc3VwZXIoc2NvcGUsIGlkKVxuICBcbiAgICAgIGNvbnN0IGRiTmFtZSA9ICdkZWZhdWx0ZGInO1xuICBcbiAgICAgIGNvbnN0IGNvbnN1bWVyTmFtZXNwYWNlID0gbmV3IFJlZHNoaWZ0U2VydmVybGVzc05hbWVzcGFjZSh0aGlzLCAnQ29uc3VtZXJOYW1lc3BhY2UnLCB7XG4gICAgICAgICAgbmFtZTogJ2NvbnN1bWVyLW5hbWVzcGFjZScsXG4gICAgICAgICAgZGJOYW1lXG4gICAgICB9KTtcbiAgICAgICAgXG4gICAgICBjb25zdCBjb25zdW1lcldvcmtncm91cCA9IG5ldyBSZWRzaGlmdFNlcnZlcmxlc3NXb3JrZ3JvdXAodGhpcywgJ0NvbnN1bWVyUlNXb3JrZ3JvdXAnLCB7XG4gICAgICAgICAgbmFtZTogJ2NvbnN1bWVyLXdvcmtncm91cCcsXG4gICAgICAgICAgbmFtZXNwYWNlOiBjb25zdW1lck5hbWVzcGFjZVxuICAgICAgfSk7XG4gICAgICBcbiAgICAgIGNvbnN0IHNoYXJlTmFtZSA9ICd0ZXN0c2hhcmUnO1xuICAgICAgXG4gICAgICBjb25zdW1lcldvcmtncm91cC5jcmVhdGVEYXRhYmFzZUZyb21TaGFyZSgnY29uc3VtZS1kYXRhc2hhcmUnLCBcImRiX2Zyb21fc2hhcmVcIiwgc2hhcmVOYW1lLCBcIjxQUk9EVUNFUiBOQU1FU1BBQ0U+XCIsIFwiPFBST0RVQ0VSIEFDQ09VTlQ+XCIpXG4gICAgfVxuICB9XG4vLy8gIWhpZGVcbmNvbnN0IGFwcCA9IG5ldyBBcHAoKVxubmV3IEV4YW1wbGVSZWRzaGlmdERhdGFTaGFyaW5nQ3Jvc3NBY2NvdW50QVN0YWNrKGFwcCwgXCJFeGFtcGxlUmVkc2hpZnREYXRhU2hhcmluZ0Nyb3NzQWNjb3VudEFTdGFja1wiKVxubmV3IEV4YW1wbGVSZWRzaGlmdERhdGFTaGFyaW5nQ3Jvc3NBY2NvdW50QlN0YWNrKGFwcCwgXCJFeGFtcGxlUmVkc2hpZnREYXRhU2hhcmluZ0Nyb3NzQWNjb3VudEJTdGFja1wiKSJdfQ==