UNPKG

@cdklabs/aws-data-solutions-framework

Version:
89 lines 12.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const aws_cdk_lib_1 = require("aws-cdk-lib"); const lib_1 = require("../lib"); const aws_ec2_1 = require("aws-cdk-lib/aws-ec2"); const aws_secretsmanager_1 = require("aws-cdk-lib/aws-secretsmanager"); /// !show class ExampleRedshiftDataSharingCrossAccountAStack extends aws_cdk_lib_1.Stack { constructor(scope, id) { super(scope, id); const redshiftAdminSecret = aws_secretsmanager_1.Secret.fromSecretPartialArn(this, 'RedshiftAdminCredentials', 'arn:aws:secretsmanager:us-east-1:XXXXXXXX:secret:YYYYYYYY'); const redshiftVpc = aws_ec2_1.Vpc.fromLookup(this, 'RedshiftVpc', { vpcId: 'XXXXXXXX', }); const dataAccess = new lib_1.RedshiftData(this, 'RedshiftDataAccess', { workgroupId: 'XXXXXXXXXXXXXXX', secret: redshiftAdminSecret, vpc: redshiftVpc, subnets: redshiftVpc.selectSubnets({ subnetGroupName: 'YYYYYYYY' }), createInterfaceVpcEndpoint: true, executionTimeout: aws_cdk_lib_1.Duration.minutes(10), }); const dataShare = new lib_1.RedshiftDataSharing(this, 'RedshiftDataShare', { redshiftData: dataAccess, workgroupId: 'XXXXXXXXXXXXXXX', secret: redshiftAdminSecret, vpc: redshiftVpc, subnets: redshiftVpc.selectSubnets({ subnetGroupName: 'YYYYYYYY' }), createInterfaceVpcEndpoint: true, executionTimeout: aws_cdk_lib_1.Duration.minutes(10), }); const share = dataShare.createShare('ProducerShare', 'default', 'example_share', 'public', ['public.customers']); const grantToConsumer = dataShare.grant('GrantToConsumer', { dataShareName: 'example_share', databaseName: 'default', autoAuthorized: true, accountId: "<CONSUMER_ACCOUNT_ID>", dataShareArn: '<DATASHARE_ARN>', }); grantToConsumer.resource.node.addDependency(share); } } class ExampleRedshiftDataSharingCrossAccountBStack extends aws_cdk_lib_1.Stack { constructor(scope, id) { super(scope, id); const redshiftAdminSecret = aws_secretsmanager_1.Secret.fromSecretPartialArn(this, 'RedshiftAdminCredentials', 'arn:aws:secretsmanager:us-east-1:XXXXXXXX:secret:YYYYYYYY'); const redshiftVpc = aws_ec2_1.Vpc.fromLookup(this, 'RedshiftVpc', { vpcId: 'XXXXXXXX', }); const dataAccess = new lib_1.RedshiftData(this, 'RedshiftDataAccess', { workgroupId: 'XXXXXXXXXXXXXXX', secret: redshiftAdminSecret, vpc: redshiftVpc, subnets: redshiftVpc.selectSubnets({ subnetGroupName: 'YYYYYYYY' }), createInterfaceVpcEndpoint: true, executionTimeout: aws_cdk_lib_1.Duration.minutes(10), }); const dataShare = new lib_1.RedshiftDataSharing(this, 'RedshiftDataShare', { redshiftData: dataAccess, workgroupId: 'XXXXXXXXXXXXXXX', secret: redshiftAdminSecret, vpc: redshiftVpc, subnets: redshiftVpc.selectSubnets({ subnetGroupName: 'YYYYYYYY' }), createInterfaceVpcEndpoint: true, executionTimeout: aws_cdk_lib_1.Duration.minutes(10), }); dataShare.createDatabaseFromShare('ProducerShare', { consumerNamespaceArn: '', newDatabaseName: 'db_from_share', databaseName: 'default', dataShareName: 'example_share', dataShareArn: '<DATASHARE_ARN>', accountId: "<PRODUCER_ACCOUNT_ID>", }); } } /// !hide const app = new aws_cdk_lib_1.App(); new ExampleRedshiftDataSharingCrossAccountAStack(app, "ExampleRedshiftDataSharingCrossAccountAStack"); new ExampleRedshiftDataSharingCrossAccountBStack(app, "ExampleRedshiftDataSharingCrossAccountBStack"); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkc2hpZnQtZGF0YS1zaGFyaW5nLWJ5b2MubGl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnN1bXB0aW9uL2V4YW1wbGVzL3JlZHNoaWZ0LWRhdGEtc2hhcmluZy1ieW9jLmxpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZDQUFtRDtBQUVuRCxnQ0FBMkQ7QUFDM0QsaURBQTBDO0FBQzFDLHVFQUF3RDtBQUN4RCxTQUFTO0FBQ1QsTUFBTSw0Q0FBNkMsU0FBUSxtQkFBSztJQUM5RCxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLE1BQU0sbUJBQW1CLEdBQUcsMkJBQU0sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsMkRBQTJELENBQUMsQ0FBQztRQUV2SixNQUFNLFdBQVcsR0FBRyxhQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDdEQsS0FBSyxFQUFFLFVBQVU7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxVQUFVLEdBQUcsSUFBSSxrQkFBWSxDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRTtZQUM5RCxXQUFXLEVBQUUsaUJBQWlCO1lBQzlCLE1BQU0sRUFBRSxtQkFBbUI7WUFDM0IsR0FBRyxFQUFFLFdBQVc7WUFDaEIsT0FBTyxFQUFFLFdBQVcsQ0FBQyxhQUFhLENBQUM7Z0JBQ2pDLGVBQWUsRUFBRSxVQUFVO2FBQzVCLENBQUM7WUFDRiwwQkFBMEIsRUFBRSxJQUFJO1lBQ2hDLGdCQUFnQixFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUN2QyxDQUFDLENBQUM7UUFFSCxNQUFNLFNBQVMsR0FBRyxJQUFJLHlCQUFtQixDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRTtZQUNuRSxZQUFZLEVBQUUsVUFBVTtZQUN4QixXQUFXLEVBQUUsaUJB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bXBvcnQgeyBBcHAsIER1cmF0aW9uLCBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFJlZHNoaWZ0RGF0YSwgUmVkc2hpZnREYXRhU2hhcmluZyB9IGZyb20gXCIuLi9saWJcIjtcbmltcG9ydCB7IFZwYyB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgeyBTZWNyZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG4vLy8gIXNob3dcbmNsYXNzIEV4YW1wbGVSZWRzaGlmdERhdGFTaGFyaW5nQ3Jvc3NBY2NvdW50QVN0YWNrIGV4dGVuZHMgU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgY29uc3QgcmVkc2hpZnRBZG1pblNlY3JldCA9IFNlY3JldC5mcm9tU2VjcmV0UGFydGlhbEFybih0aGlzLCAnUmVkc2hpZnRBZG1pbkNyZWRlbnRpYWxzJywgJ2Fybjphd3M6c2VjcmV0c21hbmFnZXI6dXMtZWFzdC0xOlhYWFhYWFhYOnNlY3JldDpZWVlZWVlZWScpO1xuXG4gICAgY29uc3QgcmVkc2hpZnRWcGMgPSBWcGMuZnJvbUxvb2t1cCh0aGlzLCAnUmVkc2hpZnRWcGMnLCB7XG4gICAgICB2cGNJZDogJ1hYWFhYWFhYJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGRhdGFBY2Nlc3MgPSBuZXcgUmVkc2hpZnREYXRhKHRoaXMsICdSZWRzaGlmdERhdGFBY2Nlc3MnLCB7XG4gICAgICB3b3JrZ3JvdXBJZDogJ1hYWFhYWFhYWFhYWFhYWCcsXG4gICAgICBzZWNyZXQ6IHJlZHNoaWZ0QWRtaW5TZWNyZXQsXG4gICAgICB2cGM6IHJlZHNoaWZ0VnBjLFxuICAgICAgc3VibmV0czogcmVkc2hpZnRWcGMuc2VsZWN0U3VibmV0cyh7XG4gICAgICAgIHN1Ym5ldEdyb3VwTmFtZTogJ1lZWVlZWVlZJ1xuICAgICAgfSksXG4gICAgICBjcmVhdGVJbnRlcmZhY2VWcGNFbmRwb2ludDogdHJ1ZSxcbiAgICAgIGV4ZWN1dGlvblRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoMTApLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGF0YVNoYXJlID0gbmV3IFJlZHNoaWZ0RGF0YVNoYXJpbmcodGhpcywgJ1JlZHNoaWZ0RGF0YVNoYXJlJywge1xuICAgICAgcmVkc2hpZnREYXRhOiBkYXRhQWNjZXNzLFxuICAgICAgd29ya2dyb3VwSWQ6ICdYWFhYWFhYWFhYWFhYWFgnLFxuICAgICAgc2VjcmV0OiByZWRzaGlmdEFkbWluU2VjcmV0LFxuICAgICAgdnBjOiByZWRzaGlmdFZwYyxcbiAgICAgIHN1Ym5ldHM6IHJlZHNoaWZ0VnBjLnNlbGVjdFN1Ym5ldHMoe1xuICAgICAgICBzdWJuZXRHcm91cE5hbWU6ICdZWVlZWVlZWSdcbiAgICAgIH0pLFxuICAgICAgY3JlYXRlSW50ZXJmYWNlVnBjRW5kcG9pbnQ6IHRydWUsXG4gICAgICBleGVjdXRpb25UaW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDEwKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHNoYXJlID0gZGF0YVNoYXJlLmNyZWF0ZVNoYXJlKCdQcm9kdWNlclNoYXJlJywgJ2RlZmF1bHQnLCAnZXhhbXBsZV9zaGFyZScsICdwdWJsaWMnLCBbJ3B1YmxpYy5jdXN0b21lcnMnXSk7XG4gICAgXG4gICAgY29uc3QgZ3JhbnRUb0NvbnN1bWVyID0gZGF0YVNoYXJlLmdyYW50KCdHcmFudFRvQ29uc3VtZXInLCB7XG4gICAgICBkYXRhU2hhcmVOYW1lOiAnZXhhbXBsZV9zaGFyZScsIFxuICAgICAgZGF0YWJhc2VOYW1lOiAnZGVmYXVsdCcsXG4gICAgICBhdXRvQXV0aG9yaXplZDogdHJ1ZSxcbiAgICAgIGFjY291bnRJZDogXCI8Q09OU1VNRVJfQUNDT1VOVF9JRD5cIixcbiAgICAgIGRhdGFTaGFyZUFybjogJzxEQVRBU0hBUkVfQVJOPicsXG4gICAgfSk7XG4gICAgXG4gICAgZ3JhbnRUb0NvbnN1bWVyLnJlc291cmNlLm5vZGUuYWRkRGVwZW5kZW5jeShzaGFyZSk7XG4gIH1cbn1cblxuY2xhc3MgRXhhbXBsZVJlZHNoaWZ0RGF0YVNoYXJpbmdDcm9zc0FjY291bnRCU3RhY2sgZXh0ZW5kcyBTdGFjayB7XG4gICAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgICAgc3VwZXIoc2NvcGUsIGlkKVxuICBcbiAgICAgIGNvbnN0IHJlZHNoaWZ0QWRtaW5TZWNyZXQgPSBTZWNyZXQuZnJvbVNlY3JldFBhcnRpYWxBcm4odGhpcywgJ1JlZHNoaWZ0QWRtaW5DcmVkZW50aWFscycsICdhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMTpYWFhYWFhYWDpzZWNyZXQ6WVlZWVlZWVknKTtcblxuICAgICAgY29uc3QgcmVkc2hpZnRWcGMgPSBWcGMuZnJvbUxvb2t1cCh0aGlzLCAnUmVkc2hpZnRWcGMnLCB7XG4gICAgICAgIHZwY0lkOiAnWFhYWFhYWFgnLFxuICAgICAgfSk7XG4gIFxuICAgICAgY29uc3QgZGF0YUFjY2VzcyA9IG5ldyBSZWRzaGlmdERhdGEodGhpcywgJ1JlZHNoaWZ0RGF0YUFjY2VzcycsIHtcbiAgICAgICAgd29ya2dyb3VwSWQ6ICdYWFhYWFhYWFhYWFhYWFgnLFxuICAgICAgICBzZWNyZXQ6IHJlZHNoaWZ0QWRtaW5TZWNyZXQsXG4gICAgICAgIHZwYzogcmVkc2hpZnRWcGMsXG4gICAgICAgIHN1Ym5ldHM6IHJlZHNoaWZ0VnBjLnNlbGVjdFN1Ym5ldHMoe1xuICAgICAgICAgIHN1Ym5ldEdyb3VwTmFtZTogJ1lZWVlZWVlZJ1xuICAgICAgICB9KSxcbiAgICAgICAgY3JlYXRlSW50ZXJmYWNlVnBjRW5kcG9pbnQ6IHRydWUsXG4gICAgICAgIGV4ZWN1dGlvblRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoMTApLFxuICAgICAgfSk7XG4gIFxuICAgICAgY29uc3QgZGF0YVNoYXJlID0gbmV3IFJlZHNoaWZ0RGF0YVNoYXJpbmcodGhpcywgJ1JlZHNoaWZ0RGF0YVNoYXJlJywge1xuICAgICAgICByZWRzaGlmdERhdGE6IGRhdGFBY2Nlc3MsXG4gICAgICAgIHdvcmtncm91cElkOiAnWFhYWFhYWFhYWFhYWFhYJyxcbiAgICAgICAgc2VjcmV0OiByZWRzaGlmdEFkbWluU2VjcmV0LFxuICAgICAgICB2cGM6IHJlZHNoaWZ0VnBjLFxuICAgICAgICBzdWJuZXRzOiByZWRzaGlmdFZwYy5zZWxlY3RTdWJuZXRzKHtcbiAgICAgICAgICBzdWJuZXRHcm91cE5hbWU6ICdZWVlZWVlZWSdcbiAgICAgICAgfSksXG4gICAgICAgIGNyZWF0ZUludGVyZmFjZVZwY0VuZHBvaW50OiB0cnVlLFxuICAgICAgICBleGVjdXRpb25UaW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDEwKSxcbiAgICAgIH0pO1xuICBcbiAgICAgIGRhdGFTaGFyZS5jcmVhdGVEYXRhYmFzZUZyb21TaGFyZSgnUHJvZHVjZXJTaGFyZScsIHtcbiAgICAgICAgY29uc3VtZXJOYW1lc3BhY2VBcm46ICcnLFxuICAgICAgICBuZXdEYXRhYmFzZU5hbWU6ICdkYl9mcm9tX3NoYXJlJyxcbiAgICAgICAgZGF0YWJhc2VOYW1lOiAnZGVmYXVsdCcsXG4gICAgICAgIGRhdGFTaGFyZU5hbWU6ICdleGFtcGxlX3NoYXJlJyxcbiAgICAgICAgZGF0YVNoYXJlQXJuOiAnPERBVEFTSEFSRV9BUk4+JyxcbiAgICAgICAgYWNjb3VudElkOiBcIjxQUk9EVUNFUl9BQ0NPVU5UX0lEPlwiLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4vLy8gIWhpZGVcbmNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcbm5ldyBFeGFtcGxlUmVkc2hpZnREYXRhU2hhcmluZ0Nyb3NzQWNjb3VudEFTdGFjayhhcHAsIFwiRXhhbXBsZVJlZHNoaWZ0RGF0YVNoYXJpbmdDcm9zc0FjY291bnRBU3RhY2tcIik7XG5uZXcgRXhhbXBsZVJlZHNoaWZ0RGF0YVNoYXJpbmdDcm9zc0FjY291bnRCU3RhY2soYXBwLCBcIkV4YW1wbGVSZWRzaGlmdERhdGFTaGFyaW5nQ3Jvc3NBY2NvdW50QlN0YWNrXCIpOyJdfQ==