{"version":"2","toolVersion":"5.6.7","snippets":{"75c962681445a9b3bb3bf0d29a7dc4a52285c0f71b0fb19c2153a1297aaaff40":{"translations":{"python":{"source":"class ExampleDefaultRedshiftServerlessNamespaceStack(Stack):\n    def __init__(self, scope, id):\n        super().__init__(scope, id)\n        dsf.consumption.RedshiftServerlessNamespace(self, \"RedshiftServerlessNamespace\",\n            db_name=\"database\",\n            name=\"example-namespace\"\n        )","version":"2"},"csharp":{"source":"class ExampleDefaultRedshiftServerlessNamespaceStack : Stack\n{\n    public ExampleDefaultRedshiftServerlessNamespaceStack(Construct scope, string id) : base(scope, id)\n    {\n        new Consumption.RedshiftServerlessNamespace(this, \"RedshiftServerlessNamespace\", new RedshiftServerlessNamespaceProps {\n            DbName = \"database\",\n            Name = \"example-namespace\"\n        });\n    }\n}","version":"1"},"java":{"source":"public class ExampleDefaultRedshiftServerlessNamespaceStack extends Stack {\n    public ExampleDefaultRedshiftServerlessNamespaceStack(Construct scope, String id) {\n        super(scope, id);\n        RedshiftServerlessNamespace.Builder.create(this, \"RedshiftServerlessNamespace\")\n                .dbName(\"database\")\n                .name(\"example-namespace\")\n                .build();\n    }\n}","version":"1"},"go":{"source":"type exampleDefaultRedshiftServerlessNamespaceStack struct {\n\tstack\n}\n\nfunc newExampleDefaultRedshiftServerlessNamespaceStack(scope construct, id *string) *exampleDefaultRedshiftServerlessNamespaceStack {\n\tthis := &exampleDefaultRedshiftServerlessNamespaceStack{}\n\tnewStack_Override(this, scope, id)\n\tconsumption.NewRedshiftServerlessNamespace(this, jsii.String(\"RedshiftServerlessNamespace\"), &RedshiftServerlessNamespaceProps{\n\t\tDbName: jsii.String(\"database\"),\n\t\tName: jsii.String(\"example-namespace\"),\n\t})\n\treturn this\n}","version":"1"},"$":{"source":"class ExampleDefaultRedshiftServerlessNamespaceStack extends Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id)\n    new dsf.consumption.RedshiftServerlessNamespace(this, \"RedshiftServerlessNamespace\", {\n      dbName: \"database\",\n      name: \"example-namespace\"\n    })\n  }\n}","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.consumption"},"field":{"field":"markdown","line":16}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessNamespace","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessNamespaceProps","aws-cdk-lib.Stack","constructs.Construct"],"fullSource":"import { App, Stack } from \"aws-cdk-lib\";\nimport { Construct } from \"constructs\";\nimport * as dsf from '../../index';\n\n/// !show\nclass ExampleDefaultRedshiftServerlessNamespaceStack extends Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id)\n    new dsf.consumption.RedshiftServerlessNamespace(this, \"RedshiftServerlessNamespace\", {\n      dbName: \"database\",\n      name: \"example-namespace\"  \n    })\n  }\n}\n/// !hide\nconst app = new App()\nnew ExampleDefaultRedshiftServerlessNamespaceStack(app, \"ExampleDefaultRedshiftServerlessNamespaceStack\")","syntaxKindCounter":{"11":3,"80":12,"108":1,"110":1,"154":1,"169":2,"176":1,"183":1,"210":1,"211":2,"213":1,"214":1,"233":1,"241":1,"244":2,"263":1,"298":1,"303":2},"fqnsFingerprint":"3443c9b061b17cedb8647ac5001a39163150937cc7ec3cc908ede77239ee1505"},"e906bf000f0a4bacc82d4bf2794d8134d7fd0aab5ec83e35eef70394dd7ffee1":{"translations":{"python":{"source":"class ExampleRedshiftServerlessNamespaceRolesStack(Stack):\n    def __init__(self, scope, id):\n        super().__init__(scope, id)\n\n        bucket = Bucket(self, \"ExampleBucket\")\n\n        ingestion_role = Role(self, \"IngestionRole\",\n            assumed_by=ServicePrincipal(\"redshift.amazonaws.com\"),\n            managed_policies=[\n                ManagedPolicy.from_aws_managed_policy_name(\"AmazonRedshiftAllCommandsFullAccess\")\n            ]\n        )\n\n        bucket.grant_read(ingestion_role)\n\n        dsf.consumption.RedshiftServerlessNamespace(self, \"RedshiftServerlessNamespace\",\n            db_name=\"database\",\n            name=\"example-namespace\",\n            default_iAMRole=ingestion_role\n        )","version":"2"},"csharp":{"source":"class ExampleRedshiftServerlessNamespaceRolesStack : Stack\n{\n    public ExampleRedshiftServerlessNamespaceRolesStack(Construct scope, string id) : base(scope, id)\n    {\n\n        var bucket = new Bucket(this, \"ExampleBucket\");\n\n        var ingestionRole = new Role(this, \"IngestionRole\", new RoleProps {\n            AssumedBy = new ServicePrincipal(\"redshift.amazonaws.com\"),\n            ManagedPolicies = new [] { ManagedPolicy.FromAwsManagedPolicyName(\"AmazonRedshiftAllCommandsFullAccess\") }\n        });\n\n        bucket.GrantRead(ingestionRole);\n\n        new Consumption.RedshiftServerlessNamespace(this, \"RedshiftServerlessNamespace\", new RedshiftServerlessNamespaceProps {\n            DbName = \"database\",\n            Name = \"example-namespace\",\n            DefaultIAMRole = ingestionRole\n        });\n    }\n}","version":"1"},"java":{"source":"public class ExampleRedshiftServerlessNamespaceRolesStack extends Stack {\n    public ExampleRedshiftServerlessNamespaceRolesStack(Construct scope, String id) {\n        super(scope, id);\n\n        Bucket bucket = new Bucket(this, \"ExampleBucket\");\n\n        Role ingestionRole = Role.Builder.create(this, \"IngestionRole\")\n                .assumedBy(new ServicePrincipal(\"redshift.amazonaws.com\"))\n                .managedPolicies(List.of(ManagedPolicy.fromAwsManagedPolicyName(\"AmazonRedshiftAllCommandsFullAccess\")))\n                .build();\n\n        bucket.grantRead(ingestionRole);\n\n        RedshiftServerlessNamespace.Builder.create(this, \"RedshiftServerlessNamespace\")\n                .dbName(\"database\")\n                .name(\"example-namespace\")\n                .defaultIAMRole(ingestionRole)\n                .build();\n    }\n}","version":"1"},"go":{"source":"type exampleRedshiftServerlessNamespaceRolesStack struct {\n\tstack\n}\n\nfunc newExampleRedshiftServerlessNamespaceRolesStack(scope construct, id *string) *exampleRedshiftServerlessNamespaceRolesStack {\n\tthis := &exampleRedshiftServerlessNamespaceRolesStack{}\n\tnewStack_Override(this, scope, id)\n\n\tbucket := awscdk.NewBucket(this, jsii.String(\"ExampleBucket\"))\n\n\tingestionRole := awscdk.NewRole(this, jsii.String(\"IngestionRole\"), &RoleProps{\n\t\tAssumedBy: awscdk.NewServicePrincipal(jsii.String(\"redshift.amazonaws.com\")),\n\t\tManagedPolicies: []iManagedPolicy{\n\t\t\tawscdk.ManagedPolicy_FromAwsManagedPolicyName(jsii.String(\"AmazonRedshiftAllCommandsFullAccess\")),\n\t\t},\n\t})\n\n\tbucket.GrantRead(ingestionRole)\n\n\tconsumption.NewRedshiftServerlessNamespace(this, jsii.String(\"RedshiftServerlessNamespace\"), &RedshiftServerlessNamespaceProps{\n\t\tDbName: jsii.String(\"database\"),\n\t\tName: jsii.String(\"example-namespace\"),\n\t\tDefaultIAMRole: ingestionRole,\n\t})\n\treturn this\n}","version":"1"},"$":{"source":"class ExampleRedshiftServerlessNamespaceRolesStack extends Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id)\n\n    const bucket = new Bucket(this, \"ExampleBucket\")\n\n    const ingestionRole = new Role(this, \"IngestionRole\", {\n      assumedBy: new ServicePrincipal(\"redshift.amazonaws.com\"),\n      managedPolicies: [\n        ManagedPolicy.fromAwsManagedPolicyName(\"AmazonRedshiftAllCommandsFullAccess\")\n      ]\n    })\n\n    bucket.grantRead(ingestionRole)\n\n    new dsf.consumption.RedshiftServerlessNamespace(this, \"RedshiftServerlessNamespace\", {\n      dbName: \"database\",\n      name: \"example-namespace\",\n      defaultIAMRole: ingestionRole\n    })\n  }\n}","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.consumption"},"field":{"field":"markdown","line":37}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessNamespace","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessNamespaceProps","aws-cdk-lib.Stack","aws-cdk-lib.aws_iam.IGrantable","aws-cdk-lib.aws_iam.IPrincipal","aws-cdk-lib.aws_iam.IRole","aws-cdk-lib.aws_iam.ManagedPolicy#fromAwsManagedPolicyName","aws-cdk-lib.aws_iam.Role","aws-cdk-lib.aws_iam.RoleProps","aws-cdk-lib.aws_iam.ServicePrincipal","aws-cdk-lib.aws_s3.Bucket","aws-cdk-lib.aws_s3.BucketBase#grantRead","constructs.Construct"],"fullSource":"import { App, Stack } from \"aws-cdk-lib\";\nimport { Construct } from \"constructs\";\nimport * as dsf from '../../index';\nimport { Bucket } from \"aws-cdk-lib/aws-s3\";\nimport { ManagedPolicy, Role, ServicePrincipal } from \"aws-cdk-lib/aws-iam\";\n\n/// !show\nclass ExampleRedshiftServerlessNamespaceRolesStack extends Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id)\n    \n    const bucket = new Bucket(this, \"ExampleBucket\")\n    \n    const ingestionRole = new Role(this, \"IngestionRole\", {\n      assumedBy: new ServicePrincipal(\"redshift.amazonaws.com\"),\n      managedPolicies: [\n        ManagedPolicy.fromAwsManagedPolicyName(\"AmazonRedshiftAllCommandsFullAccess\")\n      ]\n    })\n    \n    bucket.grantRead(ingestionRole)\n    \n    new dsf.consumption.RedshiftServerlessNamespace(this, \"RedshiftServerlessNamespace\", {\n      dbName: \"database\",\n      name: \"example-namespace\",\n      defaultIAMRole: ingestionRole \n    })\n  }\n}\n/// !hide\nconst app = new App()\nnew ExampleRedshiftServerlessNamespaceRolesStack(app, \"ExampleRedshiftServerlessNamespaceRolesStack\")","syntaxKindCounter":{"11":7,"80":26,"108":1,"110":3,"154":1,"169":2,"176":1,"183":1,"209":1,"210":2,"211":4,"213":3,"214":4,"233":1,"241":1,"243":2,"244":3,"260":2,"261":2,"263":1,"298":1,"303":5},"fqnsFingerprint":"81264a1037fde778bba88ab6f57302762fd6948d19138e8abefd7761a0e1a29a"},"dbad33c72a0fef0d207fa4fa5277b8f95a8799032cc20a7cf11127a16e58fec1":{"translations":{"python":{"source":"class ExampleDefaultRedshiftServerlessWorkgroupStack(Stack):\n    def __init__(self, scope, id):\n        super().__init__(scope, id)\n\n        namespace = dsf.consumption.RedshiftServerlessNamespace(self, \"DefaultRedshiftServerlessNamespace\",\n            name=\"default\",\n            db_name=\"defaultdb\"\n        )\n\n        dsf.consumption.RedshiftServerlessWorkgroup(self, \"DefaultRedshiftServerlessWorkgroup\",\n            name=\"default\",\n            namespace=namespace\n        )","version":"2"},"csharp":{"source":"class ExampleDefaultRedshiftServerlessWorkgroupStack : Stack\n{\n    public ExampleDefaultRedshiftServerlessWorkgroupStack(Construct scope, string id) : base(scope, id)\n    {\n\n        var namespace = new Consumption.RedshiftServerlessNamespace(this, \"DefaultRedshiftServerlessNamespace\", new RedshiftServerlessNamespaceProps {\n            Name = \"default\",\n            DbName = \"defaultdb\"\n        });\n\n        new Consumption.RedshiftServerlessWorkgroup(this, \"DefaultRedshiftServerlessWorkgroup\", new RedshiftServerlessWorkgroupProps {\n            Name = \"default\",\n            Namespace = namespace\n        });\n    }\n}","version":"1"},"java":{"source":"public class ExampleDefaultRedshiftServerlessWorkgroupStack extends Stack {\n    public ExampleDefaultRedshiftServerlessWorkgroupStack(Construct scope, String id) {\n        super(scope, id);\n\n        RedshiftServerlessNamespace namespace = RedshiftServerlessNamespace.Builder.create(this, \"DefaultRedshiftServerlessNamespace\")\n                .name(\"default\")\n                .dbName(\"defaultdb\")\n                .build();\n\n        RedshiftServerlessWorkgroup.Builder.create(this, \"DefaultRedshiftServerlessWorkgroup\")\n                .name(\"default\")\n                .namespace(namespace)\n                .build();\n    }\n}","version":"1"},"go":{"source":"type exampleDefaultRedshiftServerlessWorkgroupStack struct {\n\tstack\n}\n\nfunc newExampleDefaultRedshiftServerlessWorkgroupStack(scope construct, id *string) *exampleDefaultRedshiftServerlessWorkgroupStack {\n\tthis := &exampleDefaultRedshiftServerlessWorkgroupStack{}\n\tnewStack_Override(this, scope, id)\n\n\tnamespace := consumption.NewRedshiftServerlessNamespace(this, jsii.String(\"DefaultRedshiftServerlessNamespace\"), &RedshiftServerlessNamespaceProps{\n\t\tName: jsii.String(\"default\"),\n\t\tDbName: jsii.String(\"defaultdb\"),\n\t})\n\n\tconsumption.NewRedshiftServerlessWorkgroup(this, jsii.String(\"DefaultRedshiftServerlessWorkgroup\"), &RedshiftServerlessWorkgroupProps{\n\t\tName: jsii.String(\"default\"),\n\t\tNamespace: namespace,\n\t})\n\treturn this\n}","version":"1"},"$":{"source":"class ExampleDefaultRedshiftServerlessWorkgroupStack extends Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id)\n\n    const namespace = new dsf.consumption.RedshiftServerlessNamespace(this, 'DefaultRedshiftServerlessNamespace', {\n      name: \"default\",\n      dbName: 'defaultdb',\n    })\n\n    new dsf.consumption.RedshiftServerlessWorkgroup(this, \"DefaultRedshiftServerlessWorkgroup\", {\n      name: \"default\",\n      namespace: namespace,\n    })\n  }\n}","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.consumption"},"field":{"field":"markdown","line":79}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessNamespace","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessNamespaceProps","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroup","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroupProps","aws-cdk-lib.Stack","constructs.Construct"],"fullSource":"import { App, Stack } from \"aws-cdk-lib\";\nimport { Construct } from \"constructs\";\nimport * as dsf from '../../index';\n\n/// !show\nclass ExampleDefaultRedshiftServerlessWorkgroupStack extends Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id)\n    \n    const namespace = new dsf.consumption.RedshiftServerlessNamespace(this, 'DefaultRedshiftServerlessNamespace', {\n      name: \"default\",\n      dbName: 'defaultdb',\n    })\n    \n    new dsf.consumption.RedshiftServerlessWorkgroup(this, \"DefaultRedshiftServerlessWorkgroup\", {\n      name: \"default\",\n      namespace: namespace,\n    })\n  }\n}\n/// !hide\nconst app = new App()\nnew ExampleDefaultRedshiftServerlessWorkgroupStack(app, \"ExampleDefaultRedshiftServerlessWorkgroupStack\")","syntaxKindCounter":{"11":5,"80":19,"108":1,"110":2,"154":1,"169":2,"176":1,"183":1,"210":2,"211":4,"213":1,"214":2,"233":1,"241":1,"243":1,"244":2,"260":1,"261":1,"263":1,"298":1,"303":4},"fqnsFingerprint":"72d07f9e1129e9fe670eba0e619707d8eed9f5f4d3d4a8737f902d6b37b43100"},"b0cd1f36d99e74a29f97c39fd2a44d11c11437be1830b825260209dc28efd97d":{"translations":{"python":{"source":"workgroup = dsf.consumption.RedshiftServerlessWorkgroup(self, \"DefaultRedshiftServerlessWorkgroup\",\n    name=\"default\",\n    namespace=namespace\n)\n\n# Run a custom SQL to create a customer table\ncreate_table = workgroup.run_custom_sQL(\"CreateCustomerTable\", \"defaultdb\", \"\"\"\n          CREATE TABLE customer(\n            customer_id varchar(50),\n            salutation varchar(5),\n            first_name varchar(50),\n            last_name varchar(50),\n            email_address varchar(100)\n          )\n          diststyle even\n          \"\"\", \"drop table customer\")\n\n# Run a COPY command to load data into the customer table\ningestion = workgroup.ingest_data(\"ExampleCopy\", \"defaultdb\", \"customer\", bucket, \"data-products/customer/\", \"csv ignoreheader 1\")\n\n# Add dependencies between Redshift Data API commands because CDK cannot infer them\ningestion.node.add_dependency(create_table)\n\n# Create an engineering role in the defaultdb\ndb_role = workgroup.create_db_role(\"EngineeringRole\", \"defaultdb\", \"engineering\")\n\n# Grant the engineering role full access to the public schema in the defaultdb\ndb_schema = workgroup.grant_db_schema_to_role(\"EngineeringGrant\", \"defaultdb\", \"public\", \"engineering\")\n\n# Enforce dependencies\ndb_schema.node.add_dependency(db_role)","version":"2"},"csharp":{"source":"var workgroup = new Consumption.RedshiftServerlessWorkgroup(this, \"DefaultRedshiftServerlessWorkgroup\", new RedshiftServerlessWorkgroupProps {\n    Name = \"default\",\n    Namespace = namespace\n});\n\n// Run a custom SQL to create a customer table\nvar createTable = workgroup.RunCustomSQL(\"CreateCustomerTable\", \"defaultdb\", @\"\n      CREATE TABLE customer(\n        customer_id varchar(50),\n        salutation varchar(5),\n        first_name varchar(50),\n        last_name varchar(50),\n        email_address varchar(100)\n      )\n      diststyle even\n      \", \"drop table customer\");\n\n// Run a COPY command to load data into the customer table\nvar ingestion = workgroup.IngestData(\"ExampleCopy\", \"defaultdb\", \"customer\", bucket, \"data-products/customer/\", \"csv ignoreheader 1\");\n\n// Add dependencies between Redshift Data API commands because CDK cannot infer them\ningestion.Node.AddDependency(createTable);\n\n// Create an engineering role in the defaultdb\nvar dbRole = workgroup.CreateDbRole(\"EngineeringRole\", \"defaultdb\", \"engineering\");\n\n// Grant the engineering role full access to the public schema in the defaultdb\nvar dbSchema = workgroup.GrantDbSchemaToRole(\"EngineeringGrant\", \"defaultdb\", \"public\", \"engineering\");\n\n// Enforce dependencies\ndbSchema.Node.AddDependency(dbRole);","version":"1"},"java":{"source":"RedshiftServerlessWorkgroup workgroup = RedshiftServerlessWorkgroup.Builder.create(this, \"DefaultRedshiftServerlessWorkgroup\")\n        .name(\"default\")\n        .namespace(namespace)\n        .build();\n\n// Run a custom SQL to create a customer table\nCustomResource createTable = workgroup.runCustomSQL(\"CreateCustomerTable\", \"defaultdb\", \"\\n      CREATE TABLE customer(\\n        customer_id varchar(50), \\n        salutation varchar(5), \\n        first_name varchar(50), \\n        last_name varchar(50), \\n        email_address varchar(100)\\n      ) \\n      diststyle even\\n      \", \"drop table customer\");\n\n// Run a COPY command to load data into the customer table\nCustomResource ingestion = workgroup.ingestData(\"ExampleCopy\", \"defaultdb\", \"customer\", bucket, \"data-products/customer/\", \"csv ignoreheader 1\");\n\n// Add dependencies between Redshift Data API commands because CDK cannot infer them\ningestion.node.addDependency(createTable);\n\n// Create an engineering role in the defaultdb\nCustomResource dbRole = workgroup.createDbRole(\"EngineeringRole\", \"defaultdb\", \"engineering\");\n\n// Grant the engineering role full access to the public schema in the defaultdb\nCustomResource dbSchema = workgroup.grantDbSchemaToRole(\"EngineeringGrant\", \"defaultdb\", \"public\", \"engineering\");\n\n// Enforce dependencies\ndbSchema.node.addDependency(dbRole);","version":"1"},"go":{"source":"workgroup := consumption.NewRedshiftServerlessWorkgroup(this, jsii.String(\"DefaultRedshiftServerlessWorkgroup\"), &RedshiftServerlessWorkgroupProps{\n\tName: jsii.String(\"default\"),\n\tNamespace: namespace,\n})\n\n// Run a custom SQL to create a customer table\ncreateTable := workgroup.RunCustomSQL(jsii.String(\"CreateCustomerTable\"), jsii.String(\"defaultdb\"), jsii.String(`\n      CREATE TABLE customer(\n        customer_id varchar(50),\n        salutation varchar(5),\n        first_name varchar(50),\n        last_name varchar(50),\n        email_address varchar(100)\n      )\n      diststyle even\n      `), jsii.String(\"drop table customer\"))\n\n// Run a COPY command to load data into the customer table\ningestion := workgroup.IngestData(jsii.String(\"ExampleCopy\"), jsii.String(\"defaultdb\"), jsii.String(\"customer\"), bucket, jsii.String(\"data-products/customer/\"), jsii.String(\"csv ignoreheader 1\"))\n\n// Add dependencies between Redshift Data API commands because CDK cannot infer them\ningestion.Node.AddDependency(createTable)\n\n// Create an engineering role in the defaultdb\ndbRole := workgroup.CreateDbRole(jsii.String(\"EngineeringRole\"), jsii.String(\"defaultdb\"), jsii.String(\"engineering\"))\n\n// Grant the engineering role full access to the public schema in the defaultdb\ndbSchema := workgroup.GrantDbSchemaToRole(jsii.String(\"EngineeringGrant\"), jsii.String(\"defaultdb\"), jsii.String(\"public\"), jsii.String(\"engineering\"))\n\n// Enforce dependencies\ndbSchema.Node.AddDependency(dbRole)","version":"1"},"$":{"source":"    const workgroup = new dsf.consumption.RedshiftServerlessWorkgroup(this, \"DefaultRedshiftServerlessWorkgroup\", {\n      name: \"default\",\n      namespace: namespace,\n    })\n\n    // Run a custom SQL to create a customer table\n    const createTable = workgroup.runCustomSQL('CreateCustomerTable', \"defaultdb\",\n      `\n      CREATE TABLE customer(\n        customer_id varchar(50),\n        salutation varchar(5),\n        first_name varchar(50),\n        last_name varchar(50),\n        email_address varchar(100)\n      )\n      diststyle even\n      `,\n      \"drop table customer\"\n    );\n\n    // Run a COPY command to load data into the customer table\n    const ingestion = workgroup.ingestData('ExampleCopy', \"defaultdb\", \"customer\", bucket, \"data-products/customer/\", \"csv ignoreheader 1\");\n\n    // Add dependencies between Redshift Data API commands because CDK cannot infer them\n    ingestion.node.addDependency(createTable);\n\n    // Create an engineering role in the defaultdb\n    const dbRole = workgroup.createDbRole('EngineeringRole', 'defaultdb', 'engineering');\n\n    // Grant the engineering role full access to the public schema in the defaultdb\n    const dbSchema = workgroup.grantDbSchemaToRole('EngineeringGrant', 'defaultdb', 'public', 'engineering');\n\n    // Enforce dependencies\n    dbSchema.node.addDependency(dbRole);","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.consumption"},"field":{"field":"markdown","line":108}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessNamespace","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroup","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroup#createDbRole","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroup#grantDbSchemaToRole","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroup#ingestData","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroup#runCustomSQL","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroupProps","aws-cdk-lib.CustomResource","aws-cdk-lib.aws_iam.IPrincipal","aws-cdk-lib.aws_s3.IBucket","constructs.Construct","constructs.Construct#node","constructs.IDependable","constructs.Node#addDependency"],"fullSource":"import { App, Stack } from \"aws-cdk-lib\";\nimport { Construct } from \"constructs\";\nimport * as dsf from '../../index';\nimport { Bucket } from \"aws-cdk-lib/aws-s3\";\nimport { ManagedPolicy, Role, ServicePrincipal } from \"aws-cdk-lib/aws-iam\";\n\nclass ExampleRedshiftServerlessWorkgroupBootstrapStack extends Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id)\n    \n    const bucket = new Bucket(this, \"ExampleDataBucket\")\n    \n    const ingestionRole = new Role(this, \"IngestionRole\", {\n      assumedBy: new ServicePrincipal(\"redshift.amazonaws.com\"),\n      managedPolicies: [\n        ManagedPolicy.fromAwsManagedPolicyName(\"AmazonRedshiftAllCommandsFullAccess\")\n      ]\n    })\n    \n    bucket.grantRead(ingestionRole)\n    \n    const namespace = new dsf.consumption.RedshiftServerlessNamespace(this, 'DefaultRedshiftServerlessNamespace', {\n      name: \"default\",\n      dbName: 'defaultdb',\n    })\n    /// !show\n    const workgroup = new dsf.consumption.RedshiftServerlessWorkgroup(this, \"DefaultRedshiftServerlessWorkgroup\", {\n      name: \"default\",\n      namespace: namespace,\n    })\n\n    // Run a custom SQL to create a customer table\n    const createTable = workgroup.runCustomSQL('CreateCustomerTable', \"defaultdb\", \n      `\n      CREATE TABLE customer(\n        customer_id varchar(50), \n        salutation varchar(5), \n        first_name varchar(50), \n        last_name varchar(50), \n        email_address varchar(100)\n      ) \n      diststyle even\n      `, \n      \"drop table customer\"\n    );\n\n    // Run a COPY command to load data into the customer table\n    const ingestion = workgroup.ingestData('ExampleCopy', \"defaultdb\", \"customer\", bucket, \"data-products/customer/\", \"csv ignoreheader 1\");\n\n    // Add dependencies between Redshift Data API commands because CDK cannot infer them\n    ingestion.node.addDependency(createTable);\n\n    // Create an engineering role in the defaultdb\n    const dbRole = workgroup.createDbRole('EngineeringRole', 'defaultdb', 'engineering');\n\n    // Grant the engineering role full access to the public schema in the defaultdb\n    const dbSchema = workgroup.grantDbSchemaToRole('EngineeringGrant', 'defaultdb', 'public', 'engineering');\n\n    // Enforce dependencies\n    dbSchema.node.addDependency(dbRole);\n    /// !hide\n  }\n}\n\nconst app = new App()\nnew ExampleRedshiftServerlessWorkgroupBootstrapStack(app, \"ExampleRedshiftServerlessWorkgroupBootstrapStack\")","syntaxKindCounter":{"11":17,"15":1,"80":28,"110":1,"210":1,"211":10,"213":6,"214":1,"243":5,"244":2,"260":5,"261":5,"303":2},"fqnsFingerprint":"09f7b63c8afa668d528092a463eeeedb369f7d3b462112a4c7b988a2ee9fef50"},"09f30c37bb1bac6f756a967f3fc491277aefcb6d44b6eaf9f5ec24fe770d4d7f":{"translations":{"python":{"source":"class ExampleRedshiftServerlessWorkgroupCatalogStack(Stack):\n    def __init__(self, scope, id):\n        super().__init__(scope, id)\n\n        namespace = dsf.consumption.RedshiftServerlessNamespace(self, \"DefaultRedshiftServerlessNamespace\",\n            name=\"default\",\n            db_name=\"defaultdb\"\n        )\n\n        workgroup = dsf.consumption.RedshiftServerlessWorkgroup(self, \"DefaultRedshiftServerlessWorkgroup\",\n            name=\"default\",\n            namespace=namespace\n        )\n\n        workgroup.catalog_tables(\"RedshiftCatalog\", \"example-redshift-db\", \"defaultdb/public/%\")","version":"2"},"csharp":{"source":"class ExampleRedshiftServerlessWorkgroupCatalogStack : Stack\n{\n    public ExampleRedshiftServerlessWorkgroupCatalogStack(Construct scope, string id) : base(scope, id)\n    {\n\n        var namespace = new Consumption.RedshiftServerlessNamespace(this, \"DefaultRedshiftServerlessNamespace\", new RedshiftServerlessNamespaceProps {\n            Name = \"default\",\n            DbName = \"defaultdb\"\n        });\n\n        var workgroup = new Consumption.RedshiftServerlessWorkgroup(this, \"DefaultRedshiftServerlessWorkgroup\", new RedshiftServerlessWorkgroupProps {\n            Name = \"default\",\n            Namespace = namespace\n        });\n\n        workgroup.CatalogTables(\"RedshiftCatalog\", \"example-redshift-db\", \"defaultdb/public/%\");\n    }\n}","version":"1"},"java":{"source":"public class ExampleRedshiftServerlessWorkgroupCatalogStack extends Stack {\n    public ExampleRedshiftServerlessWorkgroupCatalogStack(Construct scope, String id) {\n        super(scope, id);\n\n        RedshiftServerlessNamespace namespace = RedshiftServerlessNamespace.Builder.create(this, \"DefaultRedshiftServerlessNamespace\")\n                .name(\"default\")\n                .dbName(\"defaultdb\")\n                .build();\n\n        RedshiftServerlessWorkgroup workgroup = RedshiftServerlessWorkgroup.Builder.create(this, \"DefaultRedshiftServerlessWorkgroup\")\n                .name(\"default\")\n                .namespace(namespace)\n                .build();\n\n        workgroup.catalogTables(\"RedshiftCatalog\", \"example-redshift-db\", \"defaultdb/public/%\");\n    }\n}","version":"1"},"go":{"source":"type exampleRedshiftServerlessWorkgroupCatalogStack struct {\n\tstack\n}\n\nfunc newExampleRedshiftServerlessWorkgroupCatalogStack(scope construct, id *string) *exampleRedshiftServerlessWorkgroupCatalogStack {\n\tthis := &exampleRedshiftServerlessWorkgroupCatalogStack{}\n\tnewStack_Override(this, scope, id)\n\n\tnamespace := consumption.NewRedshiftServerlessNamespace(this, jsii.String(\"DefaultRedshiftServerlessNamespace\"), &RedshiftServerlessNamespaceProps{\n\t\tName: jsii.String(\"default\"),\n\t\tDbName: jsii.String(\"defaultdb\"),\n\t})\n\n\tworkgroup := consumption.NewRedshiftServerlessWorkgroup(this, jsii.String(\"DefaultRedshiftServerlessWorkgroup\"), &RedshiftServerlessWorkgroupProps{\n\t\tName: jsii.String(\"default\"),\n\t\tNamespace: namespace,\n\t})\n\n\tworkgroup.CatalogTables(jsii.String(\"RedshiftCatalog\"), jsii.String(\"example-redshift-db\"), jsii.String(\"defaultdb/public/%\"))\n\treturn this\n}","version":"1"},"$":{"source":"class ExampleRedshiftServerlessWorkgroupCatalogStack extends Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id)\n\n    const namespace = new dsf.consumption.RedshiftServerlessNamespace(this, 'DefaultRedshiftServerlessNamespace', {\n      name: \"default\",\n      dbName: 'defaultdb',\n    })\n\n    const workgroup = new dsf.consumption.RedshiftServerlessWorkgroup(this, \"DefaultRedshiftServerlessWorkgroup\", {\n      name: \"default\",\n      namespace: namespace,\n    })\n\n    workgroup.catalogTables('RedshiftCatalog', \"example-redshift-db\", 'defaultdb/public/%')\n  }\n}","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.consumption"},"field":{"field":"markdown","line":151}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessNamespace","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessNamespaceProps","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroup","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroup#catalogTables","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroupProps","aws-cdk-lib.Stack","constructs.Construct"],"fullSource":"import { App, Stack } from \"aws-cdk-lib\";\nimport { Construct } from \"constructs\";\nimport * as dsf from '../../index';\n\n/// !show\nclass ExampleRedshiftServerlessWorkgroupCatalogStack extends Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id)\n    \n    const namespace = new dsf.consumption.RedshiftServerlessNamespace(this, 'DefaultRedshiftServerlessNamespace', {\n      name: \"default\",\n      dbName: 'defaultdb',\n    })\n    \n    const workgroup = new dsf.consumption.RedshiftServerlessWorkgroup(this, \"DefaultRedshiftServerlessWorkgroup\", {\n      name: \"default\",\n      namespace: namespace,\n    })\n    \n    workgroup.catalogTables('RedshiftCatalog', \"example-redshift-db\", 'defaultdb/public/%')\n  }\n}\n/// !hide\nconst app = new App()\nnew ExampleRedshiftServerlessWorkgroupCatalogStack(app, \"ExampleRedshiftServerlessWorkgroupCatalogStack\")","syntaxKindCounter":{"11":8,"80":22,"108":1,"110":2,"154":1,"169":2,"176":1,"183":1,"210":2,"211":5,"213":2,"214":2,"233":1,"241":1,"243":2,"244":2,"260":2,"261":2,"263":1,"298":1,"303":4},"fqnsFingerprint":"388aee7d95195897e52f24e04ea0cb2104b17cef1e84695dc0d2b55474bf1b41"},"47bd6a90f477caa045b8a766fcb20850980b587aa1756d503953dbdb523a2b80":{"translations":{"python":{"source":"class ExampleRedshiftDataSharingSameAccountStack(Stack):\n    def __init__(self, scope, id):\n        super().__init__(scope, id)\n\n        db_name = \"defaultdb\"\n\n        producer_namespace = RedshiftServerlessNamespace(self, \"ProducerNamespace\",\n            name=\"producer-namespace\",\n            db_name=db_name\n        )\n\n        producer_workgroup = RedshiftServerlessWorkgroup(self, \"ProducerRSWorkgroup\",\n            name=\"producer-workgroup\",\n            namespace=producer_namespace\n        )\n\n        consumer_namespace = RedshiftServerlessNamespace(self, \"ConsumerNamespace\",\n            name=\"consumer-namespace\",\n            db_name=db_name\n        )\n\n        consumer_workgroup = RedshiftServerlessWorkgroup(self, \"ConsumerRSWorkgroup\",\n            name=\"consumer-workgroup\",\n            namespace=consumer_namespace\n        )\n\n        share_name = \"testshare\"\n\n        create_customers_table = producer_workgroup.run_custom_sQL(\"CreateCustomerTable\", db_name, \"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\")\n\n        new_share = producer_workgroup.create_share(\"producer-share\", db_name, share_name, \"public\", [\"public.customers\"])\n        new_share.new_share_custom_resource.node.add_dependency(create_customers_table)\n\n        grant_to_consumer = producer_workgroup.grant_access_to_share(\"GrantToConsumer\", new_share, consumer_namespace.namespace_id)\n\n        grant_to_consumer.resource.node.add_dependency(new_share)\n        grant_to_consumer.resource.node.add_dependency(consumer_namespace)\n\n        consume_share = consumer_workgroup.create_database_from_share(\"consume-datashare\", \"db_from_share\", share_name, producer_namespace.namespace_id)\n\n        consume_share.resource.node.add_dependency(grant_to_consumer)","version":"2"},"csharp":{"source":"class ExampleRedshiftDataSharingSameAccountStack : Stack\n{\n    public ExampleRedshiftDataSharingSameAccountStack(Construct scope, string id) : base(scope, id)\n    {\n\n        var dbName = \"defaultdb\";\n\n        var producerNamespace = new RedshiftServerlessNamespace(this, \"ProducerNamespace\", new RedshiftServerlessNamespaceProps {\n            Name = \"producer-namespace\",\n            DbName = dbName\n        });\n\n        var producerWorkgroup = new RedshiftServerlessWorkgroup(this, \"ProducerRSWorkgroup\", new RedshiftServerlessWorkgroupProps {\n            Name = \"producer-workgroup\",\n            Namespace = producerNamespace\n        });\n\n        var consumerNamespace = new RedshiftServerlessNamespace(this, \"ConsumerNamespace\", new RedshiftServerlessNamespaceProps {\n            Name = \"consumer-namespace\",\n            DbName = dbName\n        });\n\n        var consumerWorkgroup = new RedshiftServerlessWorkgroup(this, \"ConsumerRSWorkgroup\", new RedshiftServerlessWorkgroupProps {\n            Name = \"consumer-workgroup\",\n            Namespace = consumerNamespace\n        });\n\n        var shareName = \"testshare\";\n\n        var 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\");\n\n        var newShare = producerWorkgroup.CreateShare(\"producer-share\", dbName, shareName, \"public\", new [] { \"public.customers\" });\n        newShare.NewShareCustomResource.Node.AddDependency(createCustomersTable);\n\n        var grantToConsumer = producerWorkgroup.GrantAccessToShare(\"GrantToConsumer\", newShare, consumerNamespace.NamespaceId);\n\n        grantToConsumer.Resource.Node.AddDependency(newShare);\n        grantToConsumer.Resource.Node.AddDependency(consumerNamespace);\n\n        var consumeShare = consumerWorkgroup.CreateDatabaseFromShare(\"consume-datashare\", \"db_from_share\", shareName, producerNamespace.NamespaceId);\n\n        consumeShare.Resource.Node.AddDependency(grantToConsumer);\n    }\n}","version":"1"},"java":{"source":"public class ExampleRedshiftDataSharingSameAccountStack extends Stack {\n    public ExampleRedshiftDataSharingSameAccountStack(Construct scope, String id) {\n        super(scope, id);\n\n        String dbName = \"defaultdb\";\n\n        RedshiftServerlessNamespace producerNamespace = RedshiftServerlessNamespace.Builder.create(this, \"ProducerNamespace\")\n                .name(\"producer-namespace\")\n                .dbName(dbName)\n                .build();\n\n        RedshiftServerlessWorkgroup producerWorkgroup = RedshiftServerlessWorkgroup.Builder.create(this, \"ProducerRSWorkgroup\")\n                .name(\"producer-workgroup\")\n                .namespace(producerNamespace)\n                .build();\n\n        RedshiftServerlessNamespace consumerNamespace = RedshiftServerlessNamespace.Builder.create(this, \"ConsumerNamespace\")\n                .name(\"consumer-namespace\")\n                .dbName(dbName)\n                .build();\n\n        RedshiftServerlessWorkgroup consumerWorkgroup = RedshiftServerlessWorkgroup.Builder.create(this, \"ConsumerRSWorkgroup\")\n                .name(\"consumer-workgroup\")\n                .namespace(consumerNamespace)\n                .build();\n\n        String shareName = \"testshare\";\n\n        CustomResource 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\");\n\n        RedshiftNewShareProps newShare = producerWorkgroup.createShare(\"producer-share\", dbName, shareName, \"public\", List.of(\"public.customers\"));\n        newShare.newShareCustomResource.node.addDependency(createCustomersTable);\n\n        RedshiftDataSharingGrantedProps grantToConsumer = producerWorkgroup.grantAccessToShare(\"GrantToConsumer\", newShare, consumerNamespace.getNamespaceId());\n\n        grantToConsumer.resource.node.addDependency(newShare);\n        grantToConsumer.resource.node.addDependency(consumerNamespace);\n\n        RedshiftDataSharingCreateDbFromShareProps consumeShare = consumerWorkgroup.createDatabaseFromShare(\"consume-datashare\", \"db_from_share\", shareName, producerNamespace.getNamespaceId());\n\n        consumeShare.resource.node.addDependency(grantToConsumer);\n    }\n}","version":"1"},"go":{"source":"type exampleRedshiftDataSharingSameAccountStack struct {\n\tstack\n}\n\nfunc newExampleRedshiftDataSharingSameAccountStack(scope construct, id *string) *exampleRedshiftDataSharingSameAccountStack {\n\tthis := &exampleRedshiftDataSharingSameAccountStack{}\n\tnewStack_Override(this, scope, id)\n\n\tdbName := \"defaultdb\"\n\n\tproducerNamespace := lib.NewRedshiftServerlessNamespace(this, jsii.String(\"ProducerNamespace\"), &RedshiftServerlessNamespaceProps{\n\t\tName: jsii.String(\"producer-namespace\"),\n\t\tDbName: jsii.String(DbName),\n\t})\n\n\tproducerWorkgroup := lib.NewRedshiftServerlessWorkgroup(this, jsii.String(\"ProducerRSWorkgroup\"), &RedshiftServerlessWorkgroupProps{\n\t\tName: jsii.String(\"producer-workgroup\"),\n\t\tNamespace: producerNamespace,\n\t})\n\n\tconsumerNamespace := lib.NewRedshiftServerlessNamespace(this, jsii.String(\"ConsumerNamespace\"), &RedshiftServerlessNamespaceProps{\n\t\tName: jsii.String(\"consumer-namespace\"),\n\t\tDbName: jsii.String(DbName),\n\t})\n\n\tconsumerWorkgroup := lib.NewRedshiftServerlessWorkgroup(this, jsii.String(\"ConsumerRSWorkgroup\"), &RedshiftServerlessWorkgroupProps{\n\t\tName: jsii.String(\"consumer-workgroup\"),\n\t\tNamespace: consumerNamespace,\n\t})\n\n\tshareName := \"testshare\"\n\n\tcreateCustomersTable := producerWorkgroup.RunCustomSQL(jsii.String(\"CreateCustomerTable\"), dbName, jsii.String(\"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)\"), jsii.String(\"drop table public.customers\"))\n\n\tnewShare := producerWorkgroup.CreateShare(jsii.String(\"producer-share\"), dbName, shareName, jsii.String(\"public\"), []*string{\n\t\tjsii.String(\"public.customers\"),\n\t})\n\tnewShare.NewShareCustomResource.Node.AddDependency(createCustomersTable)\n\n\tgrantToConsumer := producerWorkgroup.GrantAccessToShare(jsii.String(\"GrantToConsumer\"), newShare, consumerNamespace.NamespaceId)\n\n\tgrantToConsumer.Resource.Node.AddDependency(newShare)\n\tgrantToConsumer.Resource.Node.AddDependency(consumerNamespace)\n\n\tconsumeShare := consumerWorkgroup.CreateDatabaseFromShare(jsii.String(\"consume-datashare\"), jsii.String(\"db_from_share\"), shareName, producerNamespace.NamespaceId)\n\n\tconsumeShare.Resource.Node.AddDependency(grantToConsumer)\n\treturn this\n}","version":"1"},"$":{"source":"class ExampleRedshiftDataSharingSameAccountStack extends Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id)\n\n    const dbName = 'defaultdb';\n\n    const producerNamespace = new RedshiftServerlessNamespace(this, 'ProducerNamespace', {\n        name: 'producer-namespace',\n        dbName\n    });\n\n    const producerWorkgroup = new RedshiftServerlessWorkgroup(this, 'ProducerRSWorkgroup', {\n        name: 'producer-workgroup',\n        namespace: producerNamespace\n    });\n\n    const consumerNamespace = new RedshiftServerlessNamespace(this, 'ConsumerNamespace', {\n        name: 'consumer-namespace',\n        dbName\n    });\n\n    const consumerWorkgroup = new RedshiftServerlessWorkgroup(this, 'ConsumerRSWorkgroup', {\n        name: 'consumer-workgroup',\n        namespace: consumerNamespace\n    });\n\n    const shareName = 'testshare';\n\n    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');\n\n    const newShare = producerWorkgroup.createShare('producer-share', dbName, shareName, 'public', ['public.customers']);\n    newShare.newShareCustomResource.node.addDependency(createCustomersTable);\n\n    const grantToConsumer = producerWorkgroup.grantAccessToShare('GrantToConsumer', newShare, consumerNamespace.namespaceId)\n\n    grantToConsumer.resource.node.addDependency(newShare);\n    grantToConsumer.resource.node.addDependency(consumerNamespace);\n\n    const consumeShare = consumerWorkgroup.createDatabaseFromShare('consume-datashare', 'db_from_share', shareName, producerNamespace.namespaceId)\n\n    consumeShare.resource.node.addDependency(grantToConsumer);\n  }\n}","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.consumption"},"field":{"field":"markdown","line":187}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption.RedshiftDataSharingCreateDbFromShareProps","@cdklabs/aws-data-solutions-framework.consumption.RedshiftDataSharingCreateDbFromShareProps#resource","@cdklabs/aws-data-solutions-framework.consumption.RedshiftDataSharingGrantedProps","@cdklabs/aws-data-solutions-framework.consumption.RedshiftDataSharingGrantedProps#resource","@cdklabs/aws-data-solutions-framework.consumption.RedshiftNewShareProps","@cdklabs/aws-data-solutions-framework.consumption.RedshiftNewShareProps#newShareCustomResource","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessNamespace","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessNamespace#namespaceId","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessNamespaceProps","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroup","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroup#createDatabaseFromShare","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroup#createShare","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroup#grantAccessToShare","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroup#runCustomSQL","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroupProps","aws-cdk-lib.CustomResource","aws-cdk-lib.Stack","constructs.Construct","constructs.Construct#node","constructs.IDependable","constructs.Node#addDependency"],"fullSource":"import { App, Stack } from \"aws-cdk-lib\";\nimport { Construct } from \"constructs\";\nimport { RedshiftServerlessNamespace, RedshiftServerlessWorkgroup } from \"../lib\";\n/// !show\nclass ExampleRedshiftDataSharingSameAccountStack extends Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id)\n\n    const dbName = 'defaultdb';\n\n    const producerNamespace = new RedshiftServerlessNamespace(this, 'ProducerNamespace', {\n        name: 'producer-namespace',\n        dbName\n    });\n    \n    const producerWorkgroup = new RedshiftServerlessWorkgroup(this, 'ProducerRSWorkgroup', {\n        name: 'producer-workgroup',\n        namespace: producerNamespace\n    });\n\n    const consumerNamespace = new RedshiftServerlessNamespace(this, 'ConsumerNamespace', {\n        name: 'consumer-namespace',\n        dbName\n    });\n      \n    const consumerWorkgroup = new RedshiftServerlessWorkgroup(this, 'ConsumerRSWorkgroup', {\n        name: 'consumer-workgroup',\n        namespace: consumerNamespace\n    });\n    \n    const shareName = 'testshare';\n\n    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');\n\n    const newShare = producerWorkgroup.createShare('producer-share', dbName, shareName, 'public', ['public.customers']);\n    newShare.newShareCustomResource.node.addDependency(createCustomersTable);\n    \n    const grantToConsumer = producerWorkgroup.grantAccessToShare('GrantToConsumer', newShare, consumerNamespace.namespaceId)\n    \n    grantToConsumer.resource.node.addDependency(newShare);\n    grantToConsumer.resource.node.addDependency(consumerNamespace);\n    \n    const consumeShare = consumerWorkgroup.createDatabaseFromShare('consume-datashare', 'db_from_share', shareName, producerNamespace.namespaceId)\n    \n    consumeShare.resource.node.addDependency(grantToConsumer);\n  }\n}\n/// !hide\nconst app = new App()\nnew ExampleRedshiftDataSharingSameAccountStack(app, \"ExampleRedshiftDataSharingSameAccountStack\")","syntaxKindCounter":{"11":19,"80":68,"108":1,"110":4,"154":1,"169":2,"176":1,"183":1,"209":1,"210":4,"211":18,"213":9,"214":4,"233":1,"241":1,"243":10,"244":5,"260":10,"261":10,"263":1,"298":1,"303":6,"304":2},"fqnsFingerprint":"9f85cff2a9188ada126d660e05ac9a6a26a904908de5d2267dd6b2365c38a8ea"},"4de4542700e171ed78ef801e47a40d55236c3eda5c81c655c7b2226d98bd90c8":{"translations":{"python":{"source":"class ExampleRedshiftDataSharingCrossAccountAStack(Stack):\n    def __init__(self, scope, id):\n        super().__init__(scope, id)\n\n        db_name = \"defaultdb\"\n\n        producer_namespace = RedshiftServerlessNamespace(self, \"ProducerNamespace\",\n            name=\"producer-namespace\",\n            db_name=db_name\n        )\n\n        producer_workgroup = RedshiftServerlessWorkgroup(self, \"ProducerRSWorkgroup\",\n            name=\"producer-workgroup\",\n            namespace=producer_namespace\n        )\n\n        share_name = \"testshare\"\n\n        create_customers_table = producer_workgroup.run_custom_sQL(\"CreateCustomerTable\", db_name, \"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\")\n\n        new_share = producer_workgroup.create_share(\"producer-share\", db_name, share_name, \"public\", [\"public.customers\"])\n        new_share.new_share_custom_resource.node.add_dependency(create_customers_table)\n\n        grant_to_consumer = producer_workgroup.grant_access_to_share(\"GrantToConsumer\", new_share, undefined, \"<CONSUMER-ACCOUNT-ID>\", True)\n\n        grant_to_consumer.resource.node.add_dependency(new_share)\n\nclass ExampleRedshiftDataSharingCrossAccountBStack(Stack):\n    def __init__(self, scope, id):\n        super().__init__(scope, id)\n\n        db_name = \"defaultdb\"\n\n        consumer_namespace = RedshiftServerlessNamespace(self, \"ConsumerNamespace\",\n            name=\"consumer-namespace\",\n            db_name=db_name\n        )\n\n        consumer_workgroup = RedshiftServerlessWorkgroup(self, \"ConsumerRSWorkgroup\",\n            name=\"consumer-workgroup\",\n            namespace=consumer_namespace\n        )\n\n        share_name = \"testshare\"\n\n        consumer_workgroup.create_database_from_share(\"consume-datashare\", \"db_from_share\", share_name, \"<PRODUCER NAMESPACE>\", \"<PRODUCER ACCOUNT>\")","version":"2"},"csharp":{"source":"class ExampleRedshiftDataSharingCrossAccountAStack : Stack\n{\n    public ExampleRedshiftDataSharingCrossAccountAStack(Construct scope, string id) : base(scope, id)\n    {\n\n        var dbName = \"defaultdb\";\n\n        var producerNamespace = new RedshiftServerlessNamespace(this, \"ProducerNamespace\", new RedshiftServerlessNamespaceProps {\n            Name = \"producer-namespace\",\n            DbName = dbName\n        });\n\n        var producerWorkgroup = new RedshiftServerlessWorkgroup(this, \"ProducerRSWorkgroup\", new RedshiftServerlessWorkgroupProps {\n            Name = \"producer-workgroup\",\n            Namespace = producerNamespace\n        });\n\n        var shareName = \"testshare\";\n\n        var 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\");\n\n        var newShare = producerWorkgroup.CreateShare(\"producer-share\", dbName, shareName, \"public\", new [] { \"public.customers\" });\n        newShare.NewShareCustomResource.Node.AddDependency(createCustomersTable);\n\n        var grantToConsumer = producerWorkgroup.GrantAccessToShare(\"GrantToConsumer\", newShare, undefined, \"<CONSUMER-ACCOUNT-ID>\", true);\n\n        grantToConsumer.Resource.Node.AddDependency(newShare);\n    }\n}\n\nclass ExampleRedshiftDataSharingCrossAccountBStack : Stack\n{\n    public ExampleRedshiftDataSharingCrossAccountBStack(Construct scope, string id) : base(scope, id)\n    {\n\n        var dbName = \"defaultdb\";\n\n        var consumerNamespace = new RedshiftServerlessNamespace(this, \"ConsumerNamespace\", new RedshiftServerlessNamespaceProps {\n            Name = \"consumer-namespace\",\n            DbName = dbName\n        });\n\n        var consumerWorkgroup = new RedshiftServerlessWorkgroup(this, \"ConsumerRSWorkgroup\", new RedshiftServerlessWorkgroupProps {\n            Name = \"consumer-workgroup\",\n            Namespace = consumerNamespace\n        });\n\n        var shareName = \"testshare\";\n\n        consumerWorkgroup.CreateDatabaseFromShare(\"consume-datashare\", \"db_from_share\", shareName, \"<PRODUCER NAMESPACE>\", \"<PRODUCER ACCOUNT>\");\n    }\n}","version":"1"},"java":{"source":"public class ExampleRedshiftDataSharingCrossAccountAStack extends Stack {\n    public ExampleRedshiftDataSharingCrossAccountAStack(Construct scope, String id) {\n        super(scope, id);\n\n        String dbName = \"defaultdb\";\n\n        RedshiftServerlessNamespace producerNamespace = RedshiftServerlessNamespace.Builder.create(this, \"ProducerNamespace\")\n                .name(\"producer-namespace\")\n                .dbName(dbName)\n                .build();\n\n        RedshiftServerlessWorkgroup producerWorkgroup = RedshiftServerlessWorkgroup.Builder.create(this, \"ProducerRSWorkgroup\")\n                .name(\"producer-workgroup\")\n                .namespace(producerNamespace)\n                .build();\n\n        String shareName = \"testshare\";\n\n        CustomResource 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\");\n\n        RedshiftNewShareProps newShare = producerWorkgroup.createShare(\"producer-share\", dbName, shareName, \"public\", List.of(\"public.customers\"));\n        newShare.newShareCustomResource.node.addDependency(createCustomersTable);\n\n        RedshiftDataSharingGrantedProps grantToConsumer = producerWorkgroup.grantAccessToShare(\"GrantToConsumer\", newShare, undefined, \"<CONSUMER-ACCOUNT-ID>\", true);\n\n        grantToConsumer.resource.node.addDependency(newShare);\n    }\n}\n\npublic class ExampleRedshiftDataSharingCrossAccountBStack extends Stack {\n    public ExampleRedshiftDataSharingCrossAccountBStack(Construct scope, String id) {\n        super(scope, id);\n\n        String dbName = \"defaultdb\";\n\n        RedshiftServerlessNamespace consumerNamespace = RedshiftServerlessNamespace.Builder.create(this, \"ConsumerNamespace\")\n                .name(\"consumer-namespace\")\n                .dbName(dbName)\n                .build();\n\n        RedshiftServerlessWorkgroup consumerWorkgroup = RedshiftServerlessWorkgroup.Builder.create(this, \"ConsumerRSWorkgroup\")\n                .name(\"consumer-workgroup\")\n                .namespace(consumerNamespace)\n                .build();\n\n        String shareName = \"testshare\";\n\n        consumerWorkgroup.createDatabaseFromShare(\"consume-datashare\", \"db_from_share\", shareName, \"<PRODUCER NAMESPACE>\", \"<PRODUCER ACCOUNT>\");\n    }\n}","version":"1"},"go":{"source":"type exampleRedshiftDataSharingCrossAccountAStack struct {\n\tstack\n}\n\nfunc newExampleRedshiftDataSharingCrossAccountAStack(scope construct, id *string) *exampleRedshiftDataSharingCrossAccountAStack {\n\tthis := &exampleRedshiftDataSharingCrossAccountAStack{}\n\tnewStack_Override(this, scope, id)\n\n\tdbName := \"defaultdb\"\n\n\tproducerNamespace := lib.NewRedshiftServerlessNamespace(this, jsii.String(\"ProducerNamespace\"), &RedshiftServerlessNamespaceProps{\n\t\tName: jsii.String(\"producer-namespace\"),\n\t\tDbName: jsii.String(DbName),\n\t})\n\n\tproducerWorkgroup := lib.NewRedshiftServerlessWorkgroup(this, jsii.String(\"ProducerRSWorkgroup\"), &RedshiftServerlessWorkgroupProps{\n\t\tName: jsii.String(\"producer-workgroup\"),\n\t\tNamespace: producerNamespace,\n\t})\n\n\tshareName := \"testshare\"\n\n\tcreateCustomersTable := producerWorkgroup.RunCustomSQL(jsii.String(\"CreateCustomerTable\"), dbName, jsii.String(\"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)\"), jsii.String(\"drop table public.customers\"))\n\n\tnewShare := producerWorkgroup.CreateShare(jsii.String(\"producer-share\"), dbName, shareName, jsii.String(\"public\"), []*string{\n\t\tjsii.String(\"public.customers\"),\n\t})\n\tnewShare.NewShareCustomResource.Node.AddDependency(createCustomersTable)\n\n\tgrantToConsumer := producerWorkgroup.GrantAccessToShare(jsii.String(\"GrantToConsumer\"), newShare, undefined, jsii.String(\"<CONSUMER-ACCOUNT-ID>\"), jsii.Boolean(true))\n\n\tgrantToConsumer.Resource.Node.AddDependency(newShare)\n\treturn this\n}\n\ntype exampleRedshiftDataSharingCrossAccountBStack struct {\n\tstack\n}\n\nfunc newExampleRedshiftDataSharingCrossAccountBStack(scope construct, id *string) *exampleRedshiftDataSharingCrossAccountBStack {\n\tthis := &exampleRedshiftDataSharingCrossAccountBStack{}\n\tnewStack_Override(this, scope, id)\n\n\tdbName := \"defaultdb\"\n\n\tconsumerNamespace := lib.NewRedshiftServerlessNamespace(this, jsii.String(\"ConsumerNamespace\"), &RedshiftServerlessNamespaceProps{\n\t\tName: jsii.String(\"consumer-namespace\"),\n\t\tDbName: jsii.String(DbName),\n\t})\n\n\tconsumerWorkgroup := lib.NewRedshiftServerlessWorkgroup(this, jsii.String(\"ConsumerRSWorkgroup\"), &RedshiftServerlessWorkgroupProps{\n\t\tName: jsii.String(\"consumer-workgroup\"),\n\t\tNamespace: consumerNamespace,\n\t})\n\n\tshareName := \"testshare\"\n\n\tconsumerWorkgroup.CreateDatabaseFromShare(jsii.String(\"consume-datashare\"), jsii.String(\"db_from_share\"), shareName, jsii.String(\"<PRODUCER NAMESPACE>\"), jsii.String(\"<PRODUCER ACCOUNT>\"))\n\treturn this\n}","version":"1"},"$":{"source":"class ExampleRedshiftDataSharingCrossAccountAStack extends Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id)\n\n    const dbName = 'defaultdb';\n\n    const producerNamespace = new RedshiftServerlessNamespace(this, 'ProducerNamespace', {\n        name: 'producer-namespace',\n        dbName\n    });\n\n    const producerWorkgroup = new RedshiftServerlessWorkgroup(this, 'ProducerRSWorkgroup', {\n        name: 'producer-workgroup',\n        namespace: producerNamespace\n    });\n\n    const shareName = 'testshare';\n\n    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');\n\n    const newShare = producerWorkgroup.createShare('producer-share', dbName, shareName, 'public', ['public.customers']);\n    newShare.newShareCustomResource.node.addDependency(createCustomersTable);\n\n    const grantToConsumer = producerWorkgroup.grantAccessToShare('GrantToConsumer', newShare, undefined, \"<CONSUMER-ACCOUNT-ID>\", true);\n\n    grantToConsumer.resource.node.addDependency(newShare);\n  }\n}\n\nclass ExampleRedshiftDataSharingCrossAccountBStack extends Stack {\n    constructor(scope: Construct, id: string) {\n      super(scope, id)\n\n      const dbName = 'defaultdb';\n\n      const consumerNamespace = new RedshiftServerlessNamespace(this, 'ConsumerNamespace', {\n          name: 'consumer-namespace',\n          dbName\n      });\n\n      const consumerWorkgroup = new RedshiftServerlessWorkgroup(this, 'ConsumerRSWorkgroup', {\n          name: 'consumer-workgroup',\n          namespace: consumerNamespace\n      });\n\n      const shareName = 'testshare';\n\n      consumerWorkgroup.createDatabaseFromShare('consume-datashare', \"db_from_share\", shareName, \"<PRODUCER NAMESPACE>\", \"<PRODUCER ACCOUNT>\")\n    }\n  }","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.consumption"},"field":{"field":"markdown","line":233}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption.RedshiftDataSharingGrantedProps","@cdklabs/aws-data-solutions-framework.consumption.RedshiftDataSharingGrantedProps#resource","@cdklabs/aws-data-solutions-framework.consumption.RedshiftNewShareProps","@cdklabs/aws-data-solutions-framework.consumption.RedshiftNewShareProps#newShareCustomResource","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessNamespace","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessNamespaceProps","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroup","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroup#createDatabaseFromShare","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroup#createShare","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroup#grantAccessToShare","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroup#runCustomSQL","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroupProps","aws-cdk-lib.CustomResource","aws-cdk-lib.Stack","constructs.Construct","constructs.Construct#node","constructs.IDependable","constructs.Node#addDependency"],"fullSource":"import { App, Stack } from \"aws-cdk-lib\";\nimport { Construct } from \"constructs\";\nimport { RedshiftServerlessNamespace, RedshiftServerlessWorkgroup } from \"../lib\";\n/// !show\nclass ExampleRedshiftDataSharingCrossAccountAStack extends Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id)\n\n    const dbName = 'defaultdb';\n\n    const producerNamespace = new RedshiftServerlessNamespace(this, 'ProducerNamespace', {\n        name: 'producer-namespace',\n        dbName\n    });\n    \n    const producerWorkgroup = new RedshiftServerlessWorkgroup(this, 'ProducerRSWorkgroup', {\n        name: 'producer-workgroup',\n        namespace: producerNamespace\n    });\n    \n    const shareName = 'testshare';\n\n    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');\n\n    const newShare = producerWorkgroup.createShare('producer-share', dbName, shareName, 'public', ['public.customers']);\n    newShare.newShareCustomResource.node.addDependency(createCustomersTable);\n    \n    const grantToConsumer = producerWorkgroup.grantAccessToShare('GrantToConsumer', newShare, undefined, \"<CONSUMER-ACCOUNT-ID>\", true);\n    \n    grantToConsumer.resource.node.addDependency(newShare);\n  }\n}\n\nclass ExampleRedshiftDataSharingCrossAccountBStack extends Stack {\n    constructor(scope: Construct, id: string) {\n      super(scope, id)\n  \n      const dbName = 'defaultdb';\n  \n      const consumerNamespace = new RedshiftServerlessNamespace(this, 'ConsumerNamespace', {\n          name: 'consumer-namespace',\n          dbName\n      });\n        \n      const consumerWorkgroup = new RedshiftServerlessWorkgroup(this, 'ConsumerRSWorkgroup', {\n          name: 'consumer-workgroup',\n          namespace: consumerNamespace\n      });\n      \n      const shareName = 'testshare';\n      \n      consumerWorkgroup.createDatabaseFromShare('consume-datashare', \"db_from_share\", shareName, \"<PRODUCER NAMESPACE>\", \"<PRODUCER ACCOUNT>\")\n    }\n  }\n/// !hide\nconst app = new App()\nnew ExampleRedshiftDataSharingCrossAccountAStack(app, \"ExampleRedshiftDataSharingCrossAccountAStack\")\nnew ExampleRedshiftDataSharingCrossAccountBStack(app, \"ExampleRedshiftDataSharingCrossAccountBStack\")","syntaxKindCounter":{"11":24,"80":63,"108":2,"110":4,"112":1,"154":2,"169":4,"176":2,"183":2,"209":1,"210":4,"211":10,"213":8,"214":4,"233":2,"241":2,"243":11,"244":5,"260":11,"261":11,"263":2,"298":2,"303":6,"304":2},"fqnsFingerprint":"99971b93e252e693c01f0c236d75a2bf3d9901fe7fb057721000047f22377d96"},"10d4857665919ff598b13ab0f07bb1bc149b1dcd80db8c98e38ac8aba073d04f":{"translations":{"python":{"source":"dsf.consumption.AthenaWorkGroup(self, \"AthenaWorkGroupDefault\",\n    name=\"athena-default\",\n    result_location_prefix=\"athena-default-results/\"\n)","version":"2"},"csharp":{"source":"new Consumption.AthenaWorkGroup(this, \"AthenaWorkGroupDefault\", new AthenaWorkgroupProps {\n    Name = \"athena-default\",\n    ResultLocationPrefix = \"athena-default-results/\"\n});","version":"1"},"java":{"source":"AthenaWorkGroup.Builder.create(this, \"AthenaWorkGroupDefault\")\n        .name(\"athena-default\")\n        .resultLocationPrefix(\"athena-default-results/\")\n        .build();","version":"1"},"go":{"source":"consumption.NewAthenaWorkGroup(this, jsii.String(\"AthenaWorkGroupDefault\"), &AthenaWorkgroupProps{\n\tName: jsii.String(\"athena-default\"),\n\tResultLocationPrefix: jsii.String(\"athena-default-results/\"),\n})","version":"1"},"$":{"source":"new dsf.consumption.AthenaWorkGroup(this, 'AthenaWorkGroupDefault', {\n  name: 'athena-default',\n  resultLocationPrefix: 'athena-default-results/'\n})","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.consumption"},"field":{"field":"markdown","line":301}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption","@cdklabs/aws-data-solutions-framework.consumption.AthenaWorkGroup","@cdklabs/aws-data-solutions-framework.consumption.AthenaWorkgroupProps","constructs.Construct"],"fullSource":"import { App, Stack } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\nclass ExampleDefaultAthenaWorkGroupStack extends Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id)\n\n    /// !show\n    new dsf.consumption.AthenaWorkGroup(this, 'AthenaWorkGroupDefault', {\n      name: 'athena-default',\n      resultLocationPrefix: 'athena-default-results/'\n    })\n    /// !hide\n  }\n}\nconst app = new App()\nnew ExampleDefaultAthenaWorkGroupStack(app, 'ExampleDefaultAthenaWorkGroupStack')","syntaxKindCounter":{"11":3,"80":5,"110":1,"210":1,"211":2,"214":1,"244":1,"303":2},"fqnsFingerprint":"e5801d267f157839463204d7fd53435b4c3b17f421baa5fcc3efdc1cba9e7863"},"084f8bb34f7d362bf7faf89e275cb6f856aff6857f42548478a483e482e6b3c5":{"translations":{"python":{"source":"dsf.consumption.AthenaWorkGroup(self, \"AthenaWorkGroupDefault\",\n    name=\"athena-user-bucket\",\n    result_bucket=user_results_bucket,\n    results_encryption_key=user_data_key,\n    result_location_prefix=\"athena-wg-results/\"\n)","version":"2"},"csharp":{"source":"new Consumption.AthenaWorkGroup(this, \"AthenaWorkGroupDefault\", new AthenaWorkgroupProps {\n    Name = \"athena-user-bucket\",\n    ResultBucket = userResultsBucket,\n    ResultsEncryptionKey = userDataKey,\n    ResultLocationPrefix = \"athena-wg-results/\"\n});","version":"1"},"java":{"source":"AthenaWorkGroup.Builder.create(this, \"AthenaWorkGroupDefault\")\n        .name(\"athena-user-bucket\")\n        .resultBucket(userResultsBucket)\n        .resultsEncryptionKey(userDataKey)\n        .resultLocationPrefix(\"athena-wg-results/\")\n        .build();","version":"1"},"go":{"source":"consumption.NewAthenaWorkGroup(this, jsii.String(\"AthenaWorkGroupDefault\"), &AthenaWorkgroupProps{\n\tName: jsii.String(\"athena-user-bucket\"),\n\tResultBucket: userResultsBucket,\n\tResultsEncryptionKey: userDataKey,\n\tResultLocationPrefix: jsii.String(\"athena-wg-results/\"),\n})","version":"1"},"$":{"source":"new dsf.consumption.AthenaWorkGroup(this, 'AthenaWorkGroupDefault', {\n  name: 'athena-user-bucket',\n  resultBucket: userResultsBucket,\n  resultsEncryptionKey: userDataKey,\n  resultLocationPrefix: 'athena-wg-results/'\n})","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.consumption"},"field":{"field":"markdown","line":320}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption","@cdklabs/aws-data-solutions-framework.consumption.AthenaWorkGroup","@cdklabs/aws-data-solutions-framework.consumption.AthenaWorkgroupProps","aws-cdk-lib.aws_kms.IKey","aws-cdk-lib.aws_s3.IBucket","constructs.Construct"],"fullSource":"import { App, Stack } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { Bucket } from 'aws-cdk-lib/aws-s3';\nimport { Key } from 'aws-cdk-lib/aws-kms'\nimport * as dsf from '../../index';\n\nclass ExampleUserBucketAthenaWorkGroupStack extends Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id)\n\n    const userResultsBucket = new Bucket(this, 'UserResultsBUcket')\n    const userDataKey = new Key(this, 'userDataKey')\n\n    /// !show\n    new dsf.consumption.AthenaWorkGroup(this, 'AthenaWorkGroupDefault', {\n      name: 'athena-user-bucket',\n      resultBucket: userResultsBucket,\n      resultsEncryptionKey: userDataKey,\n      resultLocationPrefix: 'athena-wg-results/'\n    })\n    /// !hide\n  }\n}\nconst app = new App()\nnew ExampleUserBucketAthenaWorkGroupStack(app, 'ExampleUserBucketAthenaWorkGroupStack')","syntaxKindCounter":{"11":3,"80":9,"110":1,"210":1,"211":2,"214":1,"244":1,"303":4},"fqnsFingerprint":"71e20ae7e812fec816bb78d244992f80b2b66ff7422113840b39e52449a4d2da"},"7ef8763a4411a0f17b90d03dada18539941819ce68711ecaa31635a2ef222d6d":{"translations":{"python":{"source":"spark_engine_version = dsf.consumption.EngineVersion.PYSPARK_V3\n\ndsf.consumption.AthenaWorkGroup(self, \"AthenaWorkGroupSpark\",\n    name=\"athena-spark\",\n    engine_version=spark_engine_version,\n    result_location_prefix=\"athena-wg-results/\"\n)","version":"2"},"csharp":{"source":"var sparkEngineVersion = Consumption.EngineVersion.PYSPARK_V3;\n\nnew Consumption.AthenaWorkGroup(this, \"AthenaWorkGroupSpark\", new AthenaWorkgroupProps {\n    Name = \"athena-spark\",\n    EngineVersion = sparkEngineVersion,\n    ResultLocationPrefix = \"athena-wg-results/\"\n});","version":"1"},"java":{"source":"EngineVersion sparkEngineVersion = EngineVersion.PYSPARK_V3;\n\nAthenaWorkGroup.Builder.create(this, \"AthenaWorkGroupSpark\")\n        .name(\"athena-spark\")\n        .engineVersion(sparkEngineVersion)\n        .resultLocationPrefix(\"athena-wg-results/\")\n        .build();","version":"1"},"go":{"source":"sparkEngineVersion := consumption.EngineVersion_PYSPARK_V3\n\nconsumption.NewAthenaWorkGroup(this, jsii.String(\"AthenaWorkGroupSpark\"), &AthenaWorkgroupProps{\n\tName: jsii.String(\"athena-spark\"),\n\tEngineVersion: sparkEngineVersion,\n\tResultLocationPrefix: jsii.String(\"athena-wg-results/\"),\n})","version":"1"},"$":{"source":"    const sparkEngineVersion = dsf.consumption.EngineVersion.PYSPARK_V3\n\n    new dsf.consumption.AthenaWorkGroup(this, 'AthenaWorkGroupSpark', {\n      name: 'athena-spark',\n      engineVersion: sparkEngineVersion,\n      resultLocationPrefix: 'athena-wg-results/'\n    })","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.consumption"},"field":{"field":"markdown","line":340}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption","@cdklabs/aws-data-solutions-framework.consumption.AthenaWorkGroup","@cdklabs/aws-data-solutions-framework.consumption.AthenaWorkgroupProps","@cdklabs/aws-data-solutions-framework.consumption.EngineVersion","@cdklabs/aws-data-solutions-framework.consumption.EngineVersion#PYSPARK_V3","constructs.Construct"],"fullSource":"import { App, Stack } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\nclass ExampleSparkAthenaWorkGroupStack extends Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id)\n\n    /// !show\n    const sparkEngineVersion = dsf.consumption.EngineVersion.PYSPARK_V3\n\n    new dsf.consumption.AthenaWorkGroup(this, 'AthenaWorkGroupSpark', {\n      name: 'athena-spark',\n      engineVersion: sparkEngineVersion,\n      resultLocationPrefix: 'athena-wg-results/'\n    })\n    /// !hide\n  }\n}\nconst app = new App()\nnew ExampleSparkAthenaWorkGroupStack(app, 'ExampleSparkAthenaWorkGroupStack')","syntaxKindCounter":{"11":3,"80":12,"110":1,"210":1,"211":5,"214":1,"243":1,"244":1,"260":1,"261":1,"303":3},"fqnsFingerprint":"1667a5bbe699427d6cc40477cf3845725522c6d5789ac910ab43a546e74bfaff"},"07b426caeb640cf4b54a01dd7abec4fb6b6993257d6f78337405562ed6113b29":{"translations":{"python":{"source":"dsf.consumption.AthenaWorkGroup(self, \"AthenaWorkGroupProperties\",\n    name=\"athena-properties\",\n    bytes_scanned_cutoff_per_query=104857600,\n    result_location_prefix=\"athena-results/\",\n    results_encryption_key=user_data_key,\n    results_retention_period=Duration.days(1)\n)","version":"2"},"csharp":{"source":"new Consumption.AthenaWorkGroup(this, \"AthenaWorkGroupProperties\", new AthenaWorkgroupProps {\n    Name = \"athena-properties\",\n    BytesScannedCutoffPerQuery = 104857600,\n    ResultLocationPrefix = \"athena-results/\",\n    ResultsEncryptionKey = userDataKey,\n    ResultsRetentionPeriod = Duration.Days(1)\n});","version":"1"},"java":{"source":"AthenaWorkGroup.Builder.create(this, \"AthenaWorkGroupProperties\")\n        .name(\"athena-properties\")\n        .bytesScannedCutoffPerQuery(104857600)\n        .resultLocationPrefix(\"athena-results/\")\n        .resultsEncryptionKey(userDataKey)\n        .resultsRetentionPeriod(Duration.days(1))\n        .build();","version":"1"},"go":{"source":"consumption.NewAthenaWorkGroup(this, jsii.String(\"AthenaWorkGroupProperties\"), &AthenaWorkgroupProps{\n\tName: jsii.String(\"athena-properties\"),\n\tBytesScannedCutoffPerQuery: jsii.Number(104857600),\n\tResultLocationPrefix: jsii.String(\"athena-results/\"),\n\tResultsEncryptionKey: userDataKey,\n\tResultsRetentionPeriod: awscdk.Duration_Days(jsii.Number(1)),\n})","version":"1"},"$":{"source":"new dsf.consumption.AthenaWorkGroup(this, 'AthenaWorkGroupProperties', {\n  name: 'athena-properties',\n  bytesScannedCutoffPerQuery: 104857600,\n  resultLocationPrefix: 'athena-results/',\n  resultsEncryptionKey: userDataKey,\n  resultsRetentionPeriod: Duration.days(1),\n})","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.consumption"},"field":{"field":"markdown","line":354}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption","@cdklabs/aws-data-solutions-framework.consumption.AthenaWorkGroup","@cdklabs/aws-data-solutions-framework.consumption.AthenaWorkgroupProps","aws-cdk-lib.Duration","aws-cdk-lib.Duration#days","aws-cdk-lib.aws_kms.IKey","constructs.Construct"],"fullSource":"import { App, Duration, Stack } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { Key } from 'aws-cdk-lib/aws-kms';\nimport * as dsf from '../../index';\n\nclass ExamplePropertiesAthenaWorkGroupStack extends Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id)\n\n    const userDataKey = new Key(this, 'userDataKey')\n\n    /// !show\n    new dsf.consumption.AthenaWorkGroup(this, 'AthenaWorkGroupProperties', {\n      name: 'athena-properties',\n      bytesScannedCutoffPerQuery: 104857600,\n      resultLocationPrefix: 'athena-results/',\n      resultsEncryptionKey: userDataKey,\n      resultsRetentionPeriod: Duration.days(1),\n    })\n    /// !hide\n  }\n}\nconst app = new App()\nnew ExamplePropertiesAthenaWorkGroupStack(app, 'ExamplePropertiesAthenaWorkGroupStack')\n","syntaxKindCounter":{"9":2,"11":3,"80":11,"110":1,"210":1,"211":3,"213":1,"214":1,"244":1,"303":5},"fqnsFingerprint":"b68889429c796d4782b6dc40abcc180d5657eb9cfc8a9349e07b37724fd98860"},"1f17a730488d611f7c478636c65a55c7607e48e4cfee96e5b9f17709dc1434c9":{"translations":{"python":{"source":"athena_wg = dsf.consumption.AthenaWorkGroup(self, \"AthenaWorkGroupGrant\",\n    name=\"athena-grant\",\n    result_location_prefix=\"athena-results/\"\n)\n\nathena_wg.grant_run_queries(athena_example_role)","version":"2"},"csharp":{"source":"var athenaWg = new Consumption.AthenaWorkGroup(this, \"AthenaWorkGroupGrant\", new AthenaWorkgroupProps {\n    Name = \"athena-grant\",\n    ResultLocationPrefix = \"athena-results/\"\n});\n\nathenaWg.GrantRunQueries(athenaExampleRole);","version":"1"},"java":{"source":"AthenaWorkGroup athenaWg = AthenaWorkGroup.Builder.create(this, \"AthenaWorkGroupGrant\")\n        .name(\"athena-grant\")\n        .resultLocationPrefix(\"athena-results/\")\n        .build();\n\nathenaWg.grantRunQueries(athenaExampleRole);","version":"1"},"go":{"source":"athenaWg := consumption.NewAthenaWorkGroup(this, jsii.String(\"AthenaWorkGroupGrant\"), &AthenaWorkgroupProps{\n\tName: jsii.String(\"athena-grant\"),\n\tResultLocationPrefix: jsii.String(\"athena-results/\"),\n})\n\nathenaWg.GrantRunQueries(athenaExampleRole)","version":"1"},"$":{"source":"    const athenaWg = new dsf.consumption.AthenaWorkGroup(this, 'AthenaWorkGroupGrant', {\n      name: 'athena-grant',\n      resultLocationPrefix: 'athena-results/',\n    })\n\n    athenaWg.grantRunQueries(athenaExampleRole)","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.consumption"},"field":{"field":"markdown","line":368}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption","@cdklabs/aws-data-solutions-framework.consumption.AthenaWorkGroup","@cdklabs/aws-data-solutions-framework.consumption.AthenaWorkGroup#grantRunQueries","@cdklabs/aws-data-solutions-framework.consumption.AthenaWorkgroupProps","aws-cdk-lib.aws_iam.IPrincipal","constructs.Construct"],"fullSource":"import { App, Stack } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { Role, ServicePrincipal } from 'aws-cdk-lib/aws-iam';\nimport * as dsf from '../../index';\n\nclass ExampleGrantAthenaWorkGroupStack extends Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id)\n\n    const athenaExampleRole = new Role(this, 'AthenaWgExampleRole', {\n      assumedBy: new ServicePrincipal('ec2.amazonaws.com')\n    })\n    /// !show\n    const athenaWg = new dsf.consumption.AthenaWorkGroup(this, 'AthenaWorkGroupGrant', {\n      name: 'athena-grant',\n      resultLocationPrefix: 'athena-results/',\n    })\n\n    athenaWg.grantRunQueries(athenaExampleRole)\n    /// !hide\n  }\n}\nconst app = new App()\nnew ExampleGrantAthenaWorkGroupStack(app, 'ExampleGrantAthenaWorkGroupStack')\n","syntaxKindCounter":{"11":3,"80":9,"110":1,"210":1,"211":3,"213":1,"214":1,"243":1,"244":1,"260":1,"261":1,"303":2},"fqnsFingerprint":"afb810edcfff1b4116602ff71ed9b7cbbdfe0f4751f5d65cc73e12bca41ca48b"},"af2124f3be7339da04fb503cbba920cde7383616a0e5faf2ab950f558d2442e2":{"translations":{"python":{"source":"os_cluster = dsf.consumption.OpenSearchCluster(self, \"MyOpenSearchCluster\",\n    domain_name=\"mycluster\",\n    saml_entity_id=\"<IdpIdentityId>\",\n    saml_metadata_content=\"<IdpMetadataXml>\",\n    saml_master_backend_role=\"<IAMIdentityCenterAdminGroupId>\",\n    deploy_in_vpc=True,\n    removal_policy=cdk.RemovalPolicy.DESTROY\n)\n\nos_cluster.add_role_mapping(\"DashboardOsUser\", \"dashboards_user\", \"<IAMIdentityCenterDashboardUsersGroupId>\")\nos_cluster.add_role_mapping(\"ReadAllOsRole\", \"readall\", \"<IAMIdentityCenterDashboardUsersGroupId>\")","version":"2"},"csharp":{"source":"var osCluster = new Consumption.OpenSearchCluster(this, \"MyOpenSearchCluster\", new OpenSearchClusterProps {\n    DomainName = \"mycluster\",\n    SamlEntityId = \"<IdpIdentityId>\",\n    SamlMetadataContent = \"<IdpMetadataXml>\",\n    SamlMasterBackendRole = \"<IAMIdentityCenterAdminGroupId>\",\n    DeployInVpc = true,\n    RemovalPolicy = RemovalPolicy.DESTROY\n});\n\nosCluster.AddRoleMapping(\"DashboardOsUser\", \"dashboards_user\", \"<IAMIdentityCenterDashboardUsersGroupId>\");\nosCluster.AddRoleMapping(\"ReadAllOsRole\", \"readall\", \"<IAMIdentityCenterDashboardUsersGroupId>\");","version":"1"},"java":{"source":"OpenSearchCluster osCluster = OpenSearchCluster.Builder.create(this, \"MyOpenSearchCluster\")\n        .domainName(\"mycluster\")\n        .samlEntityId(\"<IdpIdentityId>\")\n        .samlMetadataContent(\"<IdpMetadataXml>\")\n        .samlMasterBackendRole(\"<IAMIdentityCenterAdminGroupId>\")\n        .deployInVpc(true)\n        .removalPolicy(RemovalPolicy.DESTROY)\n        .build();\n\nosCluster.addRoleMapping(\"DashboardOsUser\", \"dashboards_user\", \"<IAMIdentityCenterDashboardUsersGroupId>\");\nosCluster.addRoleMapping(\"ReadAllOsRole\", \"readall\", \"<IAMIdentityCenterDashboardUsersGroupId>\");","version":"1"},"go":{"source":"osCluster := consumption.NewOpenSearchCluster(this, jsii.String(\"MyOpenSearchCluster\"), &OpenSearchClusterProps{\n\tDomainName: jsii.String(\"mycluster\"),\n\tSamlEntityId: jsii.String(\"<IdpIdentityId>\"),\n\tSamlMetadataContent: jsii.String(\"<IdpMetadataXml>\"),\n\tSamlMasterBackendRole: jsii.String(\"<IAMIdentityCenterAdminGroupId>\"),\n\tDeployInVpc: jsii.Boolean(true),\n\tRemovalPolicy: cdk.RemovalPolicy_DESTROY,\n})\n\nosCluster.AddRoleMapping(jsii.String(\"DashboardOsUser\"), jsii.String(\"dashboards_user\"), jsii.String(\"<IAMIdentityCenterDashboardUsersGroupId>\"))\nosCluster.AddRoleMapping(jsii.String(\"ReadAllOsRole\"), jsii.String(\"readall\"), jsii.String(\"<IAMIdentityCenterDashboardUsersGroupId>\"))","version":"1"},"$":{"source":"    const osCluster = new dsf.consumption.OpenSearchCluster(this, 'MyOpenSearchCluster',{\n      domainName:\"mycluster\",\n      samlEntityId:'<IdpIdentityId>',\n      samlMetadataContent:'<IdpMetadataXml>',\n      samlMasterBackendRole:'<IAMIdentityCenterAdminGroupId>',\n      deployInVpc:true,\n      removalPolicy:cdk.RemovalPolicy.DESTROY\n    });\n\n\n    osCluster.addRoleMapping('DashboardOsUser', 'dashboards_user','<IAMIdentityCenterDashboardUsersGroupId>');\n    osCluster.addRoleMapping('ReadAllOsRole','readall','<IAMIdentityCenterDashboardUsersGroupId>');","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.consumption"},"field":{"field":"markdown","line":439}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchCluster","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchCluster#addRoleMapping","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchClusterProps","aws-cdk-lib.Environment","aws-cdk-lib.RemovalPolicy","aws-cdk-lib.RemovalPolicy#DESTROY","constructs.Construct"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\n\nclass ExampleDefaultOpenSearchStack extends cdk.Stack {\n  \n  constructor(scope: Construct, id: string , props:cdk.StackProps) {\n    \n    super(scope, id, props);\n    /// !show\n    const osCluster = new dsf.consumption.OpenSearchCluster(this, 'MyOpenSearchCluster',{\n      domainName:\"mycluster\",\n      samlEntityId:'<IdpIdentityId>',\n      samlMetadataContent:'<IdpMetadataXml>',\n      samlMasterBackendRole:'<IAMIdentityCenterAdminGroupId>',\n      deployInVpc:true,\n      removalPolicy:cdk.RemovalPolicy.DESTROY\n    });\n\n    \n    osCluster.addRoleMapping('DashboardOsUser', 'dashboards_user','<IAMIdentityCenterDashboardUsersGroupId>');\n    osCluster.addRoleMapping('ReadAllOsRole','readall','<IAMIdentityCenterDashboardUsersGroupId>');\n    /// !hide\n  }\n  \n  \n}\n\n\nconst app = new cdk.App();\nnew ExampleDefaultOpenSearchStack(app, 'ExampleDefaultDataLakeStorage', { env: {region:'us-east-1'} });","syntaxKindCounter":{"11":11,"80":17,"110":1,"112":1,"210":1,"211":6,"213":2,"214":1,"243":1,"244":2,"260":1,"261":1,"303":6},"fqnsFingerprint":"8d8e6e137b2aafb6f520555aeb398d0d5d8388666cb4d1c83ba97e472612ad03"},"36c379064dc2ea7b2bb972a528072e25001bed195d76ec94871d19c2029fa6cb":{"translations":{"python":{"source":"vpc_vpn = dsf.utils.DataVpc(self, \"VpcWithVpn\",\n    vpc_cidr=\"10.0.0.0/16\",\n    client_vpn_endpoint_props=dsf.utils.DataVpcClientVpnEndpointProps(\n        server_certificate_arn=\"<ACMCertificateArn>\",\n        saml_metadata_document=\"<IdpClientVpnApplicationMetadataXml>\",\n        self_service_portal=False\n    )\n)\nos_cluster = dsf.consumption.OpenSearchCluster(self, \"MyOpenSearchCluster\",\n    domain_name=\"mycluster\",\n    saml_entity_id=\"<IdpIdentityId>\",\n    saml_metadata_content=\"<IdpOpenSearchApplicationMetadataXml>\",\n    saml_master_backend_role=\"<IAMIdentityCenterAdminGroupId>\",\n    deploy_in_vpc=True,\n    vpc=vpc_vpn.vpc\n)\n\nos_cluster.add_role_mapping(\"DashboardOsUser\", \"dashboards_user\", \"<IAMIdentityCenterDashboardUsersGroupId>\")\nos_cluster.add_role_mapping(\"ReadAllOsRole\", \"readall\", \"<IAMIdentityCenterDashboardUsersGroupId>\")","version":"2"},"csharp":{"source":"var vpcVpn = new Utils.DataVpc(this, \"VpcWithVpn\", new DataVpcProps {\n    VpcCidr = \"10.0.0.0/16\",\n    ClientVpnEndpointProps = new DataVpcClientVpnEndpointProps {\n        ServerCertificateArn = \"<ACMCertificateArn>\",\n        SamlMetadataDocument = \"<IdpClientVpnApplicationMetadataXml>\",\n        SelfServicePortal = false\n    }\n});\nvar osCluster = new Consumption.OpenSearchCluster(this, \"MyOpenSearchCluster\", new OpenSearchClusterProps {\n    DomainName = \"mycluster\",\n    SamlEntityId = \"<IdpIdentityId>\",\n    SamlMetadataContent = \"<IdpOpenSearchApplicationMetadataXml>\",\n    SamlMasterBackendRole = \"<IAMIdentityCenterAdminGroupId>\",\n    DeployInVpc = true,\n    Vpc = vpcVpn.Vpc\n});\n\nosCluster.AddRoleMapping(\"DashboardOsUser\", \"dashboards_user\", \"<IAMIdentityCenterDashboardUsersGroupId>\");\nosCluster.AddRoleMapping(\"ReadAllOsRole\", \"readall\", \"<IAMIdentityCenterDashboardUsersGroupId>\");","version":"1"},"java":{"source":"DataVpc vpcVpn = DataVpc.Builder.create(this, \"VpcWithVpn\")\n        .vpcCidr(\"10.0.0.0/16\")\n        .clientVpnEndpointProps(DataVpcClientVpnEndpointProps.builder()\n                .serverCertificateArn(\"<ACMCertificateArn>\")\n                .samlMetadataDocument(\"<IdpClientVpnApplicationMetadataXml>\")\n                .selfServicePortal(false)\n                .build())\n        .build();\nOpenSearchCluster osCluster = OpenSearchCluster.Builder.create(this, \"MyOpenSearchCluster\")\n        .domainName(\"mycluster\")\n        .samlEntityId(\"<IdpIdentityId>\")\n        .samlMetadataContent(\"<IdpOpenSearchApplicationMetadataXml>\")\n        .samlMasterBackendRole(\"<IAMIdentityCenterAdminGroupId>\")\n        .deployInVpc(true)\n        .vpc(vpcVpn.getVpc())\n        .build();\n\nosCluster.addRoleMapping(\"DashboardOsUser\", \"dashboards_user\", \"<IAMIdentityCenterDashboardUsersGroupId>\");\nosCluster.addRoleMapping(\"ReadAllOsRole\", \"readall\", \"<IAMIdentityCenterDashboardUsersGroupId>\");","version":"1"},"go":{"source":"vpcVpn := utils.NewDataVpc(this, jsii.String(\"VpcWithVpn\"), &DataVpcProps{\n\tVpcCidr: jsii.String(\"10.0.0.0/16\"),\n\tClientVpnEndpointProps: &DataVpcClientVpnEndpointProps{\n\t\tServerCertificateArn: jsii.String(\"<ACMCertificateArn>\"),\n\t\tSamlMetadataDocument: jsii.String(\"<IdpClientVpnApplicationMetadataXml>\"),\n\t\tSelfServicePortal: jsii.Boolean(false),\n\t},\n})\nosCluster := consumption.NewOpenSearchCluster(this, jsii.String(\"MyOpenSearchCluster\"), &OpenSearchClusterProps{\n\tDomainName: jsii.String(\"mycluster\"),\n\tSamlEntityId: jsii.String(\"<IdpIdentityId>\"),\n\tSamlMetadataContent: jsii.String(\"<IdpOpenSearchApplicationMetadataXml>\"),\n\tSamlMasterBackendRole: jsii.String(\"<IAMIdentityCenterAdminGroupId>\"),\n\tDeployInVpc: jsii.Boolean(true),\n\tVpc: vpcVpn.Vpc,\n})\n\nosCluster.AddRoleMapping(jsii.String(\"DashboardOsUser\"), jsii.String(\"dashboards_user\"), jsii.String(\"<IAMIdentityCenterDashboardUsersGroupId>\"))\nosCluster.AddRoleMapping(jsii.String(\"ReadAllOsRole\"), jsii.String(\"readall\"), jsii.String(\"<IAMIdentityCenterDashboardUsersGroupId>\"))","version":"1"},"$":{"source":"    const vpcVpn = new dsf.utils.DataVpc(this, 'VpcWithVpn', {\n      vpcCidr:'10.0.0.0/16',\n      clientVpnEndpointProps: {\n          serverCertificateArn:\"<ACMCertificateArn>\",\n          samlMetadataDocument:`<IdpClientVpnApplicationMetadataXml>`,\n          selfServicePortal:false\n      }\n    })\n    const osCluster = new dsf.consumption.OpenSearchCluster(this, 'MyOpenSearchCluster',{\n      domainName:\"mycluster\",\n      samlEntityId:'<IdpIdentityId>',\n      samlMetadataContent:'<IdpOpenSearchApplicationMetadataXml>',\n      samlMasterBackendRole:'<IAMIdentityCenterAdminGroupId>',\n      deployInVpc:true,\n      vpc:vpcVpn.vpc\n    });\n\n    osCluster.addRoleMapping('DashboardOsUser', 'dashboards_user','<IAMIdentityCenterDashboardUsersGroupId>');\n    osCluster.addRoleMapping('ReadAllOsRole','readall','<IAMIdentityCenterDashboardUsersGroupId>');","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.consumption"},"field":{"field":"markdown","line":456}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchCluster","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchCluster#addRoleMapping","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchClusterProps","@cdklabs/aws-data-solutions-framework.utils","@cdklabs/aws-data-solutions-framework.utils.DataVpc","@cdklabs/aws-data-solutions-framework.utils.DataVpc#vpc","@cdklabs/aws-data-solutions-framework.utils.DataVpcClientVpnEndpointProps","@cdklabs/aws-data-solutions-framework.utils.DataVpcProps","aws-cdk-lib.Environment","aws-cdk-lib.aws_ec2.IVpc","constructs.Construct"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\n\nclass ExampleDefaultOpenSearchStack extends cdk.Stack {\n\n  constructor(scope: Construct, id: string , props:cdk.StackProps) {\n\n    super(scope, id, props);\n    /// !show\n    const vpcVpn = new dsf.utils.DataVpc(this, 'VpcWithVpn', {\n      vpcCidr:'10.0.0.0/16',\n      clientVpnEndpointProps: {\n          serverCertificateArn:\"<ACMCertificateArn>\",\n          samlMetadataDocument:`<IdpClientVpnApplicationMetadataXml>`,\n          selfServicePortal:false\n      }\n    })\n    const osCluster = new dsf.consumption.OpenSearchCluster(this, 'MyOpenSearchCluster',{\n      domainName:\"mycluster\",\n      samlEntityId:'<IdpIdentityId>',\n      samlMetadataContent:'<IdpOpenSearchApplicationMetadataXml>',\n      samlMasterBackendRole:'<IAMIdentityCenterAdminGroupId>',\n      deployInVpc:true,\n      vpc:vpcVpn.vpc\n    });\n\n    osCluster.addRoleMapping('DashboardOsUser', 'dashboards_user','<IAMIdentityCenterDashboardUsersGroupId>');\n    osCluster.addRoleMapping('ReadAllOsRole','readall','<IAMIdentityCenterDashboardUsersGroupId>');\n    /// !hide\n    \n  }\n\n\n}\n\n\nconst app = new cdk.App();\nnew ExampleDefaultOpenSearchStack(app, 'ExampleDefaultDataLakeStorage', { env: {region:'us-east-1'} });","syntaxKindCounter":{"11":14,"15":1,"80":25,"97":1,"110":2,"112":1,"210":3,"211":7,"213":2,"214":2,"243":2,"244":2,"260":2,"261":2,"303":11},"fqnsFingerprint":"f4ac0a74dc82fb4c8bb6d69aa7935215318e289e58931b45ec742d21a0a50599"},"75d1066f17f26a4a404115ff254ab838cb4f540d9620dfb4dee61ad01307a62d":{"translations":{"python":{"source":"domain_endpoint = \"search-XXXXXX.XXXXXX.es.amazonaws.com\"\napi_role = Role.from_role_name(self, \"ApiRole\", \"<IAMRoleWithOpenSearchPermissions>\")\nos_api = dsf.consumption.OpenSearchApi(self, \"MyOpenSearchApi\",\n    iam_handler_role=api_role,\n    open_search_endpoint=domain_endpoint,\n    open_search_cluster_type=dsf.consumption.OpenSearchClusterType.PROVISIONED,\n    removal_policy=cdk.RemovalPolicy.DESTROY\n)","version":"2"},"csharp":{"source":"var domainEndpoint = \"search-XXXXXX.XXXXXX.es.amazonaws.com\";\nvar apiRole = Role.FromRoleName(this, \"ApiRole\", \"<IAMRoleWithOpenSearchPermissions>\");\nvar osApi = new Consumption.OpenSearchApi(this, \"MyOpenSearchApi\", new OpenSearchApiProps {\n    IamHandlerRole = apiRole,\n    OpenSearchEndpoint = domainEndpoint,\n    OpenSearchClusterType = Consumption.OpenSearchClusterType.PROVISIONED,\n    RemovalPolicy = RemovalPolicy.DESTROY\n});","version":"1"},"java":{"source":"String domainEndpoint = \"search-XXXXXX.XXXXXX.es.amazonaws.com\";\nIRole apiRole = Role.fromRoleName(this, \"ApiRole\", \"<IAMRoleWithOpenSearchPermissions>\");\nOpenSearchApi osApi = OpenSearchApi.Builder.create(this, \"MyOpenSearchApi\")\n        .iamHandlerRole(apiRole)\n        .openSearchEndpoint(domainEndpoint)\n        .openSearchClusterType(OpenSearchClusterType.PROVISIONED)\n        .removalPolicy(RemovalPolicy.DESTROY)\n        .build();","version":"1"},"go":{"source":"domainEndpoint := \"search-XXXXXX.XXXXXX.es.amazonaws.com\"\napiRole := awscdk.Role_FromRoleName(this, jsii.String(\"ApiRole\"), jsii.String(\"<IAMRoleWithOpenSearchPermissions>\"))\nosApi := consumption.NewOpenSearchApi(this, jsii.String(\"MyOpenSearchApi\"), &OpenSearchApiProps{\n\tIamHandlerRole: apiRole,\n\tOpenSearchEndpoint: domainEndpoint,\n\tOpenSearchClusterType: consumption.OpenSearchClusterType_PROVISIONED,\n\tRemovalPolicy: cdk.RemovalPolicy_DESTROY,\n})","version":"1"},"$":{"source":"const domainEndpoint='search-XXXXXX.XXXXXX.es.amazonaws.com';\nconst apiRole = Role.fromRoleName(this, 'ApiRole', '<IAMRoleWithOpenSearchPermissions>');\nconst osApi = new dsf.consumption.OpenSearchApi(this, 'MyOpenSearchApi',{\n  iamHandlerRole:apiRole,\n  openSearchEndpoint:domainEndpoint,\n  openSearchClusterType:dsf.consumption.OpenSearchClusterType.PROVISIONED,\n  removalPolicy:cdk.RemovalPolicy.DESTROY\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.consumption"},"field":{"field":"markdown","line":488}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchApi","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchApiProps","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchClusterType","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchClusterType#PROVISIONED","aws-cdk-lib.Environment","aws-cdk-lib.RemovalPolicy","aws-cdk-lib.RemovalPolicy#DESTROY","aws-cdk-lib.aws_iam.IRole","aws-cdk-lib.aws_iam.Role#fromRoleName","constructs.Construct"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\nimport { Role } from 'aws-cdk-lib/aws-iam';\n\n\nclass ExampleOpenSearchApiStack extends cdk.Stack {\n\n  constructor(scope: Construct, id: string , props:cdk.StackProps) {\n\n    super(scope, id, props);\n    this.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n    /// !show\n    const domainEndpoint='search-XXXXXX.XXXXXX.es.amazonaws.com';\n    const apiRole = Role.fromRoleName(this, 'ApiRole', '<IAMRoleWithOpenSearchPermissions>');\n    const osApi = new dsf.consumption.OpenSearchApi(this, 'MyOpenSearchApi',{\n      iamHandlerRole:apiRole,\n      openSearchEndpoint:domainEndpoint,\n      openSearchClusterType:dsf.consumption.OpenSearchClusterType.PROVISIONED,\n      removalPolicy:cdk.RemovalPolicy.DESTROY\n    });\n    /// !hide\n    //Add another admin\n    osApi.addRoleMapping('AnotherAdmin', 'all_access','sometestId');\n\n    //create index template\n    const indexTemplateCr = osApi.callOpenSearchApi('CreateIndexTemplate','_index_template/movies',\n      {\n        \"index_patterns\": [\n          \"movies-*\"\n        ],\n        \"template\": {\n          \"settings\": {\n            \"index\": {\n              \"number_of_shards\": 1,\n              \"number_of_replicas\": 0\n            }\n          },\n          \"mappings\": {\n            \"properties\": {\n              \"title\": {\n                \"type\": \"text\"\n              },\n              \"year\": {\n                \"type\": \"integer\"\n              }\n            }\n          }\n        }\n      });\n      const metadata='{ \"index\" : { \"_index\" : \"movies-02\"}}';\n      const bulk=`${metadata}\n      {\"title\": \"Barbie\", \"year\": 2023}\n      ${metadata}\n      {\"title\": \"Openheimer\", \"year\": 2023}`;\n      \n      // bulk ingestion using POST\n      const bulkCr = osApi.callOpenSearchApi('AddBulk','_bulk',bulk+'\\n\\n','POST');\n      //dependency to enforce sequential API calls\n      bulkCr.node.addDependency(indexTemplateCr);\n  \n      const add1Cr = osApi.callOpenSearchApi('AddData1', 'movies-01/_doc/1111',{\"title\": \"Rush\", \"year\": 2013}, 'PUT');\n      add1Cr.node.addDependency(indexTemplateCr);\n      const add2Cr = osApi.callOpenSearchApi('AddData3', 'movies-01/_doc/2222',{\"title\": \"Toy Story\", \"year\": 2014}, 'PUT');\n      add2Cr.node.addDependency(indexTemplateCr);\n      const add3Cr = osApi.callOpenSearchApi('AddData4', 'movies-01/_doc',{\"title\": \"The Little Mermaid\", \"year\": 2015}, 'POST');\n      add3Cr.node.addDependency(indexTemplateCr);\n    \n\n  }\n}\n\nconst app = new cdk.App();\nnew ExampleOpenSearchApiStack(app, 'ExampleOpenSearchApiStandaloneStack', { env: {region:'us-east-1'} });","syntaxKindCounter":{"11":4,"80":21,"110":2,"210":1,"211":8,"213":1,"214":1,"243":3,"260":3,"261":3,"303":4},"fqnsFingerprint":"bb4b99090dc4f3c2f5a81047dd5eabf6aaf410af0500d4ba6f44292eef8b706c"},"ebbf75b021baa8d9c776baa68295f2521e080c4bce896f4f1644ed0db9133e41":{"translations":{"python":{"source":"# create index template\nindex_template_cr = os_api.call_open_search_api(\"CreateIndexTemplate\", \"_index_template/movies\", {\n    \"index_patterns\": [\"movies-*\"\n    ],\n    \"template\": {\n        \"settings\": {\n            \"index\": {\n                \"number_of_shards\": 1,\n                \"number_of_replicas\": 0\n            }\n        },\n        \"mappings\": {\n            \"properties\": {\n                \"title\": {\n                    \"type\": \"text\"\n                },\n                \"year\": {\n                    \"type\": \"integer\"\n                }\n            }\n        }\n    }\n})\nmetadata = \"{ \\\"index\\\" : { \\\"_index\\\" : \\\"movies-02\\\"}}\"\nbulk = f\"\"\"{metadata}\n      {\\\"title\\\": \\\"Barbie\\\", \\\"year\\\": 2023}\n      {metadata}\n      {\\\"title\\\": \\\"Openheimer\\\", \\\"year\\\": 2023}\"\"\"\n\n# bulk ingestion using POST\nbulk_cr = os_api.call_open_search_api(\"AddBulk\", \"_bulk\", bulk + \"\\n\\n\", \"POST\")\n# dependency to enforce sequential API calls\nbulk_cr.node.add_dependency(index_template_cr)\n\nadd1_cr = os_api.call_open_search_api(\"AddData1\", \"movies-01/_doc/1111\", {\"title\": \"Rush\", \"year\": 2013}, \"PUT\")\nadd1_cr.node.add_dependency(index_template_cr)\nadd2_cr = os_api.call_open_search_api(\"AddData3\", \"movies-01/_doc/2222\", {\"title\": \"Toy Story\", \"year\": 2014}, \"PUT\")\nadd2_cr.node.add_dependency(index_template_cr)\nadd3_cr = os_api.call_open_search_api(\"AddData4\", \"movies-01/_doc\", {\"title\": \"The Little Mermaid\", \"year\": 2015}, \"POST\")\nadd3_cr.node.add_dependency(index_template_cr)","version":"2"},"csharp":{"source":"//create index template\nvar indexTemplateCr = osApi.CallOpenSearchApi(\"CreateIndexTemplate\", \"_index_template/movies\", new Dictionary<string, object> {\n    { \"index_patterns\", new [] { \"movies-*\" } },\n    { \"template\", new Struct {\n        Settings = new Struct {\n            Index = new Struct {\n                Number_of_shards = 1,\n                Number_of_replicas = 0\n            }\n        },\n        Mappings = new Struct {\n            Properties = new Struct {\n                Title = new Struct {\n                    Type = \"text\"\n                },\n                Year = new Struct {\n                    Type = \"integer\"\n                }\n            }\n        }\n    } }\n});\nvar metadata = \"{ \\\"index\\\" : { \\\"_index\\\" : \\\"movies-02\\\"}}\";\nvar bulk = $@\"{metadata}\n      {\"\"title\"\": \"\"Barbie\"\", \"\"year\"\": 2023}\n      {metadata}\n      {\"\"title\"\": \"\"Openheimer\"\", \"\"year\"\": 2023}\";\n\n// bulk ingestion using POST\nvar bulkCr = osApi.CallOpenSearchApi(\"AddBulk\", \"_bulk\", bulk + @\"\n\n\", \"POST\");\n//dependency to enforce sequential API calls\nbulkCr.Node.AddDependency(indexTemplateCr);\n\nvar add1Cr = osApi.CallOpenSearchApi(\"AddData1\", \"movies-01/_doc/1111\", new Dictionary<string, object> { { \"title\", \"Rush\" }, { \"year\", 2013 } }, \"PUT\");\nadd1Cr.Node.AddDependency(indexTemplateCr);\nvar add2Cr = osApi.CallOpenSearchApi(\"AddData3\", \"movies-01/_doc/2222\", new Dictionary<string, object> { { \"title\", \"Toy Story\" }, { \"year\", 2014 } }, \"PUT\");\nadd2Cr.Node.AddDependency(indexTemplateCr);\nvar add3Cr = osApi.CallOpenSearchApi(\"AddData4\", \"movies-01/_doc\", new Dictionary<string, object> { { \"title\", \"The Little Mermaid\" }, { \"year\", 2015 } }, \"POST\");\nadd3Cr.Node.AddDependency(indexTemplateCr);","version":"1"},"java":{"source":"//create index template\nCustomResource indexTemplateCr = osApi.callOpenSearchApi(\"CreateIndexTemplate\", \"_index_template/movies\", Map.of(\n        \"index_patterns\", List.of(\"movies-*\"),\n        \"template\", Map.of(\n                \"settings\", Map.of(\n                        \"index\", Map.of(\n                                \"number_of_shards\", 1,\n                                \"number_of_replicas\", 0)),\n                \"mappings\", Map.of(\n                        \"properties\", Map.of(\n                                \"title\", Map.of(\n                                        \"type\", \"text\"),\n                                \"year\", Map.of(\n                                        \"type\", \"integer\"))))));\nString metadata = \"{ \\\"index\\\" : { \\\"_index\\\" : \\\"movies-02\\\"}}\";\nString bulk = String.format(\"%s%n      {\\\"title\\\": \\\"Barbie\\\", \\\"year\\\": 2023}%n      %s%n      {\\\"title\\\": \\\"Openheimer\\\", \\\"year\\\": 2023}\", metadata, metadata);\n\n// bulk ingestion using POST\nCustomResource bulkCr = osApi.callOpenSearchApi(\"AddBulk\", \"_bulk\", bulk + \"\\n\\n\", \"POST\");\n//dependency to enforce sequential API calls\nbulkCr.node.addDependency(indexTemplateCr);\n\nCustomResource add1Cr = osApi.callOpenSearchApi(\"AddData1\", \"movies-01/_doc/1111\", Map.of(\"title\", \"Rush\", \"year\", 2013), \"PUT\");\nadd1Cr.node.addDependency(indexTemplateCr);\nCustomResource add2Cr = osApi.callOpenSearchApi(\"AddData3\", \"movies-01/_doc/2222\", Map.of(\"title\", \"Toy Story\", \"year\", 2014), \"PUT\");\nadd2Cr.node.addDependency(indexTemplateCr);\nCustomResource add3Cr = osApi.callOpenSearchApi(\"AddData4\", \"movies-01/_doc\", Map.of(\"title\", \"The Little Mermaid\", \"year\", 2015), \"POST\");\nadd3Cr.node.addDependency(indexTemplateCr);","version":"1"},"go":{"source":"//create index template\nindexTemplateCr := osApi.CallOpenSearchApi(jsii.String(\"CreateIndexTemplate\"), jsii.String(\"_index_template/movies\"), map[string]interface{}{\n\t\"index_patterns\": []*string{\n\t\tjsii.String(\"movies-*\"),\n\t},\n\t\"template\": map[string]map[string]map[string]*f64{\n\t\t\"settings\": map[string]map[string]*f64{\n\t\t\t\"index\": map[string]*f64{\n\t\t\t\t\"number_of_shards\": jsii.Number(1),\n\t\t\t\t\"number_of_replicas\": jsii.Number(0),\n\t\t\t},\n\t\t},\n\t\t\"mappings\": map[string]map[string]map[string]*string{\n\t\t\t\"properties\": map[string]map[string]*string{\n\t\t\t\t\"title\": map[string]*string{\n\t\t\t\t\t\"type\": jsii.String(\"text\"),\n\t\t\t\t},\n\t\t\t\t\"year\": map[string]*string{\n\t\t\t\t\t\"type\": jsii.String(\"integer\"),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n})\nmetadata := \"{ \\\"index\\\" : { \\\"_index\\\" : \\\"movies-02\\\"}}\"\nbulk := fmt.Sprintf(\"%v\\n      {\\\"title\\\": \\\"Barbie\\\", \\\"year\\\": 2023}\\n      %v\\n      {\\\"title\\\": \\\"Openheimer\\\", \\\"year\\\": 2023}\", metadata, metadata)\n\n// bulk ingestion using POST\nbulkCr := osApi.CallOpenSearchApi(jsii.String(\"AddBulk\"), jsii.String(\"_bulk\"), bulk + \"\\n\\n\", jsii.String(\"POST\"))\n//dependency to enforce sequential API calls\nbulkCr.Node.AddDependency(indexTemplateCr)\n\nadd1Cr := osApi.CallOpenSearchApi(jsii.String(\"AddData1\"), jsii.String(\"movies-01/_doc/1111\"), map[string]interface{}{\n\t\"title\": jsii.String(\"Rush\"),\n\t\"year\": jsii.Number(2013),\n}, jsii.String(\"PUT\"))\nadd1Cr.Node.AddDependency(indexTemplateCr)\nadd2Cr := osApi.CallOpenSearchApi(jsii.String(\"AddData3\"), jsii.String(\"movies-01/_doc/2222\"), map[string]interface{}{\n\t\"title\": jsii.String(\"Toy Story\"),\n\t\"year\": jsii.Number(2014),\n}, jsii.String(\"PUT\"))\nadd2Cr.Node.AddDependency(indexTemplateCr)\nadd3Cr := osApi.CallOpenSearchApi(jsii.String(\"AddData4\"), jsii.String(\"movies-01/_doc\"), map[string]interface{}{\n\t\"title\": jsii.String(\"The Little Mermaid\"),\n\t\"year\": jsii.Number(2015),\n}, jsii.String(\"POST\"))\nadd3Cr.Node.AddDependency(indexTemplateCr)","version":"1"},"$":{"source":"    //create index template\n    const indexTemplateCr = osApi.callOpenSearchApi('CreateIndexTemplate','_index_template/movies',\n      {\n        \"index_patterns\": [\n          \"movies-*\"\n        ],\n        \"template\": {\n          \"settings\": {\n            \"index\": {\n              \"number_of_shards\": 1,\n              \"number_of_replicas\": 0\n            }\n          },\n          \"mappings\": {\n            \"properties\": {\n              \"title\": {\n                \"type\": \"text\"\n              },\n              \"year\": {\n                \"type\": \"integer\"\n              }\n            }\n          }\n        }\n      });\n      const metadata='{ \"index\" : { \"_index\" : \"movies-02\"}}';\n      const bulk=`${metadata}\n      {\"title\": \"Barbie\", \"year\": 2023}\n      ${metadata}\n      {\"title\": \"Openheimer\", \"year\": 2023}`;\n\n      // bulk ingestion using POST\n      const bulkCr = osApi.callOpenSearchApi('AddBulk','_bulk',bulk+'\\n\\n','POST');\n      //dependency to enforce sequential API calls\n      bulkCr.node.addDependency(indexTemplateCr);\n\n      const add1Cr = osApi.callOpenSearchApi('AddData1', 'movies-01/_doc/1111',{\"title\": \"Rush\", \"year\": 2013}, 'PUT');\n      add1Cr.node.addDependency(indexTemplateCr);\n      const add2Cr = osApi.callOpenSearchApi('AddData3', 'movies-01/_doc/2222',{\"title\": \"Toy Story\", \"year\": 2014}, 'PUT');\n      add2Cr.node.addDependency(indexTemplateCr);\n      const add3Cr = osApi.callOpenSearchApi('AddData4', 'movies-01/_doc',{\"title\": \"The Little Mermaid\", \"year\": 2015}, 'POST');\n      add3Cr.node.addDependency(indexTemplateCr);","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.consumption"},"field":{"field":"markdown","line":509}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption.OpenSearchApi#callOpenSearchApi","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchClusterType","aws-cdk-lib.CustomResource","aws-cdk-lib.Environment","aws-cdk-lib.RemovalPolicy","aws-cdk-lib.aws_iam.IRole","constructs.Construct#node","constructs.IDependable","constructs.Node#addDependency"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\nimport { Role } from 'aws-cdk-lib/aws-iam';\n\n\nclass ExampleOpenSearchApiStackMethodCall extends cdk.Stack {\n\n  constructor(scope: Construct, id: string , props:cdk.StackProps) {\n\n    super(scope, id, props);\n    this.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n    \n    const domainEndpoint='search-XXXXXX.XXXXXX.es.amazonaws.com';\n    const apiRole = Role.fromRoleName(this, 'ApiRole', '<IAMRoleWithOpenSearchPermissions>');\n    const osApi = new dsf.consumption.OpenSearchApi(this, 'MyOpenSearchApi',{\n      iamHandlerRole:apiRole,\n      openSearchEndpoint:domainEndpoint,\n      openSearchClusterType:dsf.consumption.OpenSearchClusterType.PROVISIONED,\n      removalPolicy:cdk.RemovalPolicy.DESTROY\n    });\n    //Add another admin\n    osApi.addRoleMapping('AnotherAdmin', 'all_access','sometestId');\n\n    /// !show\n    //create index template\n    const indexTemplateCr = osApi.callOpenSearchApi('CreateIndexTemplate','_index_template/movies',\n      {\n        \"index_patterns\": [\n          \"movies-*\"\n        ],\n        \"template\": {\n          \"settings\": {\n            \"index\": {\n              \"number_of_shards\": 1,\n              \"number_of_replicas\": 0\n            }\n          },\n          \"mappings\": {\n            \"properties\": {\n              \"title\": {\n                \"type\": \"text\"\n              },\n              \"year\": {\n                \"type\": \"integer\"\n              }\n            }\n          }\n        }\n      });\n      const metadata='{ \"index\" : { \"_index\" : \"movies-02\"}}';\n      const bulk=`${metadata}\n      {\"title\": \"Barbie\", \"year\": 2023}\n      ${metadata}\n      {\"title\": \"Openheimer\", \"year\": 2023}`;\n      \n      // bulk ingestion using POST\n      const bulkCr = osApi.callOpenSearchApi('AddBulk','_bulk',bulk+'\\n\\n','POST');\n      //dependency to enforce sequential API calls\n      bulkCr.node.addDependency(indexTemplateCr);\n  \n      const add1Cr = osApi.callOpenSearchApi('AddData1', 'movies-01/_doc/1111',{\"title\": \"Rush\", \"year\": 2013}, 'PUT');\n      add1Cr.node.addDependency(indexTemplateCr);\n      const add2Cr = osApi.callOpenSearchApi('AddData3', 'movies-01/_doc/2222',{\"title\": \"Toy Story\", \"year\": 2014}, 'PUT');\n      add2Cr.node.addDependency(indexTemplateCr);\n      const add3Cr = osApi.callOpenSearchApi('AddData4', 'movies-01/_doc',{\"title\": \"The Little Mermaid\", \"year\": 2015}, 'POST');\n      add3Cr.node.addDependency(indexTemplateCr);\n    /// !hide\n\n  }\n}\n\nconst app = new cdk.App();\nnew ExampleOpenSearchApiStackMethodCall(app, 'ExampleOpenSearchApiStandaloneStack', { env: {region:'us-east-1'} });","syntaxKindCounter":{"9":5,"11":40,"16":1,"17":1,"18":1,"40":1,"80":36,"209":1,"210":11,"211":13,"213":9,"226":1,"228":1,"239":2,"243":7,"244":4,"260":7,"261":7,"303":18},"fqnsFingerprint":"d38c9113729652ff161db7c0b08fa2dc421fce5e9cea4c0281136c9fa195cea1"},"c80949ff3dafc5d7df3ceffe5f2412c3e86318343bf3c4517dcaef30e0497bad":{"translations":{"python":{"source":"domain_endpoint = \"search-XXXXXX.XXXXXX.es.amazonaws.com\"\napi_role = Role.from_role_name(self, \"ApiRole\", \"<IAMRoleWithOpenSearchPermissions>\")\nos_api = dsf.consumption.OpenSearchApi(self, \"MyOpenSearchApi\",\n    iam_handler_role=api_role,\n    open_search_endpoint=domain_endpoint,\n    open_search_cluster_type=dsf.consumption.OpenSearchClusterType.PROVISIONED,\n    removal_policy=cdk.RemovalPolicy.DESTROY\n)\n\nfirst_call = os_api.add_role_mapping(\"AnotherAdmin\", \"all_access\", \"<IAMRole>\", True)\nsecond_call = os_api.add_role_mapping(\"AnotherAdmin\", \"all_access\", \"<IAMRole>\", True)\n\n# dependency to enforce sequential API calls\nsecond_call.node.add_dependency(first_call)","version":"2"},"csharp":{"source":"var domainEndpoint = \"search-XXXXXX.XXXXXX.es.amazonaws.com\";\nvar apiRole = Role.FromRoleName(this, \"ApiRole\", \"<IAMRoleWithOpenSearchPermissions>\");\nvar osApi = new Consumption.OpenSearchApi(this, \"MyOpenSearchApi\", new OpenSearchApiProps {\n    IamHandlerRole = apiRole,\n    OpenSearchEndpoint = domainEndpoint,\n    OpenSearchClusterType = Consumption.OpenSearchClusterType.PROVISIONED,\n    RemovalPolicy = RemovalPolicy.DESTROY\n});\n\nvar firstCall = osApi.AddRoleMapping(\"AnotherAdmin\", \"all_access\", \"<IAMRole>\", true);\nvar secondCall = osApi.AddRoleMapping(\"AnotherAdmin\", \"all_access\", \"<IAMRole>\", true);\n\n//dependency to enforce sequential API calls\nsecondCall.Node.AddDependency(firstCall);","version":"1"},"java":{"source":"String domainEndpoint = \"search-XXXXXX.XXXXXX.es.amazonaws.com\";\nIRole apiRole = Role.fromRoleName(this, \"ApiRole\", \"<IAMRoleWithOpenSearchPermissions>\");\nOpenSearchApi osApi = OpenSearchApi.Builder.create(this, \"MyOpenSearchApi\")\n        .iamHandlerRole(apiRole)\n        .openSearchEndpoint(domainEndpoint)\n        .openSearchClusterType(OpenSearchClusterType.PROVISIONED)\n        .removalPolicy(RemovalPolicy.DESTROY)\n        .build();\n\nCustomResource firstCall = osApi.addRoleMapping(\"AnotherAdmin\", \"all_access\", \"<IAMRole>\", true);\nCustomResource secondCall = osApi.addRoleMapping(\"AnotherAdmin\", \"all_access\", \"<IAMRole>\", true);\n\n//dependency to enforce sequential API calls\nsecondCall.node.addDependency(firstCall);","version":"1"},"go":{"source":"domainEndpoint := \"search-XXXXXX.XXXXXX.es.amazonaws.com\"\napiRole := awscdk.Role_FromRoleName(this, jsii.String(\"ApiRole\"), jsii.String(\"<IAMRoleWithOpenSearchPermissions>\"))\nosApi := consumption.NewOpenSearchApi(this, jsii.String(\"MyOpenSearchApi\"), &OpenSearchApiProps{\n\tIamHandlerRole: apiRole,\n\tOpenSearchEndpoint: domainEndpoint,\n\tOpenSearchClusterType: consumption.OpenSearchClusterType_PROVISIONED,\n\tRemovalPolicy: cdk.RemovalPolicy_DESTROY,\n})\n\nfirstCall := osApi.AddRoleMapping(jsii.String(\"AnotherAdmin\"), jsii.String(\"all_access\"), jsii.String(\"<IAMRole>\"), jsii.Boolean(true))\nsecondCall := osApi.AddRoleMapping(jsii.String(\"AnotherAdmin\"), jsii.String(\"all_access\"), jsii.String(\"<IAMRole>\"), jsii.Boolean(true))\n\n//dependency to enforce sequential API calls\nsecondCall.Node.AddDependency(firstCall)","version":"1"},"$":{"source":"    const domainEndpoint='search-XXXXXX.XXXXXX.es.amazonaws.com';\n    const apiRole = Role.fromRoleName(this, 'ApiRole', '<IAMRoleWithOpenSearchPermissions>');\n    const osApi = new dsf.consumption.OpenSearchApi(this, 'MyOpenSearchApi',{\n      iamHandlerRole:apiRole,\n      openSearchEndpoint:domainEndpoint,\n      openSearchClusterType:dsf.consumption.OpenSearchClusterType.PROVISIONED,\n      removalPolicy:cdk.RemovalPolicy.DESTROY\n    });\n\n    const firstCall = osApi.addRoleMapping('AnotherAdmin', 'all_access','<IAMRole>', true);\n    const secondCall = osApi.addRoleMapping('AnotherAdmin', 'all_access','<IAMRole>', true);\n\n    //dependency to enforce sequential API calls\n    secondCall.node.addDependency(firstCall);","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.consumption"},"field":{"field":"markdown","line":562}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchApi","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchApi#addRoleMapping","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchApiProps","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchClusterType","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchClusterType#PROVISIONED","aws-cdk-lib.CustomResource","aws-cdk-lib.Environment","aws-cdk-lib.RemovalPolicy","aws-cdk-lib.RemovalPolicy#DESTROY","aws-cdk-lib.aws_iam.IRole","aws-cdk-lib.aws_iam.Role#fromRoleName","constructs.Construct","constructs.Construct#node","constructs.IDependable","constructs.Node#addDependency"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\nimport { Role } from 'aws-cdk-lib/aws-iam';\n\n\nclass ExampleOpenSearchApiStackDeps extends cdk.Stack {\n\n  constructor(scope: Construct, id: string , props:cdk.StackProps) {\n\n    super(scope, id, props);\n    this.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n    /// !show\n    const domainEndpoint='search-XXXXXX.XXXXXX.es.amazonaws.com';\n    const apiRole = Role.fromRoleName(this, 'ApiRole', '<IAMRoleWithOpenSearchPermissions>');\n    const osApi = new dsf.consumption.OpenSearchApi(this, 'MyOpenSearchApi',{\n      iamHandlerRole:apiRole,\n      openSearchEndpoint:domainEndpoint,\n      openSearchClusterType:dsf.consumption.OpenSearchClusterType.PROVISIONED,\n      removalPolicy:cdk.RemovalPolicy.DESTROY\n    });\n\n    const firstCall = osApi.addRoleMapping('AnotherAdmin', 'all_access','<IAMRole>', true);\n    const secondCall = osApi.addRoleMapping('AnotherAdmin', 'all_access','<IAMRole>', true);\n    \n    //dependency to enforce sequential API calls\n    secondCall.node.addDependency(firstCall);\n    /// !hide\n\n  }\n}\n\nconst app = new cdk.App();\nnew ExampleOpenSearchApiStackDeps(app, 'ExampleOpenSearchApiStandaloneDepsStack', { env: {region:'us-east-1'} });","syntaxKindCounter":{"11":10,"80":31,"110":2,"112":2,"210":1,"211":12,"213":4,"214":1,"243":5,"244":1,"260":5,"261":5,"303":4},"fqnsFingerprint":"a1266d4b4518b6053a0c3193391e3e30dbc9d03ceda0943c0f17351cb22fa35f"},"3ba5f681ced0ee9d411134274c176ddac7f235fb783112d722d297d2b573fb57":{"translations":{"python":{"source":"class ExampleDefaultDataCatalogDatabaseStack(cdk.Stack):\n    def __init__(self, scope, id):\n        super().__init__(scope, id)\n        bucket = Bucket(self, \"DataCatalogBucket\")\n\n        dsf.governance.DataCatalogDatabase(self, \"DataCatalogDatabase\",\n            location_bucket=bucket,\n            location_prefix=\"/databasePath\",\n            name=\"example-db\"\n        )","version":"2"},"csharp":{"source":"class ExampleDefaultDataCatalogDatabaseStack : Stack\n{\n    public ExampleDefaultDataCatalogDatabaseStack(Construct scope, string id) : base(scope, id)\n    {\n        var bucket = new Bucket(this, \"DataCatalogBucket\");\n\n        new Governance.DataCatalogDatabase(this, \"DataCatalogDatabase\", new DataCatalogDatabaseProps {\n            LocationBucket = bucket,\n            LocationPrefix = \"/databasePath\",\n            Name = \"example-db\"\n        });\n    }\n}","version":"1"},"java":{"source":"public class ExampleDefaultDataCatalogDatabaseStack extends Stack {\n    public ExampleDefaultDataCatalogDatabaseStack(Construct scope, String id) {\n        super(scope, id);\n        Bucket bucket = new Bucket(this, \"DataCatalogBucket\");\n\n        DataCatalogDatabase.Builder.create(this, \"DataCatalogDatabase\")\n                .locationBucket(bucket)\n                .locationPrefix(\"/databasePath\")\n                .name(\"example-db\")\n                .build();\n    }\n}","version":"1"},"go":{"source":"type exampleDefaultDataCatalogDatabaseStack struct {\n\tstack\n}\n\nfunc newExampleDefaultDataCatalogDatabaseStack(scope construct, id *string) *exampleDefaultDataCatalogDatabaseStack {\n\tthis := &exampleDefaultDataCatalogDatabaseStack{}\n\tcdk.NewStack_Override(this, scope, id)\n\tbucket := awscdk.NewBucket(this, jsii.String(\"DataCatalogBucket\"))\n\n\tgovernance.NewDataCatalogDatabase(this, jsii.String(\"DataCatalogDatabase\"), &DataCatalogDatabaseProps{\n\t\tLocationBucket: bucket,\n\t\tLocationPrefix: jsii.String(\"/databasePath\"),\n\t\tName: jsii.String(\"example-db\"),\n\t})\n\treturn this\n}","version":"1"},"$":{"source":"class ExampleDefaultDataCatalogDatabaseStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    const bucket = new Bucket(this, 'DataCatalogBucket');\n\n    new dsf.governance.DataCatalogDatabase(this, 'DataCatalogDatabase', {\n      locationBucket: bucket,\n      locationPrefix: '/databasePath',\n      name: 'example-db',\n    });\n  }\n}","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.governance"},"field":{"field":"markdown","line":22}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataCatalogDatabase","@cdklabs/aws-data-solutions-framework.governance.DataCatalogDatabaseProps","aws-cdk-lib.Stack","aws-cdk-lib.aws_s3.Bucket","aws-cdk-lib.aws_s3.IBucket","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Bucket } from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\n/// !show\nclass ExampleDefaultDataCatalogDatabaseStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    const bucket = new Bucket(this, 'DataCatalogBucket');\n    \n    new dsf.governance.DataCatalogDatabase(this, 'DataCatalogDatabase', {\n      locationBucket: bucket,\n      locationPrefix: '/databasePath',\n      name: 'example-db',\n    });\n  }\n}\n/// !hide\n\nconst app = new cdk.App();\nnew ExampleDefaultDataCatalogDatabaseStack(app, 'ExampleDefaultDataCatalogDatabaseStack');","syntaxKindCounter":{"11":4,"80":17,"108":1,"110":2,"154":1,"169":2,"176":1,"183":1,"210":1,"211":3,"213":1,"214":2,"233":1,"241":1,"243":1,"244":2,"260":1,"261":1,"263":1,"298":1,"303":3},"fqnsFingerprint":"eb93d6134b615f54946940c954a4a3244f506a942a0e8cd0b36301ee406dfe17"},"0f22cec3862aa479d3cd509c24144310dea577c1d754d7ea7c3370608bc8a0df":{"translations":{"python":{"source":"class ExampleDefaultDataCatalogDatabaseStack(cdk.Stack):\n    def __init__(self, scope, id):\n        super().__init__(scope, id)\n        bucket = Bucket(self, \"DataCatalogBucket\")\n\n        dsf.governance.DataCatalogDatabase(self, \"DataCatalogDatabase\",\n            location_bucket=bucket,\n            location_prefix=\"/databasePath\",\n            name=\"example-db\",\n            permission_model=dsf.utils.PermissionModel.LAKE_FORMATION\n        )","version":"2"},"csharp":{"source":"class ExampleDefaultDataCatalogDatabaseStack : Stack\n{\n    public ExampleDefaultDataCatalogDatabaseStack(Construct scope, string id) : base(scope, id)\n    {\n        var bucket = new Bucket(this, \"DataCatalogBucket\");\n\n        new Governance.DataCatalogDatabase(this, \"DataCatalogDatabase\", new DataCatalogDatabaseProps {\n            LocationBucket = bucket,\n            LocationPrefix = \"/databasePath\",\n            Name = \"example-db\",\n            PermissionModel = Utils.PermissionModel.LAKE_FORMATION\n        });\n    }\n}","version":"1"},"java":{"source":"public class ExampleDefaultDataCatalogDatabaseStack extends Stack {\n    public ExampleDefaultDataCatalogDatabaseStack(Construct scope, String id) {\n        super(scope, id);\n        Bucket bucket = new Bucket(this, \"DataCatalogBucket\");\n\n        DataCatalogDatabase.Builder.create(this, \"DataCatalogDatabase\")\n                .locationBucket(bucket)\n                .locationPrefix(\"/databasePath\")\n                .name(\"example-db\")\n                .permissionModel(PermissionModel.LAKE_FORMATION)\n                .build();\n    }\n}","version":"1"},"go":{"source":"type exampleDefaultDataCatalogDatabaseStack struct {\n\tstack\n}\n\nfunc newExampleDefaultDataCatalogDatabaseStack(scope construct, id *string) *exampleDefaultDataCatalogDatabaseStack {\n\tthis := &exampleDefaultDataCatalogDatabaseStack{}\n\tcdk.NewStack_Override(this, scope, id)\n\tbucket := awscdk.NewBucket(this, jsii.String(\"DataCatalogBucket\"))\n\n\tgovernance.NewDataCatalogDatabase(this, jsii.String(\"DataCatalogDatabase\"), &DataCatalogDatabaseProps{\n\t\tLocationBucket: bucket,\n\t\tLocationPrefix: jsii.String(\"/databasePath\"),\n\t\tName: jsii.String(\"example-db\"),\n\t\tPermissionModel: utils.PermissionModel_LAKE_FORMATION,\n\t})\n\treturn this\n}","version":"1"},"$":{"source":"class ExampleDefaultDataCatalogDatabaseStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    const bucket = new Bucket(this, 'DataCatalogBucket');\n\n    new dsf.governance.DataCatalogDatabase(this, 'DataCatalogDatabase', {\n      locationBucket: bucket,\n      locationPrefix: '/databasePath',\n      name: 'example-db',\n      permissionModel: dsf.utils.PermissionModel.LAKE_FORMATION,\n    });\n  }\n}","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.governance"},"field":{"field":"markdown","line":49}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataCatalogDatabase","@cdklabs/aws-data-solutions-framework.governance.DataCatalogDatabaseProps","@cdklabs/aws-data-solutions-framework.utils","@cdklabs/aws-data-solutions-framework.utils.PermissionModel","@cdklabs/aws-data-solutions-framework.utils.PermissionModel#LAKE_FORMATION","aws-cdk-lib.Stack","aws-cdk-lib.aws_s3.Bucket","aws-cdk-lib.aws_s3.IBucket","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Bucket } from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\n/// !show\nclass ExampleDefaultDataCatalogDatabaseStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    const bucket = new Bucket(this, 'DataCatalogBucket');\n    \n    new dsf.governance.DataCatalogDatabase(this, 'DataCatalogDatabase', {\n      locationBucket: bucket,\n      locationPrefix: '/databasePath',\n      name: 'example-db',\n      permissionModel: dsf.utils.PermissionModel.LAKE_FORMATION,\n    });\n  }\n}\n/// !hide\n\nconst app = new cdk.App();\nnew ExampleDefaultDataCatalogDatabaseStack(app, 'ExampleDefaultDataCatalogDatabaseStack');","syntaxKindCounter":{"11":4,"80":22,"108":1,"110":2,"154":1,"169":2,"176":1,"183":1,"210":1,"211":6,"213":1,"214":2,"233":1,"241":1,"243":1,"244":2,"260":1,"261":1,"263":1,"298":1,"303":4},"fqnsFingerprint":"155c3b2622d5e7ed30633ea70d5e82230935e5ab067a973dac834a17be8e240e"},"e200ab18a9988d00b79e6254829104fbca4e6071b3cb64285951ba4923358c9c":{"translations":{"python":{"source":"encryption_key = Key(self, \"CrawlerLogEncryptionKey\")\n\ndsf.governance.DataCatalogDatabase(self, \"DataCatalogDatabase\",\n    location_bucket=bucket,\n    location_prefix=\"/databasePath\",\n    name=\"example-db\",\n    auto_crawl=True,\n    auto_crawl_schedule=cdk.aws_glue.CfnCrawler.ScheduleProperty(\n        schedule_expression=\"cron(1 0 * * ? *)\"\n    ),\n    crawler_log_encryption_key=encryption_key,\n    crawler_table_level_depth=3\n)","version":"2"},"csharp":{"source":"var encryptionKey = new Key(this, \"CrawlerLogEncryptionKey\");\n\nnew Governance.DataCatalogDatabase(this, \"DataCatalogDatabase\", new DataCatalogDatabaseProps {\n    LocationBucket = bucket,\n    LocationPrefix = \"/databasePath\",\n    Name = \"example-db\",\n    AutoCrawl = true,\n    AutoCrawlSchedule = new ScheduleProperty {\n        ScheduleExpression = \"cron(1 0 * * ? *)\"\n    },\n    CrawlerLogEncryptionKey = encryptionKey,\n    CrawlerTableLevelDepth = 3\n});","version":"1"},"java":{"source":"Key encryptionKey = new Key(this, \"CrawlerLogEncryptionKey\");\n\nDataCatalogDatabase.Builder.create(this, \"DataCatalogDatabase\")\n        .locationBucket(bucket)\n        .locationPrefix(\"/databasePath\")\n        .name(\"example-db\")\n        .autoCrawl(true)\n        .autoCrawlSchedule(ScheduleProperty.builder()\n                .scheduleExpression(\"cron(1 0 * * ? *)\")\n                .build())\n        .crawlerLogEncryptionKey(encryptionKey)\n        .crawlerTableLevelDepth(3)\n        .build();","version":"1"},"go":{"source":"encryptionKey := awscdk.NewKey(this, jsii.String(\"CrawlerLogEncryptionKey\"))\n\ngovernance.NewDataCatalogDatabase(this, jsii.String(\"DataCatalogDatabase\"), &DataCatalogDatabaseProps{\n\tLocationBucket: bucket,\n\tLocationPrefix: jsii.String(\"/databasePath\"),\n\tName: jsii.String(\"example-db\"),\n\tAutoCrawl: jsii.Boolean(true),\n\tAutoCrawlSchedule: &ScheduleProperty{\n\t\tScheduleExpression: jsii.String(\"cron(1 0 * * ? *)\"),\n\t},\n\tCrawlerLogEncryptionKey: encryptionKey,\n\tCrawlerTableLevelDepth: jsii.Number(3),\n})","version":"1"},"$":{"source":"    const encryptionKey = new Key(this, 'CrawlerLogEncryptionKey');\n\n    new dsf.governance.DataCatalogDatabase(this, 'DataCatalogDatabase', {\n      locationBucket: bucket,\n      locationPrefix: '/databasePath',\n      name: 'example-db',\n      autoCrawl: true,\n      autoCrawlSchedule: {\n        scheduleExpression: 'cron(1 0 * * ? *)',\n      },\n      crawlerLogEncryptionKey: encryptionKey,\n      crawlerTableLevelDepth: 3,\n    });","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.governance"},"field":{"field":"markdown","line":72}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataCatalogDatabase","@cdklabs/aws-data-solutions-framework.governance.DataCatalogDatabaseProps","aws-cdk-lib.aws_glue.CfnCrawler.ScheduleProperty","aws-cdk-lib.aws_kms.IKey","aws-cdk-lib.aws_kms.Key","aws-cdk-lib.aws_s3.IBucket","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Key } from 'aws-cdk-lib/aws-kms';\nimport { Bucket } from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\nclass ExampleDataCatalogDatabaseCrawlerStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    const bucket = new Bucket(this, 'DataCatalogBucket');\n    \n    /// !show\n    const encryptionKey = new Key(this, 'CrawlerLogEncryptionKey');\n    \n    new dsf.governance.DataCatalogDatabase(this, 'DataCatalogDatabase', {\n      locationBucket: bucket,\n      locationPrefix: '/databasePath',\n      name: 'example-db',\n      autoCrawl: true,\n      autoCrawlSchedule: {\n        scheduleExpression: 'cron(1 0 * * ? *)',\n      },\n      crawlerLogEncryptionKey: encryptionKey,\n      crawlerTableLevelDepth: 3,\n    });\n    /// !hide\n  }\n}\n\nconst app = new cdk.App();\nnew ExampleDataCatalogDatabaseCrawlerStack(app, 'ExampleDataCatalogDatabaseCrawlerStack');","syntaxKindCounter":{"9":1,"11":5,"80":15,"110":2,"112":1,"210":2,"211":2,"214":2,"243":1,"244":1,"260":1,"261":1,"303":8},"fqnsFingerprint":"11cd523313377e4593e18a8883d06f85ac6d57f2b02f223ddc83de204c21387b"},"3240dac1d8c19a6144fdf01a5ec464e89c3d6a5e9c058944c2e11f2d91cba85c":{"translations":{"python":{"source":"class ExampleDefaultDataLakeCatalogStack(cdk.Stack):\n    def __init__(self, scope, id):\n        super().__init__(scope, id)\n        storage = dsf.storage.DataLakeStorage(self, \"MyDataLakeStorage\")\n\n        dsf.governance.DataLakeCatalog(self, \"DataCatalog\",\n            data_lake_storage=storage\n        )","version":"2"},"csharp":{"source":"class ExampleDefaultDataLakeCatalogStack : Stack\n{\n    public ExampleDefaultDataLakeCatalogStack(Construct scope, string id) : base(scope, id)\n    {\n        var storage = new Storage.DataLakeStorage(this, \"MyDataLakeStorage\");\n\n        new Governance.DataLakeCatalog(this, \"DataCatalog\", new DataLakeCatalogProps {\n            DataLakeStorage = storage\n        });\n    }\n}","version":"1"},"java":{"source":"public class ExampleDefaultDataLakeCatalogStack extends Stack {\n    public ExampleDefaultDataLakeCatalogStack(Construct scope, String id) {\n        super(scope, id);\n        DataLakeStorage storage = new DataLakeStorage(this, \"MyDataLakeStorage\");\n\n        DataLakeCatalog.Builder.create(this, \"DataCatalog\")\n                .dataLakeStorage(storage)\n                .build();\n    }\n}","version":"1"},"go":{"source":"type exampleDefaultDataLakeCatalogStack struct {\n\tstack\n}\n\nfunc newExampleDefaultDataLakeCatalogStack(scope construct, id *string) *exampleDefaultDataLakeCatalogStack {\n\tthis := &exampleDefaultDataLakeCatalogStack{}\n\tcdk.NewStack_Override(this, scope, id)\n\tstorage := storage.NewDataLakeStorage(this, jsii.String(\"MyDataLakeStorage\"))\n\n\tgovernance.NewDataLakeCatalog(this, jsii.String(\"DataCatalog\"), &DataLakeCatalogProps{\n\t\tDataLakeStorage: storage,\n\t})\n\treturn this\n}","version":"1"},"$":{"source":"class ExampleDefaultDataLakeCatalogStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    const storage = new dsf.storage.DataLakeStorage(this, 'MyDataLakeStorage');\n\n    new dsf.governance.DataLakeCatalog(this, 'DataCatalog', {\n      dataLakeStorage: storage,\n    });\n  }\n}","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.governance"},"field":{"field":"markdown","line":108}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataLakeCatalog","@cdklabs/aws-data-solutions-framework.governance.DataLakeCatalogProps","@cdklabs/aws-data-solutions-framework.storage","@cdklabs/aws-data-solutions-framework.storage.DataLakeStorage","aws-cdk-lib.Stack","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\n/// !show\nclass ExampleDefaultDataLakeCatalogStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    const storage = new dsf.storage.DataLakeStorage(this, 'MyDataLakeStorage');\n    \n    new dsf.governance.DataLakeCatalog(this, 'DataCatalog', {\n      dataLakeStorage: storage,\n    });\n  }\n}\n/// !hide\n\nconst app = new cdk.App();\nnew ExampleDefaultDataLakeCatalogStack(app, 'ExampleDefaultDataLakeCatalogStack');","syntaxKindCounter":{"11":2,"80":17,"108":1,"110":2,"154":1,"169":2,"176":1,"183":1,"210":1,"211":5,"213":1,"214":2,"233":1,"241":1,"243":1,"244":2,"260":1,"261":1,"263":1,"298":1,"303":1},"fqnsFingerprint":"a4ac86e3193d28d934f0a11753dab0c2da0572ac3419746a36cd8f7eec7773d0"},"1e0556047f46558633515cbe5f785886cb73986423282fad908c3ab8cd3ac6eb":{"translations":{"python":{"source":"encryption_key = Key(self, \"CrawlerLogEncryptionKey\")\n\ndsf.governance.DataLakeCatalog(self, \"DataCatalog\",\n    data_lake_storage=storage,\n    auto_crawl=True,\n    auto_crawl_schedule=cdk.aws_glue.CfnCrawler.ScheduleProperty(\n        schedule_expression=\"cron(1 0 * * ? *)\"\n    ),\n    crawler_log_encryption_key=encryption_key,\n    crawler_table_level_depth=3\n)","version":"2"},"csharp":{"source":"var encryptionKey = new Key(this, \"CrawlerLogEncryptionKey\");\n\nnew Governance.DataLakeCatalog(this, \"DataCatalog\", new DataLakeCatalogProps {\n    DataLakeStorage = storage,\n    AutoCrawl = true,\n    AutoCrawlSchedule = new ScheduleProperty {\n        ScheduleExpression = \"cron(1 0 * * ? *)\"\n    },\n    CrawlerLogEncryptionKey = encryptionKey,\n    CrawlerTableLevelDepth = 3\n});","version":"1"},"java":{"source":"Key encryptionKey = new Key(this, \"CrawlerLogEncryptionKey\");\n\nDataLakeCatalog.Builder.create(this, \"DataCatalog\")\n        .dataLakeStorage(storage)\n        .autoCrawl(true)\n        .autoCrawlSchedule(ScheduleProperty.builder()\n                .scheduleExpression(\"cron(1 0 * * ? *)\")\n                .build())\n        .crawlerLogEncryptionKey(encryptionKey)\n        .crawlerTableLevelDepth(3)\n        .build();","version":"1"},"go":{"source":"encryptionKey := awscdk.NewKey(this, jsii.String(\"CrawlerLogEncryptionKey\"))\n\ngovernance.NewDataLakeCatalog(this, jsii.String(\"DataCatalog\"), &DataLakeCatalogProps{\n\tDataLakeStorage: storage,\n\tAutoCrawl: jsii.Boolean(true),\n\tAutoCrawlSchedule: &ScheduleProperty{\n\t\tScheduleExpression: jsii.String(\"cron(1 0 * * ? *)\"),\n\t},\n\tCrawlerLogEncryptionKey: encryptionKey,\n\tCrawlerTableLevelDepth: jsii.Number(3),\n})","version":"1"},"$":{"source":"    const encryptionKey = new Key(this, 'CrawlerLogEncryptionKey');\n\n    new dsf.governance.DataLakeCatalog(this, 'DataCatalog', {\n      dataLakeStorage: storage,\n      autoCrawl: true,\n      autoCrawlSchedule: {\n        scheduleExpression: 'cron(1 0 * * ? *)',\n      },\n      crawlerLogEncryptionKey: encryptionKey,\n      crawlerTableLevelDepth: 3,\n    });","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.governance"},"field":{"field":"markdown","line":130}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataLakeCatalog","@cdklabs/aws-data-solutions-framework.governance.DataLakeCatalogProps","@cdklabs/aws-data-solutions-framework.storage.DataLakeStorage","aws-cdk-lib.aws_glue.CfnCrawler.ScheduleProperty","aws-cdk-lib.aws_kms.IKey","aws-cdk-lib.aws_kms.Key","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Key } from 'aws-cdk-lib/aws-kms';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\nclass ExampleDefaultDataLakeCatalogStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    const storage = new dsf.storage.DataLakeStorage(this, 'MyDataLakeStorage');\n    \n    /// !show\n    const encryptionKey = new Key(this, 'CrawlerLogEncryptionKey');\n    \n    new dsf.governance.DataLakeCatalog(this, 'DataCatalog', {\n      dataLakeStorage: storage,\n      autoCrawl: true,\n      autoCrawlSchedule: {\n        scheduleExpression: 'cron(1 0 * * ? *)',\n      },\n      crawlerLogEncryptionKey: encryptionKey,\n      crawlerTableLevelDepth: 3,\n    });\n    /// !hide\n  }\n}\n\nconst app = new cdk.App();\nnew ExampleDefaultDataLakeCatalogStack(app, 'ExampleDefaultDataLakeCatalogStack');","syntaxKindCounter":{"9":1,"11":3,"80":13,"110":2,"112":1,"210":2,"211":2,"214":2,"243":1,"244":1,"260":1,"261":1,"303":6},"fqnsFingerprint":"ddcdc98f953056b8f925c99ef9dc914ebbc75ad878357a131777728fddeca473"},"9ad12656c84ea8e3a06ecc35a9e9cd1a5a7611f30341cc795a2446dc379fc149":{"translations":{"python":{"source":"dsf.governance.DataZoneMskCentralAuthorizer(self, \"MskAuthorizer\",\n    domain_id=\"aba_dc999t9ime9sss\"\n)","version":"2"},"csharp":{"source":"new Governance.DataZoneMskCentralAuthorizer(this, \"MskAuthorizer\", new DataZoneMskCentralAuthorizerProps {\n    DomainId = \"aba_dc999t9ime9sss\"\n});","version":"1"},"java":{"source":"DataZoneMskCentralAuthorizer.Builder.create(this, \"MskAuthorizer\")\n        .domainId(\"aba_dc999t9ime9sss\")\n        .build();","version":"1"},"go":{"source":"governance.NewDataZoneMskCentralAuthorizer(this, jsii.String(\"MskAuthorizer\"), &DataZoneMskCentralAuthorizerProps{\n\tDomainId: jsii.String(\"aba_dc999t9ime9sss\"),\n})","version":"1"},"$":{"source":"new dsf.governance.DataZoneMskCentralAuthorizer(this, 'MskAuthorizer', {\n  domainId: 'aba_dc999t9ime9sss',\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.governance"},"field":{"field":"markdown","line":184}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskCentralAuthorizer","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskCentralAuthorizerProps","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\n\nclass ExampleDefaultDataZoneMskCentralAuthorizerStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    /// !show\n    new dsf.governance.DataZoneMskCentralAuthorizer(this, 'MskAuthorizer', {\n      domainId: 'aba_dc999t9ime9sss',\n    });\n    /// !hide\n    \n  }\n}\n\nconst app = new cdk.App();\nnew ExampleDefaultDataZoneMskCentralAuthorizerStack(app, 'ExampleDefaultDataZoneMskCentralAuthorizerStack');","syntaxKindCounter":{"11":2,"80":4,"110":1,"210":1,"211":2,"214":1,"244":1,"303":1},"fqnsFingerprint":"f77188236e1dafa8a99a2ce65f05a220d98289907f7f9b3b0314dfbe8713180a"},"f0f3982d3e8ea4ffaab4763b9cc7613ff9832e28b79dcada2f605ff20d3e3e0e":{"translations":{"python":{"source":"central_authorizer = dsf.governance.DataZoneMskCentralAuthorizer(self, \"MskAuthorizer\",\n    domain_id=\"aba_dc999t9ime9sss\"\n)\n\n# Add an account that is associated with the DataZone Domain\ncentral_authorizer.register_account(\"AccountRegistration\", \"123456789012\")","version":"2"},"csharp":{"source":"var centralAuthorizer = new Governance.DataZoneMskCentralAuthorizer(this, \"MskAuthorizer\", new DataZoneMskCentralAuthorizerProps {\n    DomainId = \"aba_dc999t9ime9sss\"\n});\n\n// Add an account that is associated with the DataZone Domain\ncentralAuthorizer.RegisterAccount(\"AccountRegistration\", \"123456789012\");","version":"1"},"java":{"source":"DataZoneMskCentralAuthorizer centralAuthorizer = DataZoneMskCentralAuthorizer.Builder.create(this, \"MskAuthorizer\")\n        .domainId(\"aba_dc999t9ime9sss\")\n        .build();\n\n// Add an account that is associated with the DataZone Domain\ncentralAuthorizer.registerAccount(\"AccountRegistration\", \"123456789012\");","version":"1"},"go":{"source":"centralAuthorizer := governance.NewDataZoneMskCentralAuthorizer(this, jsii.String(\"MskAuthorizer\"), &DataZoneMskCentralAuthorizerProps{\n\tDomainId: jsii.String(\"aba_dc999t9ime9sss\"),\n})\n\n// Add an account that is associated with the DataZone Domain\ncentralAuthorizer.RegisterAccount(jsii.String(\"AccountRegistration\"), jsii.String(\"123456789012\"))","version":"1"},"$":{"source":"    const centralAuthorizer = new dsf.governance.DataZoneMskCentralAuthorizer(this, 'MskAuthorizer', {\n      domainId: 'aba_dc999t9ime9sss',\n    });\n\n    // Add an account that is associated with the DataZone Domain\n    centralAuthorizer.registerAccount('AccountRegistration', '123456789012');","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.governance"},"field":{"field":"markdown","line":196}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskCentralAuthorizer","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskCentralAuthorizer#registerAccount","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskCentralAuthorizerProps","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\n\nclass ExampleRegisterDataZoneMskCentralAuthorizerStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    /// !show\n    const centralAuthorizer = new dsf.governance.DataZoneMskCentralAuthorizer(this, 'MskAuthorizer', {\n      domainId: 'aba_dc999t9ime9sss',\n    });\n  \n    // Add an account that is associated with the DataZone Domain\n    centralAuthorizer.registerAccount('AccountRegistration', '123456789012');\n    /// !hide\n\n  }\n}\n\nconst app = new cdk.App();\nnew ExampleRegisterDataZoneMskCentralAuthorizerStack(app, 'ExampleRegisterDataZoneMskCentralAuthorizerStack');","syntaxKindCounter":{"11":4,"80":7,"110":1,"210":1,"211":3,"213":1,"214":1,"243":1,"244":1,"260":1,"261":1,"303":1},"fqnsFingerprint":"710da426053699494f1a172269ffaf0522a1606900e5ea2935e5b10d452e6ed6"},"b1214bc6d115f029bfa8ca6bc5e4d7daf55e53c0f97d40634d39b96795897c16":{"translations":{"python":{"source":"dsf.governance.DataZoneMskEnvironmentAuthorizer(self, \"MskAuthorizer\",\n    domain_id=\"aba_dc999t9ime9sss\"\n)","version":"2"},"csharp":{"source":"new Governance.DataZoneMskEnvironmentAuthorizer(this, \"MskAuthorizer\", new DataZoneMskEnvironmentAuthorizerProps {\n    DomainId = \"aba_dc999t9ime9sss\"\n});","version":"1"},"java":{"source":"DataZoneMskEnvironmentAuthorizer.Builder.create(this, \"MskAuthorizer\")\n        .domainId(\"aba_dc999t9ime9sss\")\n        .build();","version":"1"},"go":{"source":"governance.NewDataZoneMskEnvironmentAuthorizer(this, jsii.String(\"MskAuthorizer\"), &DataZoneMskEnvironmentAuthorizerProps{\n\tDomainId: jsii.String(\"aba_dc999t9ime9sss\"),\n})","version":"1"},"$":{"source":"new dsf.governance.DataZoneMskEnvironmentAuthorizer(this, 'MskAuthorizer', {\n  domainId: 'aba_dc999t9ime9sss',\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.governance"},"field":{"field":"markdown","line":215}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskEnvironmentAuthorizer","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskEnvironmentAuthorizerProps","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\n\nclass ExampleDefaultDataZoneMskEnvironmentAuthorizerStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    /// !show\n    new dsf.governance.DataZoneMskEnvironmentAuthorizer(this, 'MskAuthorizer', {\n      domainId: 'aba_dc999t9ime9sss',\n    });\n    /// !hide\n    \n  }\n}\n\nconst app = new cdk.App();\nnew ExampleDefaultDataZoneMskEnvironmentAuthorizerStack(app, 'ExampleDefaultDataZoneMskEnvironmentAuthorizerStack');","syntaxKindCounter":{"11":2,"80":4,"110":1,"210":1,"211":2,"214":1,"244":1,"303":1},"fqnsFingerprint":"375dae748c2e5d76160d3b9106013206dab27ccebc985951b7db2aaba73b5b51"},"fcc572ee1b7c73f489b25a115c5c1d2b654a87fe94546c8c10c60d540052118c":{"translations":{"python":{"source":"permission_boundary_policy = ManagedPolicy(self, \"PermissionBoundaryPolicy\",\n    statements=[\n        # example of other permissions needed by the consumer\n        PolicyStatement(\n            effect=Effect.ALLOW,\n            actions=[\"s3:*\"],\n            resources=[\"*\"]\n        ), dsf.governance.DataZoneMskEnvironmentAuthorizer.PERMISSIONS_BOUNDARY_STATEMENTS\n    ]\n)\n\nRole(self, \"ConsumerRole\",\n    assumed_by=ServicePrincipal(\"lambda.amazonaws.com\"),\n    permissions_boundary=permission_boundary_policy\n)","version":"2"},"csharp":{"source":"var permissionBoundaryPolicy = new ManagedPolicy(this, \"PermissionBoundaryPolicy\", new ManagedPolicyProps {\n    Statements = new [] {\n        // example of other permissions needed by the consumer\n        new PolicyStatement(new PolicyStatementProps {\n            Effect = Effect.ALLOW,\n            Actions = new [] { \"s3:*\" },\n            Resources = new [] { \"*\" }\n        }), Governance.DataZoneMskEnvironmentAuthorizer.PERMISSIONS_BOUNDARY_STATEMENTS }\n});\n\nnew Role(this, \"ConsumerRole\", new RoleProps {\n    AssumedBy = new ServicePrincipal(\"lambda.amazonaws.com\"),\n    PermissionsBoundary = permissionBoundaryPolicy\n});","version":"1"},"java":{"source":"ManagedPolicy permissionBoundaryPolicy = ManagedPolicy.Builder.create(this, \"PermissionBoundaryPolicy\")\n        .statements(List.of(\n            // example of other permissions needed by the consumer\n            PolicyStatement.Builder.create()\n                    .effect(Effect.ALLOW)\n                    .actions(List.of(\"s3:*\"))\n                    .resources(List.of(\"*\"))\n                    .build(), DataZoneMskEnvironmentAuthorizer.PERMISSIONS_BOUNDARY_STATEMENTS))\n        .build();\n\nRole.Builder.create(this, \"ConsumerRole\")\n        .assumedBy(new ServicePrincipal(\"lambda.amazonaws.com\"))\n        .permissionsBoundary(permissionBoundaryPolicy)\n        .build();","version":"1"},"go":{"source":"permissionBoundaryPolicy := awscdk.NewManagedPolicy(this, jsii.String(\"PermissionBoundaryPolicy\"), &ManagedPolicyProps{\n\tStatements: []policyStatement{\n\t\t// example of other permissions needed by the consumer\n\t\tawscdk.NewPolicyStatement(&PolicyStatementProps{\n\t\t\tEffect: awscdk.Effect_ALLOW,\n\t\t\tActions: []*string{\n\t\t\t\tjsii.String(\"s3:*\"),\n\t\t\t},\n\t\t\tResources: []*string{\n\t\t\t\tjsii.String(\"*\"),\n\t\t\t},\n\t\t}),\n\t\tgovernance.DataZoneMskEnvironmentAuthorizer_PERMISSIONS_BOUNDARY_STATEMENTS(),\n\t},\n})\n\nawscdk.NewRole(this, jsii.String(\"ConsumerRole\"), &RoleProps{\n\tAssumedBy: awscdk.NewServicePrincipal(jsii.String(\"lambda.amazonaws.com\")),\n\tPermissionsBoundary: permissionBoundaryPolicy,\n})","version":"1"},"$":{"source":"\n    const permissionBoundaryPolicy = new ManagedPolicy(this, 'PermissionBoundaryPolicy', {\n      statements: [\n        // example of other permissions needed by the consumer\n        new PolicyStatement({\n          effect: Effect.ALLOW,\n          actions: ['s3:*'],\n          resources: ['*'],\n        }),\n        // permissions needed to consume MSK topics and granted by the Authorizer\n        dsf.governance.DataZoneMskEnvironmentAuthorizer.PERMISSIONS_BOUNDARY_STATEMENTS\n      ],\n    })\n\n    new Role(this, 'ConsumerRole', {\n      assumedBy: new ServicePrincipal('lambda.amazonaws.com'),\n      permissionsBoundary: permissionBoundaryPolicy,\n    })","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.governance"},"field":{"field":"markdown","line":226}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskEnvironmentAuthorizer","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskEnvironmentAuthorizer#PERMISSIONS_BOUNDARY_STATEMENTS","aws-cdk-lib.aws_iam.Effect","aws-cdk-lib.aws_iam.Effect#ALLOW","aws-cdk-lib.aws_iam.IManagedPolicy","aws-cdk-lib.aws_iam.IPrincipal","aws-cdk-lib.aws_iam.ManagedPolicy","aws-cdk-lib.aws_iam.ManagedPolicyProps","aws-cdk-lib.aws_iam.PolicyStatement","aws-cdk-lib.aws_iam.PolicyStatementProps","aws-cdk-lib.aws_iam.Role","aws-cdk-lib.aws_iam.RoleProps","aws-cdk-lib.aws_iam.ServicePrincipal","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\nimport { Effect, ManagedPolicy, PolicyStatement, Role, ServicePrincipal } from 'aws-cdk-lib/aws-iam';\n\n\nclass ExampleVpcDataZoneMskEnvironmentAuthorizerStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    /// !show\n\n    const permissionBoundaryPolicy = new ManagedPolicy(this, 'PermissionBoundaryPolicy', {\n      statements: [\n        // example of other permissions needed by the consumer\n        new PolicyStatement({\n          effect: Effect.ALLOW,\n          actions: ['s3:*'],\n          resources: ['*'],\n        }),\n        // permissions needed to consume MSK topics and granted by the Authorizer\n        dsf.governance.DataZoneMskEnvironmentAuthorizer.PERMISSIONS_BOUNDARY_STATEMENTS\n      ],\n    })\n\n    new Role(this, 'ConsumerRole', {\n      assumedBy: new ServicePrincipal('lambda.amazonaws.com'),\n      permissionsBoundary: permissionBoundaryPolicy,\n    })\n    /// !hide\n    \n  }\n}\n\nconst app = new cdk.App();\nnew ExampleVpcDataZoneMskEnvironmentAuthorizerStack(app, 'ExampleVpcDataZoneMskEnvironmentAuthorizerStack');","syntaxKindCounter":{"11":5,"80":18,"110":2,"209":3,"210":3,"211":4,"214":4,"243":1,"244":1,"260":1,"261":1,"303":6},"fqnsFingerprint":"e6297443d564513ca447cd86172e805793d25ed916465f088a2c2f9ad8d67972"},"9bdad368c983ffb4e4f2eec9aeda3f7309f07ec979268e65099624f15d1bf435":{"translations":{"python":{"source":"dsf.governance.DataZoneMskEnvironmentAuthorizer(self, \"MskAuthorizer\",\n    domain_id=\"aba_dc999t9ime9sss\",\n    central_account_id=\"123456789012\"\n)","version":"2"},"csharp":{"source":"new Governance.DataZoneMskEnvironmentAuthorizer(this, \"MskAuthorizer\", new DataZoneMskEnvironmentAuthorizerProps {\n    DomainId = \"aba_dc999t9ime9sss\",\n    CentralAccountId = \"123456789012\"\n});","version":"1"},"java":{"source":"DataZoneMskEnvironmentAuthorizer.Builder.create(this, \"MskAuthorizer\")\n        .domainId(\"aba_dc999t9ime9sss\")\n        .centralAccountId(\"123456789012\")\n        .build();","version":"1"},"go":{"source":"governance.NewDataZoneMskEnvironmentAuthorizer(this, jsii.String(\"MskAuthorizer\"), &DataZoneMskEnvironmentAuthorizerProps{\n\tDomainId: jsii.String(\"aba_dc999t9ime9sss\"),\n\tCentralAccountId: jsii.String(\"123456789012\"),\n})","version":"1"},"$":{"source":"new dsf.governance.DataZoneMskEnvironmentAuthorizer(this, 'MskAuthorizer', {\n  domainId: 'aba_dc999t9ime9sss',\n  centralAccountId: '123456789012'\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.governance"},"field":{"field":"markdown","line":252}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskEnvironmentAuthorizer","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskEnvironmentAuthorizerProps","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\n\nclass ExampleCrossAccountDataZoneMskEnvironmentAuthorizerStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    /// !show\n    new dsf.governance.DataZoneMskEnvironmentAuthorizer(this, 'MskAuthorizer', {\n      domainId: 'aba_dc999t9ime9sss',\n      centralAccountId: '123456789012'\n    });\n    /// !hide\n    \n  }\n}\n\nconst app = new cdk.App();\nnew ExampleCrossAccountDataZoneMskEnvironmentAuthorizerStack(app, 'ExampleCrossAccountDataZoneMskEnvironmentAuthorizerStack');","syntaxKindCounter":{"11":3,"80":5,"110":1,"210":1,"211":2,"214":1,"244":1,"303":2},"fqnsFingerprint":"375dae748c2e5d76160d3b9106013206dab27ccebc985951b7db2aaba73b5b51"},"ed61fa86fa3cf5a3f6735c8dea8e8dbdcdc6bc4a50fd028f3873ae09af7fc1be":{"translations":{"python":{"source":"dsf.governance.DataZoneMskEnvironmentAuthorizer(self, \"MskAuthorizer\",\n    domain_id=\"aba_dc999t9ime9sss\",\n    central_account_id=\"123456789012\",\n    grant_msk_managed_vpc=True\n)","version":"2"},"csharp":{"source":"new Governance.DataZoneMskEnvironmentAuthorizer(this, \"MskAuthorizer\", new DataZoneMskEnvironmentAuthorizerProps {\n    DomainId = \"aba_dc999t9ime9sss\",\n    CentralAccountId = \"123456789012\",\n    GrantMskManagedVpc = true\n});","version":"1"},"java":{"source":"DataZoneMskEnvironmentAuthorizer.Builder.create(this, \"MskAuthorizer\")\n        .domainId(\"aba_dc999t9ime9sss\")\n        .centralAccountId(\"123456789012\")\n        .grantMskManagedVpc(true)\n        .build();","version":"1"},"go":{"source":"governance.NewDataZoneMskEnvironmentAuthorizer(this, jsii.String(\"MskAuthorizer\"), &DataZoneMskEnvironmentAuthorizerProps{\n\tDomainId: jsii.String(\"aba_dc999t9ime9sss\"),\n\tCentralAccountId: jsii.String(\"123456789012\"),\n\tGrantMskManagedVpc: jsii.Boolean(true),\n})","version":"1"},"$":{"source":"new dsf.governance.DataZoneMskEnvironmentAuthorizer(this, 'MskAuthorizer', {\n  domainId: 'aba_dc999t9ime9sss',\n  centralAccountId: '123456789012',\n  grantMskManagedVpc: true,\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.governance"},"field":{"field":"markdown","line":265}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskEnvironmentAuthorizer","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskEnvironmentAuthorizerProps","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\n\nclass ExampleVpcDataZoneMskEnvironmentAuthorizerStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    /// !show\n    new dsf.governance.DataZoneMskEnvironmentAuthorizer(this, 'MskAuthorizer', {\n      domainId: 'aba_dc999t9ime9sss',\n      centralAccountId: '123456789012',\n      grantMskManagedVpc: true,\n    });\n    /// !hide\n    \n  }\n}\n\nconst app = new cdk.App();\nnew ExampleVpcDataZoneMskEnvironmentAuthorizerStack(app, 'ExampleVpcDataZoneMskEnvironmentAuthorizerStack');","syntaxKindCounter":{"11":3,"80":6,"110":1,"112":1,"210":1,"211":2,"214":1,"244":1,"303":3},"fqnsFingerprint":"375dae748c2e5d76160d3b9106013206dab27ccebc985951b7db2aaba73b5b51"},"aed226023bea62e27589df67d5f0525e1d20d966f876271b98210f4092564911":{"translations":{"python":{"source":"dsf.governance.DataZoneMskAssetType(self, \"DataZoneMskAssetType\",\n    domain_id=\"aba_dc999t9ime9sss\"\n)","version":"2"},"csharp":{"source":"new Governance.DataZoneMskAssetType(this, \"DataZoneMskAssetType\", new DataZoneMskAssetTypeProps {\n    DomainId = \"aba_dc999t9ime9sss\"\n});","version":"1"},"java":{"source":"DataZoneMskAssetType.Builder.create(this, \"DataZoneMskAssetType\")\n        .domainId(\"aba_dc999t9ime9sss\")\n        .build();","version":"1"},"go":{"source":"governance.NewDataZoneMskAssetType(this, jsii.String(\"DataZoneMskAssetType\"), &DataZoneMskAssetTypeProps{\n\tDomainId: jsii.String(\"aba_dc999t9ime9sss\"),\n})","version":"1"},"$":{"source":"new dsf.governance.DataZoneMskAssetType(this, 'DataZoneMskAssetType', {\n  domainId: 'aba_dc999t9ime9sss',\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.governance"},"field":{"field":"markdown","line":289}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskAssetType","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskAssetTypeProps","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\n\nclass ExampleDefaultDataZoneMskAssetTypeStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    /// !show\n    new dsf.governance.DataZoneMskAssetType(this, 'DataZoneMskAssetType', {\n      domainId: 'aba_dc999t9ime9sss',\n    });\n    /// !hide\n    \n  }\n}\n\nconst app = new cdk.App();\nnew ExampleDefaultDataZoneMskAssetTypeStack(app, 'ExampleDefaultDataZoneMskAssetTypeStack');","syntaxKindCounter":{"11":2,"80":4,"110":1,"210":1,"211":2,"214":1,"244":1,"303":1},"fqnsFingerprint":"2ae10875cdad8033152be4e1acefc7a0e3dbae1b62b24f5fb70e1ed336a38d29"},"9b6d8d6ec7945ca51cb28baa71b2e9d4b78d4633ec80b43fb9e4f2b932c60974":{"translations":{"python":{"source":"dsf.governance.DataZoneMskAssetType(self, \"DataZoneMskAssetType\",\n    domain_id=\"aba_dc999t9ime9sss\",\n    project_id=\"xxxxxxxxxxx\"\n)","version":"2"},"csharp":{"source":"new Governance.DataZoneMskAssetType(this, \"DataZoneMskAssetType\", new DataZoneMskAssetTypeProps {\n    DomainId = \"aba_dc999t9ime9sss\",\n    ProjectId = \"xxxxxxxxxxx\"\n});","version":"1"},"java":{"source":"DataZoneMskAssetType.Builder.create(this, \"DataZoneMskAssetType\")\n        .domainId(\"aba_dc999t9ime9sss\")\n        .projectId(\"xxxxxxxxxxx\")\n        .build();","version":"1"},"go":{"source":"governance.NewDataZoneMskAssetType(this, jsii.String(\"DataZoneMskAssetType\"), &DataZoneMskAssetTypeProps{\n\tDomainId: jsii.String(\"aba_dc999t9ime9sss\"),\n\tProjectId: jsii.String(\"xxxxxxxxxxx\"),\n})","version":"1"},"$":{"source":"new dsf.governance.DataZoneMskAssetType(this, 'DataZoneMskAssetType', {\n  domainId: 'aba_dc999t9ime9sss',\n  projectId: 'xxxxxxxxxxx'\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.governance"},"field":{"field":"markdown","line":300}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskAssetType","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskAssetTypeProps","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\n\nclass ExampleProjectDataZoneMskAssetTypeStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    /// !show\n    new dsf.governance.DataZoneMskAssetType(this, 'DataZoneMskAssetType', {\n      domainId: 'aba_dc999t9ime9sss',\n      projectId: 'xxxxxxxxxxx'\n    });\n    /// !hide\n    \n  }\n}\n\nconst app = new cdk.App();\nnew ExampleProjectDataZoneMskAssetTypeStack(app, 'ExampleProjectDataZoneMskAssetTypeStack');","syntaxKindCounter":{"11":3,"80":5,"110":1,"210":1,"211":2,"214":1,"244":1,"303":2},"fqnsFingerprint":"2ae10875cdad8033152be4e1acefc7a0e3dbae1b62b24f5fb70e1ed336a38d29"},"100b17f65b610bd1f3fe8b537153c38554e74e44be39912b91494bfbe8d8887d":{"translations":{"python":{"source":"data_zone_asset_factory = dsf.governance.DataZoneCustomAssetTypeFactory(self, \"DataZoneCustomAssetTypeFactory\",\n    domain_id=\"aba_dc999t9ime9sss\"\n)\n\ndsf.governance.DataZoneMskAssetType(self, \"DataZoneMskAssetType\",\n    domain_id=\"aba_dc999t9ime9sss\",\n    project_id=\"xxxxxxxxxxx\",\n    dz_custom_asset_type_factory=data_zone_asset_factory\n)","version":"2"},"csharp":{"source":"var dataZoneAssetFactory = new Governance.DataZoneCustomAssetTypeFactory(this, \"DataZoneCustomAssetTypeFactory\", new DataZoneCustomAssetTypeFactoryProps {\n    DomainId = \"aba_dc999t9ime9sss\"\n});\n\nnew Governance.DataZoneMskAssetType(this, \"DataZoneMskAssetType\", new DataZoneMskAssetTypeProps {\n    DomainId = \"aba_dc999t9ime9sss\",\n    ProjectId = \"xxxxxxxxxxx\",\n    DzCustomAssetTypeFactory = dataZoneAssetFactory\n});","version":"1"},"java":{"source":"DataZoneCustomAssetTypeFactory dataZoneAssetFactory = DataZoneCustomAssetTypeFactory.Builder.create(this, \"DataZoneCustomAssetTypeFactory\")\n        .domainId(\"aba_dc999t9ime9sss\")\n        .build();\n\nDataZoneMskAssetType.Builder.create(this, \"DataZoneMskAssetType\")\n        .domainId(\"aba_dc999t9ime9sss\")\n        .projectId(\"xxxxxxxxxxx\")\n        .dzCustomAssetTypeFactory(dataZoneAssetFactory)\n        .build();","version":"1"},"go":{"source":"dataZoneAssetFactory := governance.NewDataZoneCustomAssetTypeFactory(this, jsii.String(\"DataZoneCustomAssetTypeFactory\"), &DataZoneCustomAssetTypeFactoryProps{\n\tDomainId: jsii.String(\"aba_dc999t9ime9sss\"),\n})\n\ngovernance.NewDataZoneMskAssetType(this, jsii.String(\"DataZoneMskAssetType\"), &DataZoneMskAssetTypeProps{\n\tDomainId: jsii.String(\"aba_dc999t9ime9sss\"),\n\tProjectId: jsii.String(\"xxxxxxxxxxx\"),\n\tDzCustomAssetTypeFactory: dataZoneAssetFactory,\n})","version":"1"},"$":{"source":"    const dataZoneAssetFactory = new dsf.governance.DataZoneCustomAssetTypeFactory(this, 'DataZoneCustomAssetTypeFactory', {\n      domainId: 'aba_dc999t9ime9sss',\n    });\n\n    new dsf.governance.DataZoneMskAssetType(this, 'DataZoneMskAssetType', {\n      domainId: 'aba_dc999t9ime9sss',\n      projectId: 'xxxxxxxxxxx',\n      dzCustomAssetTypeFactory: dataZoneAssetFactory\n    });","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.governance"},"field":{"field":"markdown","line":311}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataZoneCustomAssetTypeFactory","@cdklabs/aws-data-solutions-framework.governance.DataZoneCustomAssetTypeFactoryProps","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskAssetType","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskAssetTypeProps","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\n\nclass ExampleFactoryDataZoneMskAssetTypeStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    /// !show\n    const dataZoneAssetFactory = new dsf.governance.DataZoneCustomAssetTypeFactory(this, 'DataZoneCustomAssetTypeFactory', {\n      domainId: 'aba_dc999t9ime9sss',\n    });\n\n    new dsf.governance.DataZoneMskAssetType(this, 'DataZoneMskAssetType', {\n      domainId: 'aba_dc999t9ime9sss',\n      projectId: 'xxxxxxxxxxx',\n      dzCustomAssetTypeFactory: dataZoneAssetFactory\n    });\n    /// !hide\n    \n  }\n}\n\nconst app = new cdk.App();\nnew ExampleFactoryDataZoneMskAssetTypeStack(app, 'ExampleFactoryDataZoneMskAssetTypeStack');","syntaxKindCounter":{"11":5,"80":12,"110":2,"210":2,"211":4,"214":2,"243":1,"244":1,"260":1,"261":1,"303":4},"fqnsFingerprint":"9f4f89dff1de6b0925d2069f1239cb82890128c392922f1fbe7b0603902604a0"},"faea0b8fb153aa5255a3f79f1190ace07d98594358b788d557843ebdcd4a204a":{"translations":{"python":{"source":"dsf.governance.DataZoneGsrMskDataSource(self, \"DataZoneGsrMskDataSource\",\n    domain_id=\"aba_dc999t9ime9sss\",\n    registry_name=\"schema-registry\",\n    project_id=\"999a99aa9aaaaa\",\n    cluster_name=\"msk-cluster\"\n)","version":"2"},"csharp":{"source":"new Governance.DataZoneGsrMskDataSource(this, \"DataZoneGsrMskDataSource\", new DataZoneGsrMskDataSourceProps {\n    DomainId = \"aba_dc999t9ime9sss\",\n    RegistryName = \"schema-registry\",\n    ProjectId = \"999a99aa9aaaaa\",\n    ClusterName = \"msk-cluster\"\n});","version":"1"},"java":{"source":"DataZoneGsrMskDataSource.Builder.create(this, \"DataZoneGsrMskDataSource\")\n        .domainId(\"aba_dc999t9ime9sss\")\n        .registryName(\"schema-registry\")\n        .projectId(\"999a99aa9aaaaa\")\n        .clusterName(\"msk-cluster\")\n        .build();","version":"1"},"go":{"source":"governance.NewDataZoneGsrMskDataSource(this, jsii.String(\"DataZoneGsrMskDataSource\"), &DataZoneGsrMskDataSourceProps{\n\tDomainId: jsii.String(\"aba_dc999t9ime9sss\"),\n\tRegistryName: jsii.String(\"schema-registry\"),\n\tProjectId: jsii.String(\"999a99aa9aaaaa\"),\n\tClusterName: jsii.String(\"msk-cluster\"),\n})","version":"1"},"$":{"source":"new dsf.governance.DataZoneGsrMskDataSource(this, 'DataZoneGsrMskDataSource', {\n  domainId: 'aba_dc999t9ime9sss',\n  registryName: 'schema-registry',\n  projectId: '999a99aa9aaaaa',\n  clusterName: 'msk-cluster'\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.governance"},"field":{"field":"markdown","line":337}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataZoneGsrMskDataSource","@cdklabs/aws-data-solutions-framework.governance.DataZoneGsrMskDataSourceProps","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\n\nclass ExampleDefaultDataZoneGsrMskDataSourceStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    /// !show\n    new dsf.governance.DataZoneGsrMskDataSource(this, 'DataZoneGsrMskDataSource', {\n      domainId: 'aba_dc999t9ime9sss',\n      registryName: 'schema-registry',\n      projectId: '999a99aa9aaaaa',\n      clusterName: 'msk-cluster'\n    });\n    /// !hide\n    \n  }\n}\n\nconst app = new cdk.App();\nnew ExampleDefaultDataZoneGsrMskDataSourceStack(app, 'ExampleDefaultDataZoneGsrMskDataSourceStack');","syntaxKindCounter":{"11":5,"80":7,"110":1,"210":1,"211":2,"214":1,"244":1,"303":4},"fqnsFingerprint":"7a532fc4df7c616107553d382521cc08f3c21531365d8e11e884e9c086bc1456"},"205926ccdb365b6471fa3c6641b0600dcbb23f81675519b3934869b2147b0bfd":{"translations":{"python":{"source":"dsf.governance.DataZoneGsrMskDataSource(self, \"DataZoneGsrMskDataSource\",\n    domain_id=\"aba_dc999t9ime9sss\",\n    registry_name=\"schema-registry\",\n    project_id=\"999a99aa9aaaaa\",\n    cluster_name=\"msk-cluster\",\n    run_schedule=events.Schedule.expression(\"cron(0 * * * * *)\")\n)","version":"2"},"csharp":{"source":"new Governance.DataZoneGsrMskDataSource(this, \"DataZoneGsrMskDataSource\", new DataZoneGsrMskDataSourceProps {\n    DomainId = \"aba_dc999t9ime9sss\",\n    RegistryName = \"schema-registry\",\n    ProjectId = \"999a99aa9aaaaa\",\n    ClusterName = \"msk-cluster\",\n    RunSchedule = Schedule.Expression(\"cron(0 * * * * *)\")\n});","version":"1"},"java":{"source":"DataZoneGsrMskDataSource.Builder.create(this, \"DataZoneGsrMskDataSource\")\n        .domainId(\"aba_dc999t9ime9sss\")\n        .registryName(\"schema-registry\")\n        .projectId(\"999a99aa9aaaaa\")\n        .clusterName(\"msk-cluster\")\n        .runSchedule(Schedule.expression(\"cron(0 * * * * *)\"))\n        .build();","version":"1"},"go":{"source":"governance.NewDataZoneGsrMskDataSource(this, jsii.String(\"DataZoneGsrMskDataSource\"), &DataZoneGsrMskDataSourceProps{\n\tDomainId: jsii.String(\"aba_dc999t9ime9sss\"),\n\tRegistryName: jsii.String(\"schema-registry\"),\n\tProjectId: jsii.String(\"999a99aa9aaaaa\"),\n\tClusterName: jsii.String(\"msk-cluster\"),\n\tRunSchedule: events.Schedule_Expression(jsii.String(\"cron(0 * * * * *)\")),\n})","version":"1"},"$":{"source":"new dsf.governance.DataZoneGsrMskDataSource(this, 'DataZoneGsrMskDataSource', {\n  domainId: 'aba_dc999t9ime9sss',\n  registryName: 'schema-registry',\n  projectId: '999a99aa9aaaaa',\n  clusterName: 'msk-cluster',\n  runSchedule: events.Schedule.expression('cron(0 * * * * *)'),\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.governance"},"field":{"field":"markdown","line":351}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataZoneGsrMskDataSource","@cdklabs/aws-data-solutions-framework.governance.DataZoneGsrMskDataSourceProps","aws-cdk-lib.aws_events.Schedule","aws-cdk-lib.aws_events.Schedule#expression","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\nimport * as events from 'aws-cdk-lib/aws-events' ;\n\n\nclass ExampleDefaultDataZoneGsrMskDataSourceStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    /// !show\n    new dsf.governance.DataZoneGsrMskDataSource(this, 'DataZoneGsrMskDataSource', {\n      domainId: 'aba_dc999t9ime9sss',\n      registryName: 'schema-registry',\n      projectId: '999a99aa9aaaaa',\n      clusterName: 'msk-cluster',\n      runSchedule: events.Schedule.expression('cron(0 * * * * *)'),\n    });\n    /// !hide\n    \n  }\n}\n\nconst app = new cdk.App();\nnew ExampleDefaultDataZoneGsrMskDataSourceStack(app, 'ExampleDefaultDataZoneGsrMskDataSourceStack');","syntaxKindCounter":{"11":6,"80":11,"110":1,"210":1,"211":4,"213":1,"214":1,"244":1,"303":5},"fqnsFingerprint":"fc90d8e43e4aa8ccb03e3d45041871ec702338481924e5c3073254569a8eb1a1"},"49988a02401b9fc4d4e9cba1fa85e2c43e55b28a1af149f45d247e6dfc5ee81a":{"translations":{"python":{"source":"dsf.governance.DataZoneGsrMskDataSource(self, \"DataZoneGsrMskDataSource\",\n    domain_id=\"aba_dc999t9ime9sss\",\n    registry_name=\"schema-registry\",\n    project_id=\"999a99aa9aaaaa\",\n    cluster_name=\"msk-cluster\",\n    enable_schema_registry_event=True\n)","version":"2"},"csharp":{"source":"new Governance.DataZoneGsrMskDataSource(this, \"DataZoneGsrMskDataSource\", new DataZoneGsrMskDataSourceProps {\n    DomainId = \"aba_dc999t9ime9sss\",\n    RegistryName = \"schema-registry\",\n    ProjectId = \"999a99aa9aaaaa\",\n    ClusterName = \"msk-cluster\",\n    EnableSchemaRegistryEvent = true\n});","version":"1"},"java":{"source":"DataZoneGsrMskDataSource.Builder.create(this, \"DataZoneGsrMskDataSource\")\n        .domainId(\"aba_dc999t9ime9sss\")\n        .registryName(\"schema-registry\")\n        .projectId(\"999a99aa9aaaaa\")\n        .clusterName(\"msk-cluster\")\n        .enableSchemaRegistryEvent(true)\n        .build();","version":"1"},"go":{"source":"governance.NewDataZoneGsrMskDataSource(this, jsii.String(\"DataZoneGsrMskDataSource\"), &DataZoneGsrMskDataSourceProps{\n\tDomainId: jsii.String(\"aba_dc999t9ime9sss\"),\n\tRegistryName: jsii.String(\"schema-registry\"),\n\tProjectId: jsii.String(\"999a99aa9aaaaa\"),\n\tClusterName: jsii.String(\"msk-cluster\"),\n\tEnableSchemaRegistryEvent: jsii.Boolean(true),\n})","version":"1"},"$":{"source":"new dsf.governance.DataZoneGsrMskDataSource(this, 'DataZoneGsrMskDataSource', {\n  domainId: 'aba_dc999t9ime9sss',\n  registryName: 'schema-registry',\n  projectId: '999a99aa9aaaaa',\n  clusterName: 'msk-cluster',\n  enableSchemaRegistryEvent: true,\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.governance"},"field":{"field":"markdown","line":363}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataZoneGsrMskDataSource","@cdklabs/aws-data-solutions-framework.governance.DataZoneGsrMskDataSourceProps","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\n\nclass ExampleDefaultDataZoneGsrMskDataSourceStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    /// !show\n    new dsf.governance.DataZoneGsrMskDataSource(this, 'DataZoneGsrMskDataSource', {\n      domainId: 'aba_dc999t9ime9sss',\n      registryName: 'schema-registry',\n      projectId: '999a99aa9aaaaa',\n      clusterName: 'msk-cluster',\n      enableSchemaRegistryEvent: true,\n    });\n    /// !hide\n    \n  }\n}\n\nconst app = new cdk.App();\nnew ExampleDefaultDataZoneGsrMskDataSourceStack(app, 'ExampleDefaultDataZoneGsrMskDataSourceStack');","syntaxKindCounter":{"11":5,"80":8,"110":1,"112":1,"210":1,"211":2,"214":1,"244":1,"303":5},"fqnsFingerprint":"7a532fc4df7c616107553d382521cc08f3c21531365d8e11e884e9c086bc1456"},"9dbff06bdff4f843ee746ea4af385914927dd96d8e36e685ba7941bebc4b69db":{"translations":{"python":{"source":"class ExampleSparkEmrServerlessStack(cdk.Stack):\n    def __init__(self, scope, id):\n        super().__init__(scope, id)\n\n        runtime_serverless = dsf.processing.SparkEmrServerlessRuntime(self, \"SparkRuntimeServerless\",\n            name=\"spark-serverless-demo\"\n        )\n\n        s3_read_policy_document = PolicyDocument(\n            statements=[\n                PolicyStatement.from_json({\n                    \"actions\": [\"s3:GetObject\"],\n                    \"resources\": [\"arn:aws:s3:::bucket_name\"]\n                })\n            ]\n        )\n\n        # The IAM role that will trigger the Job start and will monitor it\n        job_trigger = Role(self, \"EMRServerlessExecutionRole\",\n            assumed_by=ServicePrincipal(\"lambda.amazonaws.com\")\n        )\n\n        execution_role = dsf.processing.SparkEmrServerlessRuntime.create_execution_role(self, \"EmrServerlessExecutionRole\", s3_read_policy_document)\n\n        runtime_serverless.grant_start_execution(job_trigger, execution_role.role_arn)\n\n        cdk.CfnOutput(self, \"SparkRuntimeServerlessStackApplicationArn\",\n            value=runtime_serverless.application.attr_arn\n        )","version":"2"},"csharp":{"source":"class ExampleSparkEmrServerlessStack : Stack\n{\n    public ExampleSparkEmrServerlessStack(Construct scope, string id) : base(scope, id)\n    {\n\n        var runtimeServerless = new Processing.SparkEmrServerlessRuntime(this, \"SparkRuntimeServerless\", new SparkEmrServerlessRuntimeProps {\n            Name = \"spark-serverless-demo\"\n        });\n\n        var s3ReadPolicyDocument = new PolicyDocument(new PolicyDocumentProps {\n            Statements = new [] { PolicyStatement.FromJson(new Dictionary<string, string[]> {\n                { \"actions\", new [] { \"s3:GetObject\" } },\n                { \"resources\", new [] { \"arn:aws:s3:::bucket_name\" } }\n            }) }\n        });\n\n        // The IAM role that will trigger the Job start and will monitor it\n        var jobTrigger = new Role(this, \"EMRServerlessExecutionRole\", new RoleProps {\n            AssumedBy = new ServicePrincipal(\"lambda.amazonaws.com\")\n        });\n\n        var executionRole = Processing.SparkEmrServerlessRuntime.CreateExecutionRole(this, \"EmrServerlessExecutionRole\", s3ReadPolicyDocument);\n\n        runtimeServerless.GrantStartExecution(jobTrigger, executionRole.RoleArn);\n\n        new CfnOutput(this, \"SparkRuntimeServerlessStackApplicationArn\", new CfnOutputProps {\n            Value = runtimeServerless.Application.AttrArn\n        });\n    }\n}","version":"1"},"java":{"source":"public class ExampleSparkEmrServerlessStack extends Stack {\n    public ExampleSparkEmrServerlessStack(Construct scope, String id) {\n        super(scope, id);\n\n        SparkEmrServerlessRuntime runtimeServerless = SparkEmrServerlessRuntime.Builder.create(this, \"SparkRuntimeServerless\")\n                .name(\"spark-serverless-demo\")\n                .build();\n\n        PolicyDocument s3ReadPolicyDocument = PolicyDocument.Builder.create()\n                .statements(List.of(PolicyStatement.fromJson(Map.of(\n                        \"actions\", List.of(\"s3:GetObject\"),\n                        \"resources\", List.of(\"arn:aws:s3:::bucket_name\")))))\n                .build();\n\n        // The IAM role that will trigger the Job start and will monitor it\n        Role jobTrigger = Role.Builder.create(this, \"EMRServerlessExecutionRole\")\n                .assumedBy(new ServicePrincipal(\"lambda.amazonaws.com\"))\n                .build();\n\n        IRole executionRole = SparkEmrServerlessRuntime.createExecutionRole(this, \"EmrServerlessExecutionRole\", s3ReadPolicyDocument);\n\n        runtimeServerless.grantStartExecution(jobTrigger, executionRole.getRoleArn());\n\n        CfnOutput.Builder.create(this, \"SparkRuntimeServerlessStackApplicationArn\")\n                .value(runtimeServerless.getApplication().getAttrArn())\n                .build();\n    }\n}","version":"1"},"go":{"source":"type exampleSparkEmrServerlessStack struct {\n\tstack\n}\n\nfunc newExampleSparkEmrServerlessStack(scope construct, id *string) *exampleSparkEmrServerlessStack {\n\tthis := &exampleSparkEmrServerlessStack{}\n\tcdk.NewStack_Override(this, scope, id)\n\n\truntimeServerless := processing.NewSparkEmrServerlessRuntime(this, jsii.String(\"SparkRuntimeServerless\"), &SparkEmrServerlessRuntimeProps{\n\t\tName: jsii.String(\"spark-serverless-demo\"),\n\t})\n\n\ts3ReadPolicyDocument := awscdk.NewPolicyDocument(&PolicyDocumentProps{\n\t\tStatements: []policyStatement{\n\t\t\tawscdk.PolicyStatement_FromJson(map[string][]*string{\n\t\t\t\t\"actions\": []*string{\n\t\t\t\t\tjsii.String(\"s3:GetObject\"),\n\t\t\t\t},\n\t\t\t\t\"resources\": []*string{\n\t\t\t\t\tjsii.String(\"arn:aws:s3:::bucket_name\"),\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t})\n\n\t// The IAM role that will trigger the Job start and will monitor it\n\tjobTrigger := awscdk.NewRole(this, jsii.String(\"EMRServerlessExecutionRole\"), &RoleProps{\n\t\tAssumedBy: awscdk.NewServicePrincipal(jsii.String(\"lambda.amazonaws.com\")),\n\t})\n\n\texecutionRole := processing.SparkEmrServerlessRuntime_CreateExecutionRole(this, jsii.String(\"EmrServerlessExecutionRole\"), s3ReadPolicyDocument)\n\n\truntimeServerless.GrantStartExecution(jobTrigger, executionRole.RoleArn)\n\n\tcdk.NewCfnOutput(this, jsii.String(\"SparkRuntimeServerlessStackApplicationArn\"), &CfnOutputProps{\n\t\tValue: runtimeServerless.Application.AttrArn,\n\t})\n\treturn this\n}","version":"1"},"$":{"source":"class ExampleSparkEmrServerlessStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    const runtimeServerless = new dsf.processing.SparkEmrServerlessRuntime(this, 'SparkRuntimeServerless', {\n      name: 'spark-serverless-demo',\n    });\n\n    const s3ReadPolicyDocument = new PolicyDocument({\n      statements: [\n        PolicyStatement.fromJson({\n          actions: ['s3:GetObject'],\n          resources: ['arn:aws:s3:::bucket_name'],\n        }),\n      ],\n    });\n\n    // The IAM role that will trigger the Job start and will monitor it\n    const jobTrigger = new Role(this, 'EMRServerlessExecutionRole', {\n      assumedBy: new ServicePrincipal('lambda.amazonaws.com'),\n    });\n\n    const executionRole = dsf.processing.SparkEmrServerlessRuntime.createExecutionRole(this, 'EmrServerlessExecutionRole', s3ReadPolicyDocument);\n\n    runtimeServerless.grantStartExecution(jobTrigger, executionRole.roleArn);\n\n    new cdk.CfnOutput(this, 'SparkRuntimeServerlessStackApplicationArn', {\n      value: runtimeServerless.application.attrArn,\n    });\n  }\n}","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.processing"},"field":{"field":"markdown","line":36}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.processing","@cdklabs/aws-data-solutions-framework.processing.SparkEmrServerlessRuntime","@cdklabs/aws-data-solutions-framework.processing.SparkEmrServerlessRuntime#application","@cdklabs/aws-data-solutions-framework.processing.SparkEmrServerlessRuntime#createExecutionRole","@cdklabs/aws-data-solutions-framework.processing.SparkEmrServerlessRuntime#grantStartExecution","@cdklabs/aws-data-solutions-framework.processing.SparkEmrServerlessRuntimeProps","aws-cdk-lib.CfnOutput","aws-cdk-lib.CfnOutputProps","aws-cdk-lib.Stack","aws-cdk-lib.aws_emrserverless.CfnApplication#attrArn","aws-cdk-lib.aws_iam.IPrincipal","aws-cdk-lib.aws_iam.IRole","aws-cdk-lib.aws_iam.IRole#roleArn","aws-cdk-lib.aws_iam.PolicyDocument","aws-cdk-lib.aws_iam.PolicyDocumentProps","aws-cdk-lib.aws_iam.PolicyStatement#fromJson","aws-cdk-lib.aws_iam.Role","aws-cdk-lib.aws_iam.RoleProps","aws-cdk-lib.aws_iam.ServicePrincipal","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { PolicyDocument, PolicyStatement, Role, ServicePrincipal } from 'aws-cdk-lib/aws-iam';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\n/// !show\nclass ExampleSparkEmrServerlessStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    \n    const runtimeServerless = new dsf.processing.SparkEmrServerlessRuntime(this, 'SparkRuntimeServerless', {\n      name: 'spark-serverless-demo',\n    });\n    \n    const s3ReadPolicyDocument = new PolicyDocument({\n      statements: [\n        PolicyStatement.fromJson({\n          actions: ['s3:GetObject'],\n          resources: ['arn:aws:s3:::bucket_name'],\n        }),\n      ],\n    });\n    \n    // The IAM role that will trigger the Job start and will monitor it\n    const jobTrigger = new Role(this, 'EMRServerlessExecutionRole', {\n      assumedBy: new ServicePrincipal('lambda.amazonaws.com'),\n    });\n    \n    const executionRole = dsf.processing.SparkEmrServerlessRuntime.createExecutionRole(this, 'EmrServerlessExecutionRole', s3ReadPolicyDocument);\n    \n    runtimeServerless.grantStartExecution(jobTrigger, executionRole.roleArn);\n    \n    new cdk.CfnOutput(this, 'SparkRuntimeServerlessStackApplicationArn', {\n      value: runtimeServerless.application.attrArn,\n    });\n  }\n}\n/// !hide\n\nconst app = new cdk.App();\nnew ExampleSparkEmrServerlessStack(app, 'ExampleSparkEmrServerlessStack');","syntaxKindCounter":{"11":8,"80":41,"108":1,"110":4,"154":1,"169":2,"176":1,"183":1,"209":3,"210":5,"211":12,"213":4,"214":5,"233":1,"241":1,"243":4,"244":3,"260":4,"261":4,"263":1,"298":1,"303":6},"fqnsFingerprint":"ea2a9f42286264e7bcc9bc25fef159c81543c91f661f3bf4ac2af93eb41b8d2b"},"fc9d2e941a50afe77fb53684dd543fa59f9ea650a80d20ea8e59f8c344b803ff":{"translations":{"python":{"source":"cdk.Stack):\nscope, id):\nsuper().__init__(scope, id)night_job = dsf.processing.SparkEmrServerlessJob(self, \"PiJob\",\n    application_id=runtime.application.attr_application_id,\n    name=\"PiCalculation\",\n    execution_role=execution_role,\n    execution_timeout=cdk.Duration.minutes(15),\n    s3_log_bucket=Bucket.from_bucket_name(self, \"LogBucket\", \"emr-job-logs-EXAMPLE\"),\n    s3_log_prefix=\"logs\",\n    spark_submit_entry_point=\"local:///usr/lib/spark/examples/src/main/python/pi.py\"\n)\n\nCfnOutput(self, \"job-state-machine\",\n    value=night_job.state_machine.state_machine_arn\n)","version":"2"},"csharp":{"source":"ExampleSparkJobEmrServerlessStack : Stack\n{\nConstruct scope, string id) : base(scope, id) var nightJob = new Processing.SparkEmrServerlessJob(this, \"PiJob\", new SparkEmrServerlessJobProps {\n    ApplicationId = runtime.Application.AttrApplicationId,\n    Name = \"PiCalculation\",\n    ExecutionRole = executionRole,\n    ExecutionTimeout = Duration.Minutes(15),\n    S3LogBucket = Bucket.FromBucketName(this, \"LogBucket\", \"emr-job-logs-EXAMPLE\"),\n    S3LogPrefix = \"logs\",\n    SparkSubmitEntryPoint = \"local:///usr/lib/spark/examples/src/main/python/pi.py\"\n});\n\nnew CfnOutput(this, \"job-state-machine\", new CfnOutputProps {\n    Value = nightJob.StateMachine.StateMachineArn\n});","version":"1"},"java":{"source":"ExampleSparkJobEmrServerlessStack extends Stack {\nExampleSparkJobEmrServerlessStack(Construct scope, String id)\nsuper(scope, id);SparkEmrServerlessJob nightJob = SparkEmrServerlessJob.Builder.create(this, \"PiJob\")\n        .applicationId(runtime.getApplication().getAttrApplicationId())\n        .name(\"PiCalculation\")\n        .executionRole(executionRole)\n        .executionTimeout(Duration.minutes(15))\n        .s3LogBucket(Bucket.fromBucketName(this, \"LogBucket\", \"emr-job-logs-EXAMPLE\"))\n        .s3LogPrefix(\"logs\")\n        .sparkSubmitEntryPoint(\"local:///usr/lib/spark/examples/src/main/python/pi.py\")\n        .build();\n\nCfnOutput.Builder.create(this, \"job-state-machine\")\n        .value(nightJob.getStateMachine().getStateMachineArn())\n        .build();","version":"1"},"go":{"source":"exampleSparkJobEmrServerlessStack struct {\nstack\n}\n\nscope construct, id *string) *exampleSparkJobEmrServerlessStack {\n\tthis := &exampleSparkJobEmrServerlessStack{}\ncdk.NewStack_Override(this, scope, id)\nnightJob := processing.NewSparkEmrServerlessJob(this, jsii.String(\"PiJob\"), &SparkEmrServerlessJobProps{\n\tApplicationId: runtime.Application.AttrApplicationId,\n\tName: jsii.String(\"PiCalculation\"),\n\tExecutionRole: executionRole,\n\tExecutionTimeout: cdk.Duration_Minutes(jsii.Number(15)),\n\tS3LogBucket: awscdk.Bucket_FromBucketName(this, jsii.String(\"LogBucket\"), jsii.String(\"emr-job-logs-EXAMPLE\")),\n\tS3LogPrefix: jsii.String(\"logs\"),\n\tSparkSubmitEntryPoint: jsii.String(\"local:///usr/lib/spark/examples/src/main/python/pi.py\"),\n})\n\nawscdk.NewCfnOutput(this, jsii.String(\"job-state-machine\"), &CfnOutputProps{\n\tValue: nightJob.StateMachine.StateMachineArn,\n})","version":"1"},"$":{"source":"class ExampleSparkJobEmrServerlessStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    const nightJob = new dsf.processing.SparkEmrServerlessJob(this, 'PiJob', {\n      applicationId: runtime.application.attrApplicationId,\n      name: 'PiCalculation',\n      executionRole: executionRole,\n      executionTimeout: cdk.Duration.minutes(15),\n      s3LogBucket: Bucket.fromBucketName(this, 'LogBucket', 'emr-job-logs-EXAMPLE'),\n      s3LogPrefix: 'logs',\n      sparkSubmitEntryPoint: 'local:///usr/lib/spark/examples/src/main/python/pi.py',\n    });\n\n    new CfnOutput(this, 'job-state-machine', {\n      value: nightJob.stateMachine!.stateMachineArn,\n    });","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.processing"},"field":{"field":"markdown","line":86}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.processing","@cdklabs/aws-data-solutions-framework.processing.SparkEmrServerlessJob","@cdklabs/aws-data-solutions-framework.processing.SparkEmrServerlessRuntime#application","@cdklabs/aws-data-solutions-framework.processing.SparkJob#stateMachine","aws-cdk-lib.CfnOutput","aws-cdk-lib.CfnOutputProps","aws-cdk-lib.Duration","aws-cdk-lib.Duration#minutes","aws-cdk-lib.Stack","aws-cdk-lib.aws_emrserverless.CfnApplication#attrApplicationId","aws-cdk-lib.aws_iam.IRole","aws-cdk-lib.aws_s3.Bucket#fromBucketName","aws-cdk-lib.aws_s3.IBucket","aws-cdk-lib.aws_stepfunctions.StateMachine#stateMachineArn","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { CfnOutput } from 'aws-cdk-lib';\nimport { PolicyDocument, PolicyStatement } from 'aws-cdk-lib/aws-iam';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\nimport { Bucket } from 'aws-cdk-lib/aws-s3';\n\n/// !show\nclass ExampleSparkJobEmrServerlessStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    /// !hide\n    const runtime = new dsf.processing.SparkEmrServerlessRuntime(this, 'SparkRuntime', {\n      name: 'mySparkRuntime',\n    });\n    \n    const s3ReadPolicy = new PolicyDocument({\n      statements: [\n        PolicyStatement.fromJson({\n          actions: ['s3:GetObject'],\n          resources: ['arn:aws:s3:::bucket_name', 'arn:aws:s3:::bucket_name/*'],\n        }),\n      ],\n    });\n    \n    const executionRole = dsf.processing.SparkEmrServerlessRuntime.createExecutionRole(this, 'EmrServerlessExecutionRole', s3ReadPolicy);\n    /// !show\n    const nightJob = new dsf.processing.SparkEmrServerlessJob(this, 'PiJob', {\n      applicationId: runtime.application.attrApplicationId,\n      name: 'PiCalculation',\n      executionRole: executionRole,\n      executionTimeout: cdk.Duration.minutes(15),\n      s3LogBucket: Bucket.fromBucketName(this, 'LogBucket', 'emr-job-logs-EXAMPLE'),\n      s3LogPrefix: 'logs',\n      sparkSubmitEntryPoint: 'local:///usr/lib/spark/examples/src/main/python/pi.py',\n    });\n    \n    new CfnOutput(this, 'job-state-machine', {\n      value: nightJob.stateMachine!.stateMachineArn,\n    });\n    /// !hide\n  }\n}\n\nconst app = new cdk.App();\nnew ExampleSparkJobEmrServerlessStack(app, 'ExampleSparkJobEmrServerlessStack');\n","syntaxKindCounter":{"9":1,"11":7,"80":33,"108":1,"110":3,"154":1,"169":2,"176":1,"183":1,"210":2,"211":10,"213":3,"214":2,"233":1,"235":1,"241":1,"243":1,"244":2,"260":1,"261":1,"263":1,"298":1,"303":8},"fqnsFingerprint":"16bc931e466c2edb5c36ad1e9e7b16824ba67680c2f3ae1de22a41a506f9632a"},"eca203983804c53ec155246b1adf41b1516fbf5e2514c9d77fe4055d6e6e97c8":{"translations":{"python":{"source":"dsf.processing.PySparkApplicationPackage(self, \"PySparkApplicationPackage\",\n    application_name=\"nightly-job-aggregation\",\n    entrypoint_path=\"./../spark/src/entrypoint.py\",\n    dependencies_folder=\"./../spark\",\n    venv_archive_path=\"/venv-package/pyspark-env.tar.gz\"\n)","version":"2"},"csharp":{"source":"new Processing.PySparkApplicationPackage(this, \"PySparkApplicationPackage\", new PySparkApplicationPackageProps {\n    ApplicationName = \"nightly-job-aggregation\",\n    EntrypointPath = \"./../spark/src/entrypoint.py\",\n    DependenciesFolder = \"./../spark\",\n    VenvArchivePath = \"/venv-package/pyspark-env.tar.gz\"\n});","version":"1"},"java":{"source":"PySparkApplicationPackage.Builder.create(this, \"PySparkApplicationPackage\")\n        .applicationName(\"nightly-job-aggregation\")\n        .entrypointPath(\"./../spark/src/entrypoint.py\")\n        .dependenciesFolder(\"./../spark\")\n        .venvArchivePath(\"/venv-package/pyspark-env.tar.gz\")\n        .build();","version":"1"},"go":{"source":"processing.NewPySparkApplicationPackage(this, jsii.String(\"PySparkApplicationPackage\"), &PySparkApplicationPackageProps{\n\tApplicationName: jsii.String(\"nightly-job-aggregation\"),\n\tEntrypointPath: jsii.String(\"./../spark/src/entrypoint.py\"),\n\tDependenciesFolder: jsii.String(\"./../spark\"),\n\tVenvArchivePath: jsii.String(\"/venv-package/pyspark-env.tar.gz\"),\n})","version":"1"},"$":{"source":"new dsf.processing.PySparkApplicationPackage(this, 'PySparkApplicationPackage', {\n  applicationName: 'nightly-job-aggregation',\n  entrypointPath: './../spark/src/entrypoint.py',\n  dependenciesFolder: './../spark',\n  venvArchivePath: '/venv-package/pyspark-env.tar.gz',\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.processing"},"field":{"field":"markdown","line":179}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.processing","@cdklabs/aws-data-solutions-framework.processing.PySparkApplicationPackage","@cdklabs/aws-data-solutions-framework.processing.PySparkApplicationPackageProps","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\nclass ExamplePySparkApplicationPackageStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    \n    /// !show\n    new dsf.processing.PySparkApplicationPackage(this, 'PySparkApplicationPackage', {\n      applicationName: 'nightly-job-aggregation',\n      entrypointPath: './../spark/src/entrypoint.py',\n      dependenciesFolder: './../spark',\n      venvArchivePath: '/venv-package/pyspark-env.tar.gz',\n    });\n    /// !hide\n  }\n}\n\nconst app = new cdk.App();\nnew ExamplePySparkApplicationPackageStack(app, 'ExamplePySparkApplicationPackageStack');\n","syntaxKindCounter":{"11":5,"80":7,"110":1,"210":1,"211":2,"214":1,"244":1,"303":4},"fqnsFingerprint":"90cc4b9210ade234045f2d9bc32719732e8e93a74fa67dfd6242048d741d570f"},"a874a91d640968b4beb1b5792b1fb16c4d9affd5acf01953949b344d070cf739":{"translations":{"python":{"source":"runtime = dsf.processing.SparkEmrServerlessRuntime(self, \"SparkRuntime\",\n    name=\"mySparkRuntime\"\n)application_package = dsf.processing.PySparkApplicationPackage(self, \"PySparkApplicationPackage\",\n    application_name=\"nightly-job-aggregation\",\n    entrypoint_path=\"./../spark/src/entrypoint.py\",\n    dependencies_folder=\"./../spark\",\n    venv_archive_path=\"/venv-package/pyspark-env.tar.gz\"\n)\n\ndsf.processing.SparkEmrServerlessJob(self, \"SparkNightlyJob\",\n    application_id=runtime.application.attr_application_id,\n    name=\"nightly_job\",\n    execution_role=execution_role,\n    execution_timeout=cdk.Duration.minutes(15),\n    s3_log_bucket=Bucket.from_bucket_arn(self, \"LogBucket\", \"emr-job-logs-EXAMPLE\"),\n    s3_log_prefix=\"logs\",\n    spark_submit_entry_point=application_package.entrypoint_uri,  # use the application package entrypoint\n    spark_submit_parameters=\"--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.driver.memory=2G --conf spark.executor.cores=2 {sparkEnvConf}\"\n)","version":"2"},"csharp":{"source":"var runtime = new Processing.SparkEmrServerlessRuntime(this, \"SparkRuntime\", new SparkEmrServerlessRuntimeProps {\n    Name = \"mySparkRuntime\"\n});var applicationPackage = new Processing.PySparkApplicationPackage(this, \"PySparkApplicationPackage\", new PySparkApplicationPackageProps {\n    ApplicationName = \"nightly-job-aggregation\",\n    EntrypointPath = \"./../spark/src/entrypoint.py\",\n    DependenciesFolder = \"./../spark\",\n    VenvArchivePath = \"/venv-package/pyspark-env.tar.gz\"\n});\n\nnew Processing.SparkEmrServerlessJob(this, \"SparkNightlyJob\", new SparkEmrServerlessJobProps {\n    ApplicationId = runtime.Application.AttrApplicationId,\n    Name = \"nightly_job\",\n    ExecutionRole = executionRole,\n    ExecutionTimeout = Duration.Minutes(15),\n    S3LogBucket = Bucket.FromBucketArn(this, \"LogBucket\", \"emr-job-logs-EXAMPLE\"),\n    S3LogPrefix = \"logs\",\n    SparkSubmitEntryPoint = applicationPackage.EntrypointUri,  // use the application package entrypoint\n    SparkSubmitParameters = \"--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.driver.memory=2G --conf spark.executor.cores=2 {sparkEnvConf}\"\n});","version":"1"},"java":{"source":"SparkEmrServerlessRuntime runtime = SparkEmrServerlessRuntime.Builder.create(this, \"SparkRuntime\")\n        .name(\"mySparkRuntime\")\n        .build();PySparkApplicationPackage applicationPackage = PySparkApplicationPackage.Builder.create(this, \"PySparkApplicationPackage\")\n        .applicationName(\"nightly-job-aggregation\")\n        .entrypointPath(\"./../spark/src/entrypoint.py\")\n        .dependenciesFolder(\"./../spark\")\n        .venvArchivePath(\"/venv-package/pyspark-env.tar.gz\")\n        .build();\n\nSparkEmrServerlessJob.Builder.create(this, \"SparkNightlyJob\")\n        .applicationId(runtime.getApplication().getAttrApplicationId())\n        .name(\"nightly_job\")\n        .executionRole(executionRole)\n        .executionTimeout(Duration.minutes(15))\n        .s3LogBucket(Bucket.fromBucketArn(this, \"LogBucket\", \"emr-job-logs-EXAMPLE\"))\n        .s3LogPrefix(\"logs\")\n        .sparkSubmitEntryPoint(applicationPackage.getEntrypointUri()) // use the application package entrypoint\n        .sparkSubmitParameters(\"--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.driver.memory=2G --conf spark.executor.cores=2 {sparkEnvConf}\")\n        .build();","version":"1"},"go":{"source":"runtime := processing.NewSparkEmrServerlessRuntime(this, jsii.String(\"SparkRuntime\"), &SparkEmrServerlessRuntimeProps{\n\tName: jsii.String(\"mySparkRuntime\"),\n})\napplicationPackage := processing.NewPySparkApplicationPackage(this, jsii.String(\"PySparkApplicationPackage\"), &PySparkApplicationPackageProps{\n\tApplicationName: jsii.String(\"nightly-job-aggregation\"),\n\tEntrypointPath: jsii.String(\"./../spark/src/entrypoint.py\"),\n\tDependenciesFolder: jsii.String(\"./../spark\"),\n\tVenvArchivePath: jsii.String(\"/venv-package/pyspark-env.tar.gz\"),\n})\n\nprocessing.NewSparkEmrServerlessJob(this, jsii.String(\"SparkNightlyJob\"), &SparkEmrServerlessJobProps{\n\tApplicationId: runtime.Application.AttrApplicationId,\n\tName: jsii.String(\"nightly_job\"),\n\tExecutionRole: executionRole,\n\tExecutionTimeout: cdk.Duration_Minutes(jsii.Number(15)),\n\tS3LogBucket: awscdk.Bucket_FromBucketArn(this, jsii.String(\"LogBucket\"), jsii.String(\"emr-job-logs-EXAMPLE\")),\n\tS3LogPrefix: jsii.String(\"logs\"),\n\tSparkSubmitEntryPoint: applicationPackage.EntrypointUri,\n\t // use the application package entrypoint\n\tSparkSubmitParameters: jsii.String(\"--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.driver.memory=2G --conf spark.executor.cores=2 {sparkEnvConf}\"),\n})","version":"1"},"$":{"source":"    const runtime = new dsf.processing.SparkEmrServerlessRuntime(this, 'SparkRuntime', {\n      name: 'mySparkRuntime',\n    });\n\n    const applicationPackage = new dsf.processing.PySparkApplicationPackage(this, 'PySparkApplicationPackage', {\n      applicationName: 'nightly-job-aggregation',\n      entrypointPath: './../spark/src/entrypoint.py',\n      dependenciesFolder: './../spark',\n      venvArchivePath: '/venv-package/pyspark-env.tar.gz',\n    });\n\n    new dsf.processing.SparkEmrServerlessJob(this, 'SparkNightlyJob', {\n      applicationId: runtime.application.attrApplicationId,\n      name: 'nightly_job',\n      executionRole: executionRole,\n      executionTimeout: cdk.Duration.minutes(15),\n      s3LogBucket: Bucket.fromBucketArn(this, 'LogBucket', 'emr-job-logs-EXAMPLE'),\n      s3LogPrefix: 'logs',\n      sparkSubmitEntryPoint: applicationPackage.entrypointUri, // use the application package entrypoint\n      sparkSubmitParameters: '--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.driver.memory=2G --conf spark.executor.cores=2 {sparkEnvConf}',\n    });","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.processing"},"field":{"field":"markdown","line":219}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.processing","@cdklabs/aws-data-solutions-framework.processing.PySparkApplicationPackage","@cdklabs/aws-data-solutions-framework.processing.PySparkApplicationPackage#entrypointUri","@cdklabs/aws-data-solutions-framework.processing.PySparkApplicationPackageProps","@cdklabs/aws-data-solutions-framework.processing.SparkEmrServerlessJob","@cdklabs/aws-data-solutions-framework.processing.SparkEmrServerlessRuntime","@cdklabs/aws-data-solutions-framework.processing.SparkEmrServerlessRuntime#application","@cdklabs/aws-data-solutions-framework.processing.SparkEmrServerlessRuntimeProps","aws-cdk-lib.Duration","aws-cdk-lib.Duration#minutes","aws-cdk-lib.aws_emrserverless.CfnApplication#attrApplicationId","aws-cdk-lib.aws_iam.IRole","aws-cdk-lib.aws_s3.Bucket#fromBucketArn","aws-cdk-lib.aws_s3.IBucket","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { PolicyDocument, PolicyStatement } from 'aws-cdk-lib/aws-iam';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\nimport { Bucket } from 'aws-cdk-lib/aws-s3';\n\nclass ExampleSparkJobEmrServerlessStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    /// !show\n    const runtime = new dsf.processing.SparkEmrServerlessRuntime(this, 'SparkRuntime', {\n      name: 'mySparkRuntime',\n    });\n    \n    /// !hide\n    const s3ReadPolicy = new PolicyDocument({\n      statements: [\n        PolicyStatement.fromJson({\n          actions: ['s3:GetObject'],\n          resources: ['arn:aws:s3:::bucket_name', 'arn:aws:s3:::bucket_name/*'],\n        }),\n      ],\n    });\n    const executionRole = dsf.processing.SparkEmrServerlessRuntime.createExecutionRole(this, 'EmrServerlessExecutionRole', s3ReadPolicy);\n    \n    /// !show\n    const applicationPackage = new dsf.processing.PySparkApplicationPackage(this, 'PySparkApplicationPackage', {\n      applicationName: 'nightly-job-aggregation',\n      entrypointPath: './../spark/src/entrypoint.py',\n      dependenciesFolder: './../spark',\n      venvArchivePath: '/venv-package/pyspark-env.tar.gz',\n    });\n    \n    new dsf.processing.SparkEmrServerlessJob(this, 'SparkNightlyJob', {\n      applicationId: runtime.application.attrApplicationId,\n      name: 'nightly_job',\n      executionRole: executionRole,\n      executionTimeout: cdk.Duration.minutes(15),\n      s3LogBucket: Bucket.fromBucketArn(this, 'LogBucket', 'emr-job-logs-EXAMPLE'),\n      s3LogPrefix: 'logs',\n      sparkSubmitEntryPoint: applicationPackage.entrypointUri, // use the application package entrypoint\n      sparkSubmitParameters: '--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.driver.memory=2G --conf spark.executor.cores=2 {sparkEnvConf}',\n    });\n    /// !hide\n  }\n}\n\nconst app = new cdk.App();\nnew ExampleSparkJobEmrServerlessStack(app, 'ExampleSparkJobEmrServerlessStack');\n","syntaxKindCounter":{"9":1,"11":13,"80":35,"110":4,"210":3,"211":12,"213":2,"214":3,"243":2,"244":1,"260":2,"261":2,"303":13},"fqnsFingerprint":"d351323e186153aaf1bc24d7d0c29a5f0b310d793c6f683ff0c6ea690bcd5c6d"},"d772b068ed97dc7c04e2ba6e5e07134f43f72cf57d8ca95c505fe02fd86ef0b8":{"translations":{"python":{"source":"class EmrApplicationStackFactory(dsf.utils.ApplicationStackFactory):\n    def create_stack(self, scope, stage):\n        return EmrApplicationStack(scope, \"EmrApplicationStack\", stage)\n\nclass EmrApplicationStack(cdk.Stack):\n    def __init__(self, scope, id, stage):\n        super().__init__(scope, id)\n\n        # DEFINE YOUR APPLICATION STACK HERE\n        # USE STAGE PARAMETER TO CUSTOMIZE THE STACK BEHAVIOR\n\n        if stage == dsf.utils.CICDStage.PROD:\n            pass","version":"2"},"csharp":{"source":"class EmrApplicationStackFactory : Utils.ApplicationStackFactory\n{\n    public Stack CreateStack(Construct scope, CICDStage stage)\n    {\n        return new EmrApplicationStack(scope, \"EmrApplicationStack\", stage);\n    }\n}\n\nclass EmrApplicationStack : Stack\n{\n    public EmrApplicationStack(Construct scope, string id, CICDStage stage) : base(scope, id)\n    {\n\n        // DEFINE YOUR APPLICATION STACK HERE\n        // USE STAGE PARAMETER TO CUSTOMIZE THE STACK BEHAVIOR\n\n        if (stage == Utils.CICDStage.PROD)\n        {\n        }\n    }\n}","version":"1"},"java":{"source":"public class EmrApplicationStackFactory extends ApplicationStackFactory {\n    public Stack createStack(Construct scope, CICDStage stage) {\n        return new EmrApplicationStack(scope, \"EmrApplicationStack\", stage);\n    }\n}\n\npublic class EmrApplicationStack extends Stack {\n    public EmrApplicationStack(Construct scope, String id, CICDStage stage) {\n        super(scope, id);\n\n        // DEFINE YOUR APPLICATION STACK HERE\n        // USE STAGE PARAMETER TO CUSTOMIZE THE STACK BEHAVIOR\n\n        if (stage == CICDStage.PROD) {\n        }\n    }\n}","version":"1"},"go":{"source":"type EmrApplicationStackFactory struct {\n\tapplicationStackFactory\n}\n\nfunc (this *EmrApplicationStackFactory) createStack(scope construct, stage cICDStage) stack {\n\treturn NewEmrApplicationStack(*scope, jsii.String(\"EmrApplicationStack\"), *stage)\n}\n\ntype EmrApplicationStack struct {\n\tstack\n}\n\nfunc NewEmrApplicationStack(scope construct, id *string, stage cICDStage) *EmrApplicationStack {\n\tthis := &EmrApplicationStack{}\n\tcdk.NewStack_Override(this, scope, id)\n\n\t// DEFINE YOUR APPLICATION STACK HERE\n\t// USE STAGE PARAMETER TO CUSTOMIZE THE STACK BEHAVIOR\n\n\tif *stage == utils.cICDStage_PROD() {}\n\treturn this\n}","version":"1"},"$":{"source":"export class EmrApplicationStackFactory extends dsf.utils.ApplicationStackFactory {\n  createStack(scope: Construct, stage: dsf.utils.CICDStage): cdk.Stack {\n    return new EmrApplicationStack(scope, 'EmrApplicationStack', stage);\n  }\n}\n\nexport class EmrApplicationStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, stage: dsf.utils.CICDStage) {\n    super(scope, id);\n\n    // DEFINE YOUR APPLICATION STACK HERE\n    // USE STAGE PARAMETER TO CUSTOMIZE THE STACK BEHAVIOR\n\n    if (stage == dsf.utils.CICDStage.PROD) {\n      // prod only\n    }\n  }\n}","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.processing"},"field":{"field":"markdown","line":334}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.utils","@cdklabs/aws-data-solutions-framework.utils.CICDStage","@cdklabs/aws-data-solutions-framework.utils.CICDStage#PROD","aws-cdk-lib.Stack","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\n/// !show\nexport class EmrApplicationStackFactory extends dsf.utils.ApplicationStackFactory {\n  createStack(scope: Construct, stage: dsf.utils.CICDStage): cdk.Stack {\n    return new EmrApplicationStack(scope, 'EmrApplicationStack', stage);\n  }\n}\n\nexport class EmrApplicationStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, stage: dsf.utils.CICDStage) {\n    super(scope, id);\n    \n    // DEFINE YOUR APPLICATION STACK HERE\n    // USE STAGE PARAMETER TO CUSTOMIZE THE STACK BEHAVIOR\n    \n    if (stage == dsf.utils.CICDStage.PROD) {\n      // prod only\n    }\n  }\n}\n/// !hide","syntaxKindCounter":{"11":1,"35":1,"80":33,"95":2,"108":1,"154":1,"166":5,"169":5,"174":1,"176":1,"183":5,"211":6,"213":1,"214":1,"226":1,"233":2,"241":3,"244":1,"245":1,"253":1,"263":2,"298":2},"fqnsFingerprint":"99e5b2706442f4f0c364ab1a018eca17150ee9970c9c89efb756747da7ea2425"},"3d39428ed690e175549408befe46798f74a4db79deb26f0a1e12cc8bc9ba65da":{"translations":{"python":{"source":"class CICDPipelineStack(cdk.Stack):\n    def __init__(self, scope, id):\n        super().__init__(scope, id)\n        dsf.processing.SparkEmrCICDPipeline(self, \"SparkCICDPipeline\",\n            spark_application_name=\"SparkTest\",\n            application_stack_factory=EmrApplicationStackFactory(),\n            source=CodePipelineSource.connection(\"owner/weekly-job\", \"mainline\",\n                connection_arn=\"arn:aws:codeconnections:eu-west-1:123456789012:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f\"\n            )\n        )","version":"2"},"csharp":{"source":"class CICDPipelineStack : Stack\n{\n    public CICDPipelineStack(Construct scope, string id) : base(scope, id)\n    {\n        new Processing.SparkEmrCICDPipeline(this, \"SparkCICDPipeline\", new SparkEmrCICDPipelineProps {\n            SparkApplicationName = \"SparkTest\",\n            ApplicationStackFactory = new EmrApplicationStackFactory(),\n            Source = CodePipelineSource.Connection(\"owner/weekly-job\", \"mainline\", new ConnectionSourceOptions {\n                ConnectionArn = \"arn:aws:codeconnections:eu-west-1:123456789012:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f\"\n            })\n        });\n    }\n}","version":"1"},"java":{"source":"public class CICDPipelineStack extends Stack {\n    public CICDPipelineStack(Construct scope, String id) {\n        super(scope, id);\n        SparkEmrCICDPipeline.Builder.create(this, \"SparkCICDPipeline\")\n                .sparkApplicationName(\"SparkTest\")\n                .applicationStackFactory(new EmrApplicationStackFactory())\n                .source(CodePipelineSource.connection(\"owner/weekly-job\", \"mainline\", ConnectionSourceOptions.builder()\n                        .connectionArn(\"arn:aws:codeconnections:eu-west-1:123456789012:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f\")\n                        .build()))\n                .build();\n    }\n}","version":"1"},"go":{"source":"type CICDPipelineStack struct {\n\tstack\n}\n\nfunc NewCICDPipelineStack(scope construct, id *string) *CICDPipelineStack {\n\tthis := &CICDPipelineStack{}\n\tcdk.NewStack_Override(this, scope, id)\n\tprocessing.NewSparkEmrCICDPipeline(this, jsii.String(\"SparkCICDPipeline\"), &SparkEmrCICDPipelineProps{\n\t\tSparkApplicationName: jsii.String(\"SparkTest\"),\n\t\tApplicationStackFactory: cicdapplicationstacklit.NewEmrApplicationStackFactory(),\n\t\tSource: awscdk.CodePipelineSource_Connection(jsii.String(\"owner/weekly-job\"), jsii.String(\"mainline\"), &ConnectionSourceOptions{\n\t\t\tConnectionArn: jsii.String(\"arn:aws:codeconnections:eu-west-1:123456789012:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f\"),\n\t\t}),\n\t})\n\treturn this\n}","version":"1"},"$":{"source":"export class CICDPipelineStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    new dsf.processing.SparkEmrCICDPipeline(this, 'SparkCICDPipeline', {\n      sparkApplicationName: 'SparkTest',\n      applicationStackFactory: new EmrApplicationStackFactory(),\n      source: CodePipelineSource.connection('owner/weekly-job', 'mainline', {\n        connectionArn: 'arn:aws:codeconnections:eu-west-1:123456789012:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f'\n      }),\n    });\n  }\n}","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.processing"},"field":{"field":"markdown","line":357}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.processing","@cdklabs/aws-data-solutions-framework.processing.SparkEmrCICDPipeline","@cdklabs/aws-data-solutions-framework.processing.SparkEmrCICDPipelineProps","@cdklabs/aws-data-solutions-framework.utils.ApplicationStackFactory","aws-cdk-lib.Stack","aws-cdk-lib.pipelines.CodePipelineSource","aws-cdk-lib.pipelines.CodePipelineSource#connection","aws-cdk-lib.pipelines.ConnectionSourceOptions","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { EmrApplicationStackFactory } from './cicd-application-stack.lit';\nimport * as dsf from '../../index';\nimport { CodePipelineSource } from 'aws-cdk-lib/pipelines';\n\n/// !show\nexport class CICDPipelineStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    new dsf.processing.SparkEmrCICDPipeline(this, 'SparkCICDPipeline', {\n      sparkApplicationName: 'SparkTest',\n      applicationStackFactory: new EmrApplicationStackFactory(),\n      source: CodePipelineSource.connection('owner/weekly-job', 'mainline', {\n        connectionArn: 'arn:aws:codeconnections:eu-west-1:123456789012:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f'\n      }),\n    });\n  }\n}\n/// !hide\n\nconst app = new cdk.App();\nnew CICDPipelineStack(app, 'CICDPipelineStack');","syntaxKindCounter":{"11":5,"80":18,"95":1,"108":1,"110":1,"154":1,"169":2,"176":1,"183":1,"210":2,"211":4,"213":2,"214":2,"233":1,"241":1,"244":2,"263":1,"298":1,"303":4},"fqnsFingerprint":"af6ff98ae0911bc2ce8eb7b6d0841c00e0ab9c0adb3453f3d43ed069b0a1a451"},"4b85ea0a15ae08068ce9d10c8c3b15bbe89de4fb13bd79d54e8c1e74591a2a87":{"translations":{"python":{"source":"class EmrApplicationStack(cdk.Stack):\n    def __init__(self, scope, id, _stage):\n        super().__init__(scope, id)\n\n        processing_state_machine = StateMachine(self, \"ProcessingStateMachine\")\n\n        cdk.CfnOutput(self, \"ProcessingStateMachineArn\",\n            value=processing_state_machine.state_machine_arn\n        )","version":"2"},"csharp":{"source":"class EmrApplicationStack : Stack\n{\n    public EmrApplicationStack(Construct scope, string id, CICDStage _stage) : base(scope, id)\n    {\n\n        var processingStateMachine = new StateMachine(this, \"ProcessingStateMachine\", new StateMachineProps { });\n\n        new CfnOutput(this, \"ProcessingStateMachineArn\", new CfnOutputProps {\n            Value = processingStateMachine.StateMachineArn\n        });\n    }\n}","version":"1"},"java":{"source":"public class EmrApplicationStack extends Stack {\n    public EmrApplicationStack(Construct scope, String id, CICDStage _stage) {\n        super(scope, id);\n\n        StateMachine processingStateMachine = StateMachine.Builder.create(this, \"ProcessingStateMachine\").build();\n\n        CfnOutput.Builder.create(this, \"ProcessingStateMachineArn\")\n                .value(processingStateMachine.getStateMachineArn())\n                .build();\n    }\n}","version":"1"},"go":{"source":"type EmrApplicationStack struct {\n\tstack\n}\n\nfunc NewEmrApplicationStack(scope construct, id *string, _stage cICDStage) *EmrApplicationStack {\n\tthis := &EmrApplicationStack{}\n\tcdk.NewStack_Override(this, scope, id)\n\n\tprocessingStateMachine := awscdk.NewStateMachine(this, jsii.String(\"ProcessingStateMachine\"), &StateMachineProps{\n\t})\n\n\tcdk.NewCfnOutput(this, jsii.String(\"ProcessingStateMachineArn\"), &CfnOutputProps{\n\t\tValue: processingStateMachine.StateMachineArn,\n\t})\n\treturn this\n}","version":"1"},"$":{"source":"export class EmrApplicationStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, _stage: dsf.utils.CICDStage) {\n    super(scope, id);\n\n    const processingStateMachine = new StateMachine(this, 'ProcessingStateMachine', {\n      // definition ...\n    });\n\n    new cdk.CfnOutput(this, 'ProcessingStateMachineArn', {\n      value: processingStateMachine.stateMachineArn,\n    });\n  }\n}","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.processing"},"field":{"field":"markdown","line":423}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.CfnOutput","aws-cdk-lib.CfnOutputProps","aws-cdk-lib.Stack","aws-cdk-lib.aws_stepfunctions.StateMachine","aws-cdk-lib.aws_stepfunctions.StateMachine#stateMachineArn","aws-cdk-lib.aws_stepfunctions.StateMachineProps","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { StateMachine } from 'aws-cdk-lib/aws-stepfunctions';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\n/// !show\nexport class EmrApplicationStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, _stage: dsf.utils.CICDStage) {\n    super(scope, id);\n    \n    const processingStateMachine = new StateMachine(this, 'ProcessingStateMachine', {\n      // definition ...\n    });\n    \n    new cdk.CfnOutput(this, 'ProcessingStateMachineArn', {\n      value: processingStateMachine.stateMachineArn,\n    });\n  }\n}\n/// !hide\n","syntaxKindCounter":{"11":2,"80":19,"95":1,"108":1,"110":2,"154":1,"166":2,"169":3,"176":1,"183":2,"210":2,"211":3,"213":1,"214":2,"233":1,"241":1,"243":1,"244":2,"260":1,"261":1,"263":1,"298":1,"303":1},"fqnsFingerprint":"57e70b1e5ce714af1edc86fd3d6dcacaedeb990fd7b2ee54ceb2ea2034d894b5"},"b9f90d452d8f8aa70f80f2fb2e468a4c22dd85a10969161ab9df671add1dd6f5":{"translations":{"python":{"source":"dsf.processing.SparkEmrCICDPipeline(self, \"SparkCICDPipeline\",\n    spark_application_name=\"SparkTest\",\n    application_stack_factory=EmrApplicationStackFactory(),\n    integ_test_script=\"spark/integ.sh\",\n    integ_test_env={\n        \"STEP_FUNCTION_ARN\": \"ProcessingStateMachineArn\"\n    },\n    integ_test_permissions=[\n        PolicyStatement(\n            actions=[\"states:StartExecution\", \"states:DescribeExecution\"\n            ],\n            resources=[\"*\"]\n        )\n    ],\n    source=CodePipelineSource.connection(\"owner/weekly-job\", \"mainline\",\n        connection_arn=\"arn:aws:codeconnections:eu-west-1:123456789012:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f\"\n    )\n)","version":"2"},"csharp":{"source":"new Processing.SparkEmrCICDPipeline(this, \"SparkCICDPipeline\", new SparkEmrCICDPipelineProps {\n    SparkApplicationName = \"SparkTest\",\n    ApplicationStackFactory = new EmrApplicationStackFactory(),\n    IntegTestScript = \"spark/integ.sh\",\n    IntegTestEnv = new Dictionary<string, string> {\n        { \"STEP_FUNCTION_ARN\", \"ProcessingStateMachineArn\" }\n    },\n    IntegTestPermissions = new [] {\n        new PolicyStatement(new PolicyStatementProps {\n            Actions = new [] { \"states:StartExecution\", \"states:DescribeExecution\" },\n            Resources = new [] { \"*\" }\n        }) },\n    Source = CodePipelineSource.Connection(\"owner/weekly-job\", \"mainline\", new ConnectionSourceOptions {\n        ConnectionArn = \"arn:aws:codeconnections:eu-west-1:123456789012:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f\"\n    })\n});","version":"1"},"java":{"source":"SparkEmrCICDPipeline.Builder.create(this, \"SparkCICDPipeline\")\n        .sparkApplicationName(\"SparkTest\")\n        .applicationStackFactory(new EmrApplicationStackFactory())\n        .integTestScript(\"spark/integ.sh\")\n        .integTestEnv(Map.of(\n                \"STEP_FUNCTION_ARN\", \"ProcessingStateMachineArn\"))\n        .integTestPermissions(List.of(\n            PolicyStatement.Builder.create()\n                    .actions(List.of(\"states:StartExecution\", \"states:DescribeExecution\"))\n                    .resources(List.of(\"*\"))\n                    .build()))\n        .source(CodePipelineSource.connection(\"owner/weekly-job\", \"mainline\", ConnectionSourceOptions.builder()\n                .connectionArn(\"arn:aws:codeconnections:eu-west-1:123456789012:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f\")\n                .build()))\n        .build();","version":"1"},"go":{"source":"processing.NewSparkEmrCICDPipeline(this, jsii.String(\"SparkCICDPipeline\"), &SparkEmrCICDPipelineProps{\n\tSparkApplicationName: jsii.String(\"SparkTest\"),\n\tApplicationStackFactory: cicdapplicationstacklit.NewEmrApplicationStackFactory(),\n\tIntegTestScript: jsii.String(\"spark/integ.sh\"),\n\tIntegTestEnv: map[string]*string{\n\t\t\"STEP_FUNCTION_ARN\": jsii.String(\"ProcessingStateMachineArn\"),\n\t},\n\tIntegTestPermissions: []policyStatement{\n\t\tawscdk.NewPolicyStatement(&PolicyStatementProps{\n\t\t\tActions: []*string{\n\t\t\t\tjsii.String(\"states:StartExecution\"),\n\t\t\t\tjsii.String(\"states:DescribeExecution\"),\n\t\t\t},\n\t\t\tResources: []*string{\n\t\t\t\tjsii.String(\"*\"),\n\t\t\t},\n\t\t}),\n\t},\n\tSource: awscdk.CodePipelineSource_Connection(jsii.String(\"owner/weekly-job\"), jsii.String(\"mainline\"), &ConnectionSourceOptions{\n\t\tConnectionArn: jsii.String(\"arn:aws:codeconnections:eu-west-1:123456789012:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f\"),\n\t}),\n})","version":"1"},"$":{"source":"new dsf.processing.SparkEmrCICDPipeline(this, 'SparkCICDPipeline', {\n  sparkApplicationName: 'SparkTest',\n  applicationStackFactory: new EmrApplicationStackFactory(),\n  integTestScript: 'spark/integ.sh',\n  integTestEnv: {\n    STEP_FUNCTION_ARN: 'ProcessingStateMachineArn',\n  },\n  integTestPermissions: [\n    new PolicyStatement({\n      actions: [\n        'states:StartExecution',\n        'states:DescribeExecution',\n      ],\n      resources: ['*'],\n    }),\n  ],\n  source: CodePipelineSource.connection('owner/weekly-job', 'mainline', {\n    connectionArn: 'arn:aws:codeconnections:eu-west-1:123456789012:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f'\n  })\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.processing"},"field":{"field":"markdown","line":444}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.processing","@cdklabs/aws-data-solutions-framework.processing.SparkEmrCICDPipeline","@cdklabs/aws-data-solutions-framework.processing.SparkEmrCICDPipelineProps","@cdklabs/aws-data-solutions-framework.utils.ApplicationStackFactory","aws-cdk-lib.aws_iam.PolicyStatement","aws-cdk-lib.aws_iam.PolicyStatementProps","aws-cdk-lib.pipelines.CodePipelineSource","aws-cdk-lib.pipelines.CodePipelineSource#connection","aws-cdk-lib.pipelines.ConnectionSourceOptions","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { PolicyStatement } from 'aws-cdk-lib/aws-iam';\nimport { Construct } from 'constructs';\nimport { EmrApplicationStackFactory } from './cicd-application-stack.lit';\nimport * as dsf from '../../index';\nimport { CodePipelineSource } from 'aws-cdk-lib/pipelines';\n\nexport class CICDPipelineStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    /// !show\n    new dsf.processing.SparkEmrCICDPipeline(this, 'SparkCICDPipeline', {\n      sparkApplicationName: 'SparkTest',\n      applicationStackFactory: new EmrApplicationStackFactory(),\n      integTestScript: 'spark/integ.sh',\n      integTestEnv: {\n        STEP_FUNCTION_ARN: 'ProcessingStateMachineArn',\n      },\n      integTestPermissions: [\n        new PolicyStatement({\n          actions: [\n            'states:StartExecution',\n            'states:DescribeExecution',\n          ],\n          resources: ['*'],\n        }),\n      ],\n      source: CodePipelineSource.connection('owner/weekly-job', 'mainline', {\n        connectionArn: 'arn:aws:codeconnections:eu-west-1:123456789012:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f'\n      })\n    });\n    /// !hide\n  }\n}\n\nconst app = new cdk.App();\nnew CICDPipelineStack(app, 'CICDPipelineStack');\n","syntaxKindCounter":{"11":10,"80":17,"110":1,"209":3,"210":4,"211":3,"213":1,"214":3,"244":1,"303":10},"fqnsFingerprint":"b2dd064cb95b60dbfd62791b88d773ead77a0816c6655ca3bcd0dac202a6cc63"},"d84abbade004e700066854ee1ea70d4f2142676f0bc7d1bdafe1cfcfb6583516":{"translations":{"python":{"source":"class ExampleSparkEmrContainersStack(cdk.Stack):\n    def __init__(self, scope, id):\n        super().__init__(scope, id)\n\n        # Layer must be changed according to the Kubernetes version used\n        kubectl_layer = KubectlV30Layer(self, \"kubectlLayer\")\n\n        emr_eks_cluster = SparkEmrContainersRuntime.get_or_create(self,\n            eks_admin_role=Role.from_role_arn(self, \"EksAdminRole\", \"arn:aws:iam::12345678912:role/role-name-with-path\"),\n            public_access_cIDRs=[\"10.0.0.0/32\"],  # The list of public IP addresses from which the cluster can be accessible\n            create_emr_on_eks_service_linked_role=True,  # if the the service linked role already exists set this to false\n            kubectl_lambda_layer=kubectl_layer\n        )\n\n        s3_read = PolicyDocument(\n            statements=[PolicyStatement(\n                actions=[\"s3:GetObject\"\n                ],\n                resources=[\"arn:aws:s3:::aws-data-analytics-workshops\", \"arn:aws:s3:::aws-data-analytics-workshops/*\"\n                ]\n            )]\n        )\n\n        s3_read_policy = ManagedPolicy(self, \"s3ReadPolicy\",\n            document=s3_read\n        )\n\n        virtual_cluster = emr_eks_cluster.add_emr_virtual_cluster(self,\n            name=\"dailyjob\",\n            create_namespace=True,\n            eks_namespace=\"dailyjobns\"\n        )\n\n        exec_role = emr_eks_cluster.create_execution_role(self, \"ExecRole\", s3_read_policy, \"dailyjobns\", \"s3ReadExecRole\") # the IAM role name\n\n        cdk.CfnOutput(self, \"virtualClusterArn\",\n            value=virtual_cluster.attr_arn\n        )\n\n        cdk.CfnOutput(self, \"execRoleArn\",\n            value=exec_role.role_arn\n        )\n\n        # Driver pod template\n        cdk.CfnOutput(self, \"driverPodTemplate\",\n            value=emr_eks_cluster.pod_template_s3_location_critical_driver\n        )\n\n        # Executor pod template\n        cdk.CfnOutput(self, \"executorPodTemplate\",\n            value=emr_eks_cluster.pod_template_s3_location_critical_executor\n        )","version":"2"},"csharp":{"source":"class ExampleSparkEmrContainersStack : Stack\n{\n    public ExampleSparkEmrContainersStack(Construct scope, string id) : base(scope, id)\n    {\n\n        //Layer must be changed according to the Kubernetes version used\n        var kubectlLayer = new KubectlV30Layer(this, \"kubectlLayer\");\n\n        var emrEksCluster = SparkEmrContainersRuntime.GetOrCreate(this, new SparkEmrContainersRuntimeProps {\n            EksAdminRole = Role.FromRoleArn(this, \"EksAdminRole\", \"arn:aws:iam::12345678912:role/role-name-with-path\"),\n            PublicAccessCIDRs = new [] { \"10.0.0.0/32\" },  // The list of public IP addresses from which the cluster can be accessible\n            CreateEmrOnEksServiceLinkedRole = true,  //if the the service linked role already exists set this to false\n            KubectlLambdaLayer = kubectlLayer\n        });\n\n        var s3Read = new PolicyDocument(new PolicyDocumentProps {\n            Statements = new [] { new PolicyStatement(new PolicyStatementProps {\n                Actions = new [] { \"s3:GetObject\" },\n                Resources = new [] { \"arn:aws:s3:::aws-data-analytics-workshops\", \"arn:aws:s3:::aws-data-analytics-workshops/*\" }\n            }) }\n        });\n\n        var s3ReadPolicy = new ManagedPolicy(this, \"s3ReadPolicy\", new ManagedPolicyProps {\n            Document = s3Read\n        });\n\n        var virtualCluster = emrEksCluster.AddEmrVirtualCluster(this, new EmrVirtualClusterProps {\n            Name = \"dailyjob\",\n            CreateNamespace = true,\n            EksNamespace = \"dailyjobns\"\n        });\n\n        var execRole = emrEksCluster.CreateExecutionRole(this, \"ExecRole\", s3ReadPolicy, \"dailyjobns\", \"s3ReadExecRole\"); //the IAM role name\n\n         //the IAM role name\n        new CfnOutput(this, \"virtualClusterArn\", new CfnOutputProps {\n            Value = virtualCluster.AttrArn\n        });\n\n        new CfnOutput(this, \"execRoleArn\", new CfnOutputProps {\n            Value = execRole.RoleArn\n        });\n\n        //Driver pod template\n        //Driver pod template\n        new CfnOutput(this, \"driverPodTemplate\", new CfnOutputProps {\n            Value = emrEksCluster.PodTemplateS3LocationCriticalDriver\n        });\n\n        //Executor pod template\n        //Executor pod template\n        new CfnOutput(this, \"executorPodTemplate\", new CfnOutputProps {\n            Value = emrEksCluster.PodTemplateS3LocationCriticalExecutor\n        });\n    }\n}","version":"1"},"java":{"source":"public class ExampleSparkEmrContainersStack extends Stack {\n    public ExampleSparkEmrContainersStack(Construct scope, String id) {\n        super(scope, id);\n\n        //Layer must be changed according to the Kubernetes version used\n        KubectlV30Layer kubectlLayer = new KubectlV30Layer(this, \"kubectlLayer\");\n\n        SparkEmrContainersRuntime emrEksCluster = SparkEmrContainersRuntime.getOrCreate(this, SparkEmrContainersRuntimeProps.builder()\n                .eksAdminRole(Role.fromRoleArn(this, \"EksAdminRole\", \"arn:aws:iam::12345678912:role/role-name-with-path\"))\n                .publicAccessCIDRs(List.of(\"10.0.0.0/32\")) // The list of public IP addresses from which the cluster can be accessible\n                .createEmrOnEksServiceLinkedRole(true) //if the the service linked role already exists set this to false\n                .kubectlLambdaLayer(kubectlLayer)\n                .build());\n\n        PolicyDocument s3Read = PolicyDocument.Builder.create()\n                .statements(List.of(PolicyStatement.Builder.create()\n                        .actions(List.of(\"s3:GetObject\"))\n                        .resources(List.of(\"arn:aws:s3:::aws-data-analytics-workshops\", \"arn:aws:s3:::aws-data-analytics-workshops/*\"))\n                        .build()))\n                .build();\n\n        ManagedPolicy s3ReadPolicy = ManagedPolicy.Builder.create(this, \"s3ReadPolicy\")\n                .document(s3Read)\n                .build();\n\n        CfnVirtualCluster virtualCluster = emrEksCluster.addEmrVirtualCluster(this, EmrVirtualClusterProps.builder()\n                .name(\"dailyjob\")\n                .createNamespace(true)\n                .eksNamespace(\"dailyjobns\")\n                .build());\n\n        Role execRole = emrEksCluster.createExecutionRole(this, \"ExecRole\", s3ReadPolicy, \"dailyjobns\", \"s3ReadExecRole\"); //the IAM role name\n\n         //the IAM role name\n        CfnOutput.Builder.create(this, \"virtualClusterArn\")\n                .value(virtualCluster.getAttrArn())\n                .build();\n\n        CfnOutput.Builder.create(this, \"execRoleArn\")\n                .value(execRole.getRoleArn())\n                .build();\n\n        //Driver pod template\n        //Driver pod template\n        CfnOutput.Builder.create(this, \"driverPodTemplate\")\n                .value(emrEksCluster.getPodTemplateS3LocationCriticalDriver())\n                .build();\n\n        //Executor pod template\n        //Executor pod template\n        CfnOutput.Builder.create(this, \"executorPodTemplate\")\n                .value(emrEksCluster.getPodTemplateS3LocationCriticalExecutor())\n                .build();\n    }\n}","version":"1"},"go":{"source":"type exampleSparkEmrContainersStack struct {\n\tstack\n}\n\nfunc newExampleSparkEmrContainersStack(scope construct, id *string) *exampleSparkEmrContainersStack {\n\tthis := &exampleSparkEmrContainersStack{}\n\tcdk.NewStack_Override(this, scope, id)\n\n\t//Layer must be changed according to the Kubernetes version used\n\tkubectlLayer := kubectlv30.NewKubectlV30Layer(this, jsii.String(\"kubectlLayer\"))\n\n\temrEksCluster := lib.SparkEmrContainersRuntime_GetOrCreate(this, &SparkEmrContainersRuntimeProps{\n\t\tEksAdminRole: awscdk.Role_FromRoleArn(this, jsii.String(\"EksAdminRole\"), jsii.String(\"arn:aws:iam::12345678912:role/role-name-with-path\")),\n\t\tPublicAccessCIDRs: []*string{\n\t\t\tjsii.String(\"10.0.0.0/32\"),\n\t\t},\n\t\t // The list of public IP addresses from which the cluster can be accessible\n\t\tCreateEmrOnEksServiceLinkedRole: jsii.Boolean(true),\n\t\t //if the the service linked role already exists set this to false\n\t\tKubectlLambdaLayer: kubectlLayer,\n\t})\n\n\ts3Read := awscdk.NewPolicyDocument(&PolicyDocumentProps{\n\t\tStatements: []policyStatement{\n\t\t\tawscdk.NewPolicyStatement(&PolicyStatementProps{\n\t\t\t\tActions: []*string{\n\t\t\t\t\tjsii.String(\"s3:GetObject\"),\n\t\t\t\t},\n\t\t\t\tResources: []*string{\n\t\t\t\t\tjsii.String(\"arn:aws:s3:::aws-data-analytics-workshops\"),\n\t\t\t\t\tjsii.String(\"arn:aws:s3:::aws-data-analytics-workshops/*\"),\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t})\n\n\ts3ReadPolicy := awscdk.NewManagedPolicy(this, jsii.String(\"s3ReadPolicy\"), &ManagedPolicyProps{\n\t\tDocument: s3Read,\n\t})\n\n\tvirtualCluster := emrEksCluster.AddEmrVirtualCluster(this, &EmrVirtualClusterProps{\n\t\tName: jsii.String(\"dailyjob\"),\n\t\tCreateNamespace: jsii.Boolean(true),\n\t\tEksNamespace: jsii.String(\"dailyjobns\"),\n\t})\n\n\texecRole := emrEksCluster.CreateExecutionRole(this, jsii.String(\"ExecRole\"), s3ReadPolicy, jsii.String(\"dailyjobns\"), jsii.String(\"s3ReadExecRole\")) //the IAM role name\n\n\t //the IAM role name\n\tcdk.NewCfnOutput(this, jsii.String(\"virtualClusterArn\"), &CfnOutputProps{\n\t\tValue: virtualCluster.AttrArn,\n\t})\n\n\tcdk.NewCfnOutput(this, jsii.String(\"execRoleArn\"), &CfnOutputProps{\n\t\tValue: execRole.RoleArn,\n\t})\n\n\t//Driver pod template\n\t//Driver pod template\n\tcdk.NewCfnOutput(this, jsii.String(\"driverPodTemplate\"), &CfnOutputProps{\n\t\tValue: emrEksCluster.PodTemplateS3LocationCriticalDriver,\n\t})\n\n\t//Executor pod template\n\t//Executor pod template\n\tcdk.NewCfnOutput(this, jsii.String(\"executorPodTemplate\"), &CfnOutputProps{\n\t\tValue: emrEksCluster.PodTemplateS3LocationCriticalExecutor,\n\t})\n\treturn this\n}","version":"1"},"$":{"source":"class ExampleSparkEmrContainersStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    //Layer must be changed according to the Kubernetes version used\n    const kubectlLayer = new KubectlV30Layer(this, 'kubectlLayer');\n\n    const emrEksCluster = SparkEmrContainersRuntime.getOrCreate(this, {\n      eksAdminRole: Role.fromRoleArn(this, 'EksAdminRole' , 'arn:aws:iam::12345678912:role/role-name-with-path'),\n      publicAccessCIDRs: ['10.0.0.0/32'], // The list of public IP addresses from which the cluster can be accessible\n      createEmrOnEksServiceLinkedRole: true, //if the the service linked role already exists set this to false\n      kubectlLambdaLayer: kubectlLayer,\n    });\n\n    const s3Read = new PolicyDocument({\n      statements: [new PolicyStatement({\n        actions: [\n          's3:GetObject',\n        ],\n        resources: [\n          'arn:aws:s3:::aws-data-analytics-workshops',\n          'arn:aws:s3:::aws-data-analytics-workshops/*'],\n        })],\n      });\n\n      const s3ReadPolicy = new ManagedPolicy(this, 's3ReadPolicy', {\n        document: s3Read,\n      });\n\n      const virtualCluster = emrEksCluster.addEmrVirtualCluster(this, {\n        name: 'dailyjob',\n        createNamespace: true,\n        eksNamespace: 'dailyjobns',\n      });\n\n      const execRole = emrEksCluster.createExecutionRole(\n        this,\n        'ExecRole',\n        s3ReadPolicy,\n        'dailyjobns', // the namespace of the virtual cluster\n        's3ReadExecRole'); //the IAM role name\n\n        new cdk.CfnOutput(this, 'virtualClusterArn', {\n          value: virtualCluster.attrArn,\n        });\n\n        new cdk.CfnOutput(this, 'execRoleArn', {\n          value: execRole.roleArn,\n        });\n\n        //Driver pod template\n        new cdk.CfnOutput(this, 'driverPodTemplate', {\n          value: emrEksCluster.podTemplateS3LocationCriticalDriver!,\n        });\n\n        //Executor pod template\n        new cdk.CfnOutput(this, 'executorPodTemplate', {\n          value: emrEksCluster.podTemplateS3LocationCriticalExecutor!,\n        });\n\n      }\n    }","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.processing"},"field":{"field":"markdown","line":490}},"didCompile":true,"fqnsReferenced":["@aws-cdk/lambda-layer-kubectl-v30.KubectlV30Layer","@cdklabs/aws-data-solutions-framework.processing.EmrVirtualClusterProps","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntime","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntime#addEmrVirtualCluster","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntime#createExecutionRole","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntime#getOrCreate","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntime#podTemplateS3LocationCriticalDriver","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntime#podTemplateS3LocationCriticalExecutor","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntimeProps","aws-cdk-lib.CfnOutput","aws-cdk-lib.CfnOutputProps","aws-cdk-lib.Stack","aws-cdk-lib.aws_emrcontainers.CfnVirtualCluster","aws-cdk-lib.aws_emrcontainers.CfnVirtualCluster#attrArn","aws-cdk-lib.aws_iam.IManagedPolicy","aws-cdk-lib.aws_iam.IRole","aws-cdk-lib.aws_iam.ManagedPolicy","aws-cdk-lib.aws_iam.ManagedPolicyProps","aws-cdk-lib.aws_iam.PolicyDocument","aws-cdk-lib.aws_iam.PolicyDocumentProps","aws-cdk-lib.aws_iam.PolicyStatement","aws-cdk-lib.aws_iam.PolicyStatementProps","aws-cdk-lib.aws_iam.Role","aws-cdk-lib.aws_iam.Role#fromRoleArn","aws-cdk-lib.aws_iam.Role#roleArn","aws-cdk-lib.aws_lambda.ILayerVersion","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { ManagedPolicy, PolicyDocument, PolicyStatement, Role } from 'aws-cdk-lib/aws-iam';\nimport { Construct } from 'constructs';\nimport { SparkEmrContainersRuntime } from '../lib';\nimport { KubectlV30Layer } from '@aws-cdk/lambda-layer-kubectl-v30';\n\n/// !show\nclass ExampleSparkEmrContainersStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    \n    //Layer must be changed according to the Kubernetes version used\n    const kubectlLayer = new KubectlV30Layer(this, 'kubectlLayer');\n    \n    const emrEksCluster = SparkEmrContainersRuntime.getOrCreate(this, {\n      eksAdminRole: Role.fromRoleArn(this, 'EksAdminRole' , 'arn:aws:iam::12345678912:role/role-name-with-path'),\n      publicAccessCIDRs: ['10.0.0.0/32'], // The list of public IP addresses from which the cluster can be accessible\n      createEmrOnEksServiceLinkedRole: true, //if the the service linked role already exists set this to false\n      kubectlLambdaLayer: kubectlLayer,\n    });\n    \n    const s3Read = new PolicyDocument({\n      statements: [new PolicyStatement({\n        actions: [\n          's3:GetObject',\n        ],\n        resources: [\n          'arn:aws:s3:::aws-data-analytics-workshops',\n          'arn:aws:s3:::aws-data-analytics-workshops/*'],\n        })],\n      });\n      \n      const s3ReadPolicy = new ManagedPolicy(this, 's3ReadPolicy', {\n        document: s3Read,\n      });\n      \n      const virtualCluster = emrEksCluster.addEmrVirtualCluster(this, {\n        name: 'dailyjob',\n        createNamespace: true,\n        eksNamespace: 'dailyjobns',\n      });\n      \n      const execRole = emrEksCluster.createExecutionRole(\n        this, \n        'ExecRole', \n        s3ReadPolicy, \n        'dailyjobns', // the namespace of the virtual cluster \n        's3ReadExecRole'); //the IAM role name\n        \n        new cdk.CfnOutput(this, 'virtualClusterArn', {\n          value: virtualCluster.attrArn,\n        });\n        \n        new cdk.CfnOutput(this, 'execRoleArn', {\n          value: execRole.roleArn,\n        });\n        \n        //Driver pod template\n        new cdk.CfnOutput(this, 'driverPodTemplate', {\n          value: emrEksCluster.podTemplateS3LocationCriticalDriver!,\n        });\n        \n        //Executor pod template\n        new cdk.CfnOutput(this, 'executorPodTemplate', {\n          value: emrEksCluster.podTemplateS3LocationCriticalExecutor!,\n        });\n        \n      }\n    }\n    /// !hide\n    \n    const app = new cdk.App();\n    new ExampleSparkEmrContainersStack(app, 'ExampleSparkEmrServerlessStack');\n","syntaxKindCounter":{"11":17,"80":60,"108":1,"110":10,"112":2,"154":1,"169":2,"176":1,"183":1,"209":4,"210":9,"211":13,"213":5,"214":8,"233":1,"235":2,"241":1,"243":6,"244":5,"260":6,"261":6,"263":1,"298":1,"303":15},"fqnsFingerprint":"0e5fe8a3f0e9729cf5ec289d5bdc8c3631c1b4d63fdd36502d904b8cf1f103e5"},"21fefc0f62ed27a1c5035834381c717a3b61d11eb2f70e85490d4cc15a01501f":{"translations":{"python":{"source":"virtual_cluster = emr_eks_cluster.add_emr_virtual_cluster(self,\n    name=\"dailyjob\",\n    create_namespace=True,\n    eks_namespace=\"dailyjobns\"\n)\n\ncdk.CfnOutput(self, \"virtualClusterArn\",\n    value=virtual_cluster.attr_arn\n)","version":"2"},"csharp":{"source":"var virtualCluster = emrEksCluster.AddEmrVirtualCluster(this, new EmrVirtualClusterProps {\n    Name = \"dailyjob\",\n    CreateNamespace = true,\n    EksNamespace = \"dailyjobns\"\n});\n\nnew CfnOutput(this, \"virtualClusterArn\", new CfnOutputProps {\n    Value = virtualCluster.AttrArn\n});","version":"1"},"java":{"source":"CfnVirtualCluster virtualCluster = emrEksCluster.addEmrVirtualCluster(this, EmrVirtualClusterProps.builder()\n        .name(\"dailyjob\")\n        .createNamespace(true)\n        .eksNamespace(\"dailyjobns\")\n        .build());\n\nCfnOutput.Builder.create(this, \"virtualClusterArn\")\n        .value(virtualCluster.getAttrArn())\n        .build();","version":"1"},"go":{"source":"virtualCluster := emrEksCluster.AddEmrVirtualCluster(this, &EmrVirtualClusterProps{\n\tName: jsii.String(\"dailyjob\"),\n\tCreateNamespace: jsii.Boolean(true),\n\tEksNamespace: jsii.String(\"dailyjobns\"),\n})\n\ncdk.NewCfnOutput(this, jsii.String(\"virtualClusterArn\"), &CfnOutputProps{\n\tValue: virtualCluster.AttrArn,\n})","version":"1"},"$":{"source":"    const virtualCluster = emrEksCluster.addEmrVirtualCluster(this, {\n      name: 'dailyjob',\n      createNamespace: true,\n      eksNamespace: 'dailyjobns',\n    });\n\n    new cdk.CfnOutput(this, 'virtualClusterArn', {\n      value: virtualCluster.attrArn,\n    });","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.processing"},"field":{"field":"markdown","line":588}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.processing.EmrVirtualClusterProps","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntime#addEmrVirtualCluster","aws-cdk-lib.CfnOutput","aws-cdk-lib.CfnOutputProps","aws-cdk-lib.aws_emrcontainers.CfnVirtualCluster","aws-cdk-lib.aws_emrcontainers.CfnVirtualCluster#attrArn","aws-cdk-lib.aws_iam.IRole","aws-cdk-lib.aws_lambda.ILayerVersion","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Role } from 'aws-cdk-lib/aws-iam';\nimport { Construct } from 'constructs';\nimport { SparkEmrContainersRuntime } from '../lib';\nimport { KubectlV30Layer } from '@aws-cdk/lambda-layer-kubectl-v30';\n\n\nclass ExampleSparkEmrContainersStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    \n    //Layer must be changed according to the Kubernetes version used\n    const kubectlLayer = new KubectlV30Layer(this, 'kubectlLayer');\n    \n    const emrEksCluster = SparkEmrContainersRuntime.getOrCreate(this, {\n      eksAdminRole: Role.fromRoleArn(this, 'EksAdminRole' , 'arn:aws:iam::12345678912:role/role-name-with-path'),\n      publicAccessCIDRs: ['10.0.0.0/32'], // The list of public IP addresses from which the cluster can be accessible\n      createEmrOnEksServiceLinkedRole: true, //if the the service linked role already exists set this to false\n      kubectlLambdaLayer: kubectlLayer,\n    });\n    \n    /// !show\n    const virtualCluster = emrEksCluster.addEmrVirtualCluster(this, {\n      name: 'dailyjob',\n      createNamespace: true,\n      eksNamespace: 'dailyjobns',\n    });\n    \n    new cdk.CfnOutput(this, 'virtualClusterArn', {\n      value: virtualCluster.attrArn,\n    });\n    /// !hide\n  }\n}\n\n\nconst app = new cdk.App();\nnew ExampleSparkEmrContainersStack(app, 'ExampleSparkEmrServerlessStack');","syntaxKindCounter":{"11":3,"80":11,"110":2,"112":1,"210":2,"211":3,"213":1,"214":1,"243":1,"244":1,"260":1,"261":1,"303":4},"fqnsFingerprint":"9a22bdaa08bc894263215b053ecce1592116b93e5bc128ec0cda8d3caba58e6a"},"c6fdde6f748198fc1f4c60205dd0fbfe22271ea772f540671932a0740def08fb":{"translations":{"python":{"source":"emr_eks_cluster = SparkEmrContainersRuntime.get_or_create(self,\n    eks_admin_role=Role.from_role_arn(self, \"EksAdminRole\", \"arn:aws:iam::12345678912:role/role-name-with-path\"),\n    public_access_cIDRs=[\"10.0.0.0/32\"],  # The list of public IP addresses from which the cluster can be accessible\n    create_emr_on_eks_service_linked_role=True,  # if the the service linked role already exists set this to false\n    kubectl_lambda_layer=kubectl_layer,\n    default_nodes=True\n)\n\n# Driver pod template for critical workloads\ncdk.CfnOutput(self, \"driverPodTemplate\",\n    value=emr_eks_cluster.pod_template_s3_location_critical_driver\n)\n\n# Executor pod template for critical workloads\ncdk.CfnOutput(self, \"executorPodTemplate\",\n    value=emr_eks_cluster.pod_template_s3_location_critical_executor\n)","version":"2"},"csharp":{"source":"var emrEksCluster = SparkEmrContainersRuntime.GetOrCreate(this, new SparkEmrContainersRuntimeProps {\n    EksAdminRole = Role.FromRoleArn(this, \"EksAdminRole\", \"arn:aws:iam::12345678912:role/role-name-with-path\"),\n    PublicAccessCIDRs = new [] { \"10.0.0.0/32\" },  // The list of public IP addresses from which the cluster can be accessible\n    CreateEmrOnEksServiceLinkedRole = true,  //if the the service linked role already exists set this to false\n    KubectlLambdaLayer = kubectlLayer,\n    DefaultNodes = true\n});\n\n//Driver pod template for critical workloads\n//Driver pod template for critical workloads\nnew CfnOutput(this, \"driverPodTemplate\", new CfnOutputProps {\n    Value = emrEksCluster.PodTemplateS3LocationCriticalDriver\n});\n\n//Executor pod template for critical workloads\n//Executor pod template for critical workloads\nnew CfnOutput(this, \"executorPodTemplate\", new CfnOutputProps {\n    Value = emrEksCluster.PodTemplateS3LocationCriticalExecutor\n});","version":"1"},"java":{"source":"SparkEmrContainersRuntime emrEksCluster = SparkEmrContainersRuntime.getOrCreate(this, SparkEmrContainersRuntimeProps.builder()\n        .eksAdminRole(Role.fromRoleArn(this, \"EksAdminRole\", \"arn:aws:iam::12345678912:role/role-name-with-path\"))\n        .publicAccessCIDRs(List.of(\"10.0.0.0/32\")) // The list of public IP addresses from which the cluster can be accessible\n        .createEmrOnEksServiceLinkedRole(true) //if the the service linked role already exists set this to false\n        .kubectlLambdaLayer(kubectlLayer)\n        .defaultNodes(true)\n        .build());\n\n//Driver pod template for critical workloads\n//Driver pod template for critical workloads\nCfnOutput.Builder.create(this, \"driverPodTemplate\")\n        .value(emrEksCluster.getPodTemplateS3LocationCriticalDriver())\n        .build();\n\n//Executor pod template for critical workloads\n//Executor pod template for critical workloads\nCfnOutput.Builder.create(this, \"executorPodTemplate\")\n        .value(emrEksCluster.getPodTemplateS3LocationCriticalExecutor())\n        .build();","version":"1"},"go":{"source":"emrEksCluster := lib.SparkEmrContainersRuntime_GetOrCreate(this, &SparkEmrContainersRuntimeProps{\n\tEksAdminRole: awscdk.Role_FromRoleArn(this, jsii.String(\"EksAdminRole\"), jsii.String(\"arn:aws:iam::12345678912:role/role-name-with-path\")),\n\tPublicAccessCIDRs: []*string{\n\t\tjsii.String(\"10.0.0.0/32\"),\n\t},\n\t // The list of public IP addresses from which the cluster can be accessible\n\tCreateEmrOnEksServiceLinkedRole: jsii.Boolean(true),\n\t //if the the service linked role already exists set this to false\n\tKubectlLambdaLayer: kubectlLayer,\n\tDefaultNodes: jsii.Boolean(true),\n})\n\n//Driver pod template for critical workloads\n//Driver pod template for critical workloads\ncdk.NewCfnOutput(this, jsii.String(\"driverPodTemplate\"), &CfnOutputProps{\n\tValue: emrEksCluster.PodTemplateS3LocationCriticalDriver,\n})\n\n//Executor pod template for critical workloads\n//Executor pod template for critical workloads\ncdk.NewCfnOutput(this, jsii.String(\"executorPodTemplate\"), &CfnOutputProps{\n\tValue: emrEksCluster.PodTemplateS3LocationCriticalExecutor,\n})","version":"1"},"$":{"source":"    const emrEksCluster = SparkEmrContainersRuntime.getOrCreate(this, {\n      eksAdminRole: Role.fromRoleArn(this, 'EksAdminRole' , 'arn:aws:iam::12345678912:role/role-name-with-path'),\n      publicAccessCIDRs: ['10.0.0.0/32'], // The list of public IP addresses from which the cluster can be accessible\n      createEmrOnEksServiceLinkedRole: true, //if the the service linked role already exists set this to false\n      kubectlLambdaLayer: kubectlLayer,\n      defaultNodes: true,\n    });\n\n    //Driver pod template for critical workloads\n    new cdk.CfnOutput(this, 'driverPodTemplate', {\n      value: emrEksCluster.podTemplateS3LocationCriticalDriver!,\n    });\n\n    //Executor pod template for critical workloads\n    new cdk.CfnOutput(this, 'executorPodTemplate', {\n      value: emrEksCluster.podTemplateS3LocationCriticalExecutor!,\n    });","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.processing"},"field":{"field":"markdown","line":613}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntime","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntime#getOrCreate","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntime#podTemplateS3LocationCriticalDriver","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntime#podTemplateS3LocationCriticalExecutor","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntimeProps","aws-cdk-lib.CfnOutput","aws-cdk-lib.CfnOutputProps","aws-cdk-lib.aws_iam.IRole","aws-cdk-lib.aws_iam.Role#fromRoleArn","aws-cdk-lib.aws_lambda.ILayerVersion","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Role } from 'aws-cdk-lib/aws-iam';\nimport { Construct } from 'constructs';\nimport { SparkEmrContainersRuntime } from '../lib';\nimport { KubectlV30Layer } from '@aws-cdk/lambda-layer-kubectl-v30';\n\n\nclass ExampleSparkEmrContainersStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    \n    //Layer must be changed according to the Kubernetes version used\n    const kubectlLayer = new KubectlV30Layer(this, 'kubectlLayer');\n    \n    /// !show\n    const emrEksCluster = SparkEmrContainersRuntime.getOrCreate(this, {\n      eksAdminRole: Role.fromRoleArn(this, 'EksAdminRole' , 'arn:aws:iam::12345678912:role/role-name-with-path'),\n      publicAccessCIDRs: ['10.0.0.0/32'], // The list of public IP addresses from which the cluster can be accessible\n      createEmrOnEksServiceLinkedRole: true, //if the the service linked role already exists set this to false\n      kubectlLambdaLayer: kubectlLayer,\n      defaultNodes: true,\n    });\n    \n    //Driver pod template for critical workloads\n    new cdk.CfnOutput(this, 'driverPodTemplate', {\n      value: emrEksCluster.podTemplateS3LocationCriticalDriver!,\n    });\n    \n    //Executor pod template for critical workloads\n    new cdk.CfnOutput(this, 'executorPodTemplate', {\n      value: emrEksCluster.podTemplateS3LocationCriticalExecutor!,\n    });\n    /// !hide  \n  }\n}\n\nconst app = new cdk.App();\nnew ExampleSparkEmrContainersStack(app, 'ExampleSparkEmrServerlessStack');","syntaxKindCounter":{"11":5,"80":21,"110":4,"112":2,"209":1,"210":3,"211":6,"213":2,"214":2,"235":2,"243":1,"244":2,"260":1,"261":1,"303":7},"fqnsFingerprint":"dd06706b7083227bb51803fc6c0514a95ad01940536b7de42c03e60bd6283fe9"},"2cc21a8e68d818dafff9803a4b3faf7b903f1f1a72df822bbbbc8fcf367d3936":{"translations":{"python":{"source":"emr_eks_cluster.add_emr_virtual_cluster(self,\n    name=\"dailyjob\",\n    create_namespace=True,\n    eks_namespace=\"dailyjobns\"\n)\n\nexec_role = emr_eks_cluster.create_execution_role(self, \"ExecRole\", s3_read_policy, \"dailyjobns\", \"s3ReadExecRole\")\n\ncdk.CfnOutput(self, \"execRoleArn\",\n    value=exec_role.role_arn\n)","version":"2"},"csharp":{"source":"emrEksCluster.AddEmrVirtualCluster(this, new EmrVirtualClusterProps {\n    Name = \"dailyjob\",\n    CreateNamespace = true,\n    EksNamespace = \"dailyjobns\"\n});\n\nvar execRole = emrEksCluster.CreateExecutionRole(this, \"ExecRole\", s3ReadPolicy, \"dailyjobns\", \"s3ReadExecRole\");\n\nnew CfnOutput(this, \"execRoleArn\", new CfnOutputProps {\n    Value = execRole.RoleArn\n});","version":"1"},"java":{"source":"emrEksCluster.addEmrVirtualCluster(this, EmrVirtualClusterProps.builder()\n        .name(\"dailyjob\")\n        .createNamespace(true)\n        .eksNamespace(\"dailyjobns\")\n        .build());\n\nRole execRole = emrEksCluster.createExecutionRole(this, \"ExecRole\", s3ReadPolicy, \"dailyjobns\", \"s3ReadExecRole\");\n\nCfnOutput.Builder.create(this, \"execRoleArn\")\n        .value(execRole.getRoleArn())\n        .build();","version":"1"},"go":{"source":"emrEksCluster.AddEmrVirtualCluster(this, &EmrVirtualClusterProps{\n\tName: jsii.String(\"dailyjob\"),\n\tCreateNamespace: jsii.Boolean(true),\n\tEksNamespace: jsii.String(\"dailyjobns\"),\n})\n\nexecRole := emrEksCluster.CreateExecutionRole(this, jsii.String(\"ExecRole\"), s3ReadPolicy, jsii.String(\"dailyjobns\"), jsii.String(\"s3ReadExecRole\"))\n\ncdk.NewCfnOutput(this, jsii.String(\"execRoleArn\"), &CfnOutputProps{\n\tValue: execRole.RoleArn,\n})","version":"1"},"$":{"source":"      emrEksCluster.addEmrVirtualCluster(this, {\n        name: 'dailyjob',\n        createNamespace: true,\n        eksNamespace: 'dailyjobns',\n      });\n\n      const execRole = emrEksCluster.createExecutionRole(\n        this,\n        'ExecRole',\n        s3ReadPolicy, // the IAM managed policy granting permissions required by the Spark job\n        'dailyjobns', // the namespace of the virtual cluster\n        's3ReadExecRole' //the IAM role name\n        );\n\n        new cdk.CfnOutput(this, 'execRoleArn', {\n          value: execRole.roleArn,\n        });","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.processing"},"field":{"field":"markdown","line":640}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.processing.EmrVirtualClusterProps","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntime#addEmrVirtualCluster","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntime#createExecutionRole","aws-cdk-lib.CfnOutput","aws-cdk-lib.CfnOutputProps","aws-cdk-lib.aws_iam.IManagedPolicy","aws-cdk-lib.aws_iam.IRole","aws-cdk-lib.aws_iam.PolicyDocument","aws-cdk-lib.aws_iam.Role","aws-cdk-lib.aws_iam.Role#roleArn","aws-cdk-lib.aws_lambda.ILayerVersion","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { ManagedPolicy, PolicyDocument, PolicyStatement, Role } from 'aws-cdk-lib/aws-iam';\nimport { Construct } from 'constructs';\nimport { SparkEmrContainersRuntime } from '../lib';\nimport { KubectlV30Layer } from '@aws-cdk/lambda-layer-kubectl-v30';\n\n\nclass ExampleSparkEmrContainersStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    \n    const kubectlLayer = new KubectlV30Layer(this, 'kubectlLayer');\n    \n    const emrEksCluster = SparkEmrContainersRuntime.getOrCreate(this, {\n      eksAdminRole: Role.fromRoleArn(this, 'EksAdminRole' , 'arn:aws:iam::12345678912:role/role-name-with-path'),\n      publicAccessCIDRs: ['10.0.0.0/32'], // The list of public IP addresses from which the cluster can be accessible\n      createEmrOnEksServiceLinkedRole: true, //if the the service linked role already exists set this to false\n      kubectlLambdaLayer: kubectlLayer,\n    });\n    \n    const s3Read = new PolicyDocument({\n      statements: [new PolicyStatement({\n        actions: [\n          's3:GetObject',\n        ],\n        resources: [\n          'arn:aws:s3:::aws-data-analytics-workshops',\n          'arn:aws:s3:::aws-data-analytics-workshops/*'],\n        })],\n      });\n      \n      const s3ReadPolicy = new ManagedPolicy(this, 's3ReadPolicy', {\n        document: s3Read,\n      });\n      \n      /// !show\n      emrEksCluster.addEmrVirtualCluster(this, {\n        name: 'dailyjob',\n        createNamespace: true,\n        eksNamespace: 'dailyjobns',\n      });\n      \n      const execRole = emrEksCluster.createExecutionRole(\n        this, \n        'ExecRole', \n        s3ReadPolicy, // the IAM managed policy granting permissions required by the Spark job\n        'dailyjobns', // the namespace of the virtual cluster \n        's3ReadExecRole' //the IAM role name\n        ); \n        \n        new cdk.CfnOutput(this, 'execRoleArn', {\n          value: execRole.roleArn,\n        });\n        /// !hide\n      }\n    }\n    \n    \n    const app = new cdk.App();\n    new ExampleSparkEmrContainersStack(app, 'ExampleSparkEmrServerlessStack');\n","syntaxKindCounter":{"11":6,"80":14,"110":3,"112":1,"210":2,"211":4,"213":2,"214":1,"243":1,"244":2,"260":1,"261":1,"303":4},"fqnsFingerprint":"d53c906b054e718fd60d2a2d806e77e6f463aa361c78d71b891ce48b5a3be174"},"e9eb758a0100bcf5ebaea5334937d6a34b3b5e351fe1efa295f1f2de685c4824":{"translations":{"python":{"source":"virtual_cluster = emr_eks_cluster.add_emr_virtual_cluster(self,\n    name=\"dailyjob\",\n    create_namespace=True,\n    eks_namespace=\"dailyjobns\"\n)\n\nexec_role = emr_eks_cluster.create_execution_role(self, \"ExecRole\", s3_read_policy, \"dailyjobns\", \"s3ReadExecRole\")\n\ninteractive_session = emr_eks_cluster.add_interactive_endpoint(self, \"interactiveSession\",\n    virtual_cluster_id=virtual_cluster.attr_id,\n    managed_endpoint_name=\"interactiveSession\",\n    execution_role=exec_role\n)\n\n# Virtual Cluster ARN\ncdk.CfnOutput(self, \"virtualClusterArn\",\n    value=virtual_cluster.attr_arn\n)\n\n# Interactive session ARN\ncdk.CfnOutput(self, \"interactiveSessionArn\",\n    value=interactive_session.get_att_string(\"arn\")\n)","version":"2"},"csharp":{"source":"var virtualCluster = emrEksCluster.AddEmrVirtualCluster(this, new EmrVirtualClusterProps {\n    Name = \"dailyjob\",\n    CreateNamespace = true,\n    EksNamespace = \"dailyjobns\"\n});\n\nvar execRole = emrEksCluster.CreateExecutionRole(this, \"ExecRole\", s3ReadPolicy, \"dailyjobns\", \"s3ReadExecRole\");\n\nvar interactiveSession = emrEksCluster.AddInteractiveEndpoint(this, \"interactiveSession\", new SparkEmrContainersRuntimeInteractiveSessionProps {\n    VirtualClusterId = virtualCluster.AttrId,\n    ManagedEndpointName = \"interactiveSession\",\n    ExecutionRole = execRole\n});\n\n//Virtual Cluster ARN\n//Virtual Cluster ARN\nnew CfnOutput(this, \"virtualClusterArn\", new CfnOutputProps {\n    Value = virtualCluster.AttrArn\n});\n\n//Interactive session ARN\n//Interactive session ARN\nnew CfnOutput(this, \"interactiveSessionArn\", new CfnOutputProps {\n    Value = interactiveSession.GetAttString(\"arn\")\n});","version":"1"},"java":{"source":"CfnVirtualCluster virtualCluster = emrEksCluster.addEmrVirtualCluster(this, EmrVirtualClusterProps.builder()\n        .name(\"dailyjob\")\n        .createNamespace(true)\n        .eksNamespace(\"dailyjobns\")\n        .build());\n\nRole execRole = emrEksCluster.createExecutionRole(this, \"ExecRole\", s3ReadPolicy, \"dailyjobns\", \"s3ReadExecRole\");\n\nCustomResource interactiveSession = emrEksCluster.addInteractiveEndpoint(this, \"interactiveSession\", SparkEmrContainersRuntimeInteractiveSessionProps.builder()\n        .virtualClusterId(virtualCluster.getAttrId())\n        .managedEndpointName(\"interactiveSession\")\n        .executionRole(execRole)\n        .build());\n\n//Virtual Cluster ARN\n//Virtual Cluster ARN\nCfnOutput.Builder.create(this, \"virtualClusterArn\")\n        .value(virtualCluster.getAttrArn())\n        .build();\n\n//Interactive session ARN\n//Interactive session ARN\nCfnOutput.Builder.create(this, \"interactiveSessionArn\")\n        .value(interactiveSession.getAttString(\"arn\"))\n        .build();","version":"1"},"go":{"source":"virtualCluster := emrEksCluster.AddEmrVirtualCluster(this, &EmrVirtualClusterProps{\n\tName: jsii.String(\"dailyjob\"),\n\tCreateNamespace: jsii.Boolean(true),\n\tEksNamespace: jsii.String(\"dailyjobns\"),\n})\n\nexecRole := emrEksCluster.CreateExecutionRole(this, jsii.String(\"ExecRole\"), s3ReadPolicy, jsii.String(\"dailyjobns\"), jsii.String(\"s3ReadExecRole\"))\n\ninteractiveSession := emrEksCluster.AddInteractiveEndpoint(this, jsii.String(\"interactiveSession\"), &SparkEmrContainersRuntimeInteractiveSessionProps{\n\tVirtualClusterId: virtualCluster.AttrId,\n\tManagedEndpointName: jsii.String(\"interactiveSession\"),\n\tExecutionRole: execRole,\n})\n\n//Virtual Cluster ARN\n//Virtual Cluster ARN\ncdk.NewCfnOutput(this, jsii.String(\"virtualClusterArn\"), &CfnOutputProps{\n\tValue: virtualCluster.AttrArn,\n})\n\n//Interactive session ARN\n//Interactive session ARN\ncdk.NewCfnOutput(this, jsii.String(\"interactiveSessionArn\"), &CfnOutputProps{\n\tValue: interactiveSession.GetAttString(jsii.String(\"arn\")),\n})","version":"1"},"$":{"source":"        const virtualCluster = emrEksCluster.addEmrVirtualCluster(this, {\n            name: 'dailyjob',\n            createNamespace: true,\n            eksNamespace: 'dailyjobns',\n        });\n\n        const execRole = emrEksCluster.createExecutionRole(this, 'ExecRole', s3ReadPolicy, 'dailyjobns', 's3ReadExecRole');\n\n        const interactiveSession = emrEksCluster.addInteractiveEndpoint(this, 'interactiveSession', {\n           virtualClusterId: virtualCluster.attrId,\n           managedEndpointName: 'interactiveSession',\n           executionRole: execRole,\n         });\n\n        //Virtual Cluster ARN\n        new cdk.CfnOutput(this, 'virtualClusterArn', {\n            value: virtualCluster.attrArn,\n        });\n\n        //Interactive session ARN\n        new cdk.CfnOutput(this, 'interactiveSessionArn', {\n           value: interactiveSession.getAttString('arn'),\n         });","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.processing"},"field":{"field":"markdown","line":665}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.processing.EmrVirtualClusterProps","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntime#addEmrVirtualCluster","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntime#addInteractiveEndpoint","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntime#createExecutionRole","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntimeInteractiveSessionProps","aws-cdk-lib.CfnOutput","aws-cdk-lib.CfnOutputProps","aws-cdk-lib.CustomResource","aws-cdk-lib.CustomResource#getAttString","aws-cdk-lib.aws_emrcontainers.CfnVirtualCluster","aws-cdk-lib.aws_emrcontainers.CfnVirtualCluster#attrArn","aws-cdk-lib.aws_emrcontainers.CfnVirtualCluster#attrId","aws-cdk-lib.aws_iam.IManagedPolicy","aws-cdk-lib.aws_iam.IRole","aws-cdk-lib.aws_iam.PolicyDocument","aws-cdk-lib.aws_iam.Role","aws-cdk-lib.aws_lambda.ILayerVersion","constructs.Construct"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { ManagedPolicy, PolicyDocument, PolicyStatement, Role } from 'aws-cdk-lib/aws-iam';\nimport { Construct } from 'constructs';\nimport { SparkEmrContainersRuntime } from '../lib';\nimport { KubectlV30Layer } from '@aws-cdk/lambda-layer-kubectl-v30';\n\n\nclass ExampleSparkEmrContainersStack extends cdk.Stack {\n    constructor(scope: Construct, id: string) {\n        super(scope, id);\n\n        //Layer must be changed according to the Kubernetes version used\n        const kubectlLayer = new KubectlV30Layer(this, 'kubectlLayer');\n\n        const emrEksCluster = SparkEmrContainersRuntime.getOrCreate(this, {\n            eksAdminRole: Role.fromRoleArn(this, 'EksAdminRole' , 'arn:aws:iam::12345678912:role/role-name-with-path'),\n            publicAccessCIDRs: ['10.0.0.0/32'], // The list of public IP addresses from which the cluster can be accessible\n            createEmrOnEksServiceLinkedRole: true, //if the the service linked role already exists set this to false\n            kubectlLambdaLayer: kubectlLayer,\n        });\n\n        const s3Read = new PolicyDocument({\n            statements: [new PolicyStatement({\n              actions: [\n                's3:GetObject',\n              ],\n              resources: ['arn:aws:s3:::aws-data-analytics-workshops'],\n            })],\n          });\n\n          const s3ReadPolicy = new ManagedPolicy(this, 's3ReadPolicy', {\n            document: s3Read,\n          });\n        /// !show\n        const virtualCluster = emrEksCluster.addEmrVirtualCluster(this, {\n            name: 'dailyjob',\n            createNamespace: true,\n            eksNamespace: 'dailyjobns',\n        });\n\n        const execRole = emrEksCluster.createExecutionRole(this, 'ExecRole', s3ReadPolicy, 'dailyjobns', 's3ReadExecRole');\n\n        const interactiveSession = emrEksCluster.addInteractiveEndpoint(this, 'interactiveSession', {\n           virtualClusterId: virtualCluster.attrId,\n           managedEndpointName: 'interactiveSession',\n           executionRole: execRole,\n         });\n\n        //Virtual Cluster ARN\n        new cdk.CfnOutput(this, 'virtualClusterArn', {\n            value: virtualCluster.attrArn,\n        });\n\n        //Interactive session ARN\n        new cdk.CfnOutput(this, 'interactiveSessionArn', {\n           value: interactiveSession.getAttString('arn'),\n         });\n        /// !hide\n    }\n}\n\n\nconst app = new cdk.App();\nnew ExampleSparkEmrContainersStack(app, 'ExampleSparkEmrServerlessStack');\n","syntaxKindCounter":{"11":10,"80":29,"110":5,"112":1,"210":4,"211":8,"213":4,"214":2,"243":3,"244":2,"260":3,"261":3,"303":8},"fqnsFingerprint":"5c7271f193f7909fa2c32e02310be5c20d82bcb6fe4f5c3f79f504322ff203cd"},"a245dd61052930024c5994c5539689aa2812162d576ac0b429a58c862afa35ae":{"translations":{"python":{"source":"# IAM role that is used to start the execution and monitor its state\nstart_job_role = Role.from_role_name(self, \"StartJobRole\", \"StartJobRole\")\n\nSparkEmrContainersRuntime.grant_start_job_execution(start_job_role, [exec_role.role_arn], virtual_cluster.attr_arn)","version":"2"},"csharp":{"source":"// IAM role that is used to start the execution and monitor its state\nvar startJobRole = Role.FromRoleName(this, \"StartJobRole\", \"StartJobRole\");\n\nSparkEmrContainersRuntime.GrantStartJobExecution(startJobRole, new [] { execRole.RoleArn }, virtualCluster.AttrArn);","version":"1"},"java":{"source":"// IAM role that is used to start the execution and monitor its state\nIRole startJobRole = Role.fromRoleName(this, \"StartJobRole\", \"StartJobRole\");\n\nSparkEmrContainersRuntime.grantStartJobExecution(startJobRole, List.of(execRole.getRoleArn()), virtualCluster.getAttrArn());","version":"1"},"go":{"source":"// IAM role that is used to start the execution and monitor its state\nstartJobRole := awscdk.Role_FromRoleName(this, jsii.String(\"StartJobRole\"), jsii.String(\"StartJobRole\"))\n\nlib.SparkEmrContainersRuntime_GrantStartJobExecution(startJobRole, []*string{\n\texecRole.RoleArn,\n}, virtualCluster.AttrArn)","version":"1"},"$":{"source":"        // IAM role that is used to start the execution and monitor its state\n        const startJobRole: IRole = Role.fromRoleName(this, 'StartJobRole', 'StartJobRole');\n\n        SparkEmrContainersRuntime.grantStartJobExecution(startJobRole, [execRole.roleArn], virtualCluster.attrArn);","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.processing"},"field":{"field":"markdown","line":728}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntime#grantStartJobExecution","aws-cdk-lib.aws_emrcontainers.CfnVirtualCluster#attrArn","aws-cdk-lib.aws_iam.IRole","aws-cdk-lib.aws_iam.PolicyDocument","aws-cdk-lib.aws_iam.Role#fromRoleName","aws-cdk-lib.aws_iam.Role#roleArn","aws-cdk-lib.aws_lambda.ILayerVersion","constructs.Construct"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { IRole, ManagedPolicy, PolicyDocument, PolicyStatement, Role } from 'aws-cdk-lib/aws-iam';\nimport { Construct } from 'constructs';\nimport { SparkEmrContainersRuntime } from '../lib';\nimport { KubectlV30Layer } from '@aws-cdk/lambda-layer-kubectl-v30';\n\n\nclass ExampleSparkEmrContainersStack extends cdk.Stack {\n    constructor(scope: Construct, id: string) {\n        super(scope, id);\n\n        //Layer must be changed according to the Kubernetes version used\n        const kubectlLayer = new KubectlV30Layer(this, 'kubectlLayer');\n\n        const emrEksCluster = SparkEmrContainersRuntime.getOrCreate(this, {\n            eksAdminRole: Role.fromRoleArn(this, 'EksAdminRole' , 'arn:aws:iam::12345678912:role/role-name-with-path'),\n            publicAccessCIDRs: ['10.0.0.0/32'], // The list of public IP addresses from which the cluster can be accessible\n            createEmrOnEksServiceLinkedRole: true, //if the the service linked role already exists set this to false\n            kubectlLambdaLayer: kubectlLayer,\n        });\n\n        const s3Read = new PolicyDocument({\n            statements: [new PolicyStatement({\n              actions: [\n                's3:GetObject',\n              ],\n              resources: ['arn:aws:s3:::aws-data-analytics-workshops'],\n            })],\n          });\n\n          const s3ReadPolicy = new ManagedPolicy(this, 's3ReadPolicy', {\n            document: s3Read,\n          });\n\n        \n        const virtualCluster = emrEksCluster.addEmrVirtualCluster(this, {\n            name: 'dailyjob',\n            createNamespace: true,\n            eksNamespace: 'dailyjobns',\n        });\n\n        const execRole = emrEksCluster.createExecutionRole(this, 'ExecRole', s3ReadPolicy, 'dailyjobns', 's3ReadExecRole');\n\n        const interactiveSession = emrEksCluster.addInteractiveEndpoint(this, 'interactiveSession', {\n           virtualClusterId: virtualCluster.attrId,\n           managedEndpointName: 'interactiveSession',\n           executionRole: execRole,\n         });\n        //Virtual Cluster ARN\n        new cdk.CfnOutput(this, 'virtualClusterArn', {\n            value: virtualCluster.attrArn,\n        });\n\n        //Interactive session ARN\n        new cdk.CfnOutput(this, 'interactiveSessionArn', {\n           value: interactiveSession.getAttString('arn'),\n         });\n        /// !show\n        // IAM role that is used to start the execution and monitor its state\n        const startJobRole: IRole = Role.fromRoleName(this, 'StartJobRole', 'StartJobRole'); \n\n        SparkEmrContainersRuntime.grantStartJobExecution(startJobRole, [execRole.roleArn], virtualCluster.attrArn);\n        /// !hide\n    }\n}\n\n\nconst app = new cdk.App();\nnew ExampleSparkEmrContainersStack(app, 'ExampleSparkEmrServerlessStack');\n","syntaxKindCounter":{"11":2,"80":11,"110":1,"183":1,"209":1,"211":4,"213":2,"243":1,"244":1,"260":1,"261":1},"fqnsFingerprint":"eea327960c98aef4bd6b150b6abce014b544a1b494ca5bfc38174ae8c5c0a8c8"},"581723447e1829ee239595da78ade79727abcf9128da4ea62f8d6bf53129eb35":{"translations":{"python":{"source":"class ExampleDefaultAccessLogsBucketStack(cdk.Stack):\n    def __init__(self, scope, id):\n        super().__init__(scope, id)\n        dsf.storage.AccessLogsBucket(self, \"AccessLogsBucket\")","version":"2"},"csharp":{"source":"class ExampleDefaultAccessLogsBucketStack : Stack\n{\n    public ExampleDefaultAccessLogsBucketStack(Construct scope, string id) : base(scope, id)\n    {\n        new Storage.AccessLogsBucket(this, \"AccessLogsBucket\");\n    }\n}","version":"1"},"java":{"source":"public class ExampleDefaultAccessLogsBucketStack extends Stack {\n    public ExampleDefaultAccessLogsBucketStack(Construct scope, String id) {\n        super(scope, id);\n        new AccessLogsBucket(this, \"AccessLogsBucket\");\n    }\n}","version":"1"},"go":{"source":"type exampleDefaultAccessLogsBucketStack struct {\n\tstack\n}\n\nfunc newExampleDefaultAccessLogsBucketStack(scope construct, id *string) *exampleDefaultAccessLogsBucketStack {\n\tthis := &exampleDefaultAccessLogsBucketStack{}\n\tcdk.NewStack_Override(this, scope, id)\n\tstorage.NewAccessLogsBucket(this, jsii.String(\"AccessLogsBucket\"))\n\treturn this\n}","version":"1"},"$":{"source":"class ExampleDefaultAccessLogsBucketStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    new dsf.storage.AccessLogsBucket(this, 'AccessLogsBucket');\n  }\n}","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.storage"},"field":{"field":"markdown","line":19}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.storage","@cdklabs/aws-data-solutions-framework.storage.AccessLogsBucket","aws-cdk-lib.Stack","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\n/// !show\nclass ExampleDefaultAccessLogsBucketStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    new dsf.storage.AccessLogsBucket(this, 'AccessLogsBucket');\n  }\n}\n/// !hide\n\nconst app = new cdk.App();\nnew ExampleDefaultAccessLogsBucketStack(app, 'ExampleDefaultDataLakeStorage');","syntaxKindCounter":{"11":1,"80":11,"108":1,"110":1,"154":1,"169":2,"176":1,"183":1,"211":3,"213":1,"214":1,"233":1,"241":1,"244":2,"263":1,"298":1},"fqnsFingerprint":"1b3fe3ccace94d0e0d31a632e4cd647f09d1505c75a7872c331847ee4183125b"},"345f8514b47c030d9d301922d6c371e369a4fc966b7e2c4e5a26003627a20f37":{"translations":{"python":{"source":"dsf.storage.AccessLogsBucket(self, \"MyAccessLogs\",\n    bucket_name=dsf.utils.BucketUtils.generate_unique_bucket_name(self, \"MyAccessLogs\", \"my-custom-name\")\n)","version":"2"},"csharp":{"source":"new Storage.AccessLogsBucket(this, \"MyAccessLogs\", new BucketProps {\n    BucketName = Utils.BucketUtils.GenerateUniqueBucketName(this, \"MyAccessLogs\", \"my-custom-name\")\n});","version":"1"},"java":{"source":"AccessLogsBucket.Builder.create(this, \"MyAccessLogs\")\n        .bucketName(BucketUtils.generateUniqueBucketName(this, \"MyAccessLogs\", \"my-custom-name\"))\n        .build();","version":"1"},"go":{"source":"storage.NewAccessLogsBucket(this, jsii.String(\"MyAccessLogs\"), &BucketProps{\n\tBucketName: utils.BucketUtils_GenerateUniqueBucketName(this, jsii.String(\"MyAccessLogs\"), jsii.String(\"my-custom-name\")),\n})","version":"1"},"$":{"source":"new dsf.storage.AccessLogsBucket(this, 'MyAccessLogs', {\n    bucketName: dsf.utils.BucketUtils.generateUniqueBucketName(this, 'MyAccessLogs', 'my-custom-name')\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.storage"},"field":{"field":"markdown","line":41}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.storage","@cdklabs/aws-data-solutions-framework.storage.AccessLogsBucket","@cdklabs/aws-data-solutions-framework.utils","@cdklabs/aws-data-solutions-framework.utils.BucketUtils","@cdklabs/aws-data-solutions-framework.utils.BucketUtils#generateUniqueBucketName","aws-cdk-lib.aws_s3.BucketProps","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\nclass ExampleAccessLogsBucketNamingStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n/// !show\n    new dsf.storage.AccessLogsBucket(this, 'MyAccessLogs', {\n        bucketName: dsf.utils.BucketUtils.generateUniqueBucketName(this, 'MyAccessLogs', 'my-custom-name')\n    });\n/// !hide\n  }\n}\n\nconst app = new cdk.App();\nnew ExampleAccessLogsBucketNamingStack(app, 'ExampleAccessLogsBucketNaming');","syntaxKindCounter":{"11":3,"80":8,"110":2,"210":1,"211":5,"213":1,"214":1,"244":1,"303":1},"fqnsFingerprint":"a3c6d30a98fbf640ef9f9c70972f94da15422c5a5149bf1bf893d482359b5b8a"},"cd1a56977799619f1d98cbf9fb53eeb5dfeb21102bbd47740ee7ecfef35c04ab":{"translations":{"python":{"source":"class ExampleDefaultAnalyticsBucketStack(cdk.Stack):\n    def __init__(self, scope, id):\n        super().__init__(scope, id)\n        key = Key(self, \"DataKey\",\n            enable_key_rotation=True\n        )\n\n        dsf.storage.AnalyticsBucket(self, \"AnalyticsBucket\",\n            encryption_key=key\n        )","version":"2"},"csharp":{"source":"class ExampleDefaultAnalyticsBucketStack : Stack\n{\n    public ExampleDefaultAnalyticsBucketStack(Construct scope, string id) : base(scope, id)\n    {\n        var key = new Key(this, \"DataKey\", new KeyProps {\n            EnableKeyRotation = true\n        });\n\n        new Storage.AnalyticsBucket(this, \"AnalyticsBucket\", new AnalyticsBucketProps {\n            EncryptionKey = key\n        });\n    }\n}","version":"1"},"java":{"source":"public class ExampleDefaultAnalyticsBucketStack extends Stack {\n    public ExampleDefaultAnalyticsBucketStack(Construct scope, String id) {\n        super(scope, id);\n        Key key = Key.Builder.create(this, \"DataKey\")\n                .enableKeyRotation(true)\n                .build();\n\n        AnalyticsBucket.Builder.create(this, \"AnalyticsBucket\")\n                .encryptionKey(key)\n                .build();\n    }\n}","version":"1"},"go":{"source":"type exampleDefaultAnalyticsBucketStack struct {\n\tstack\n}\n\nfunc newExampleDefaultAnalyticsBucketStack(scope construct, id *string) *exampleDefaultAnalyticsBucketStack {\n\tthis := &exampleDefaultAnalyticsBucketStack{}\n\tcdk.NewStack_Override(this, scope, id)\n\tkey := awscdk.NewKey(this, jsii.String(\"DataKey\"), &KeyProps{\n\t\tEnableKeyRotation: jsii.Boolean(true),\n\t})\n\n\tstorage.NewAnalyticsBucket(this, jsii.String(\"AnalyticsBucket\"), &AnalyticsBucketProps{\n\t\tEncryptionKey: key,\n\t})\n\treturn this\n}","version":"1"},"$":{"source":"class ExampleDefaultAnalyticsBucketStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    const key = new Key(this, 'DataKey', {\n      enableKeyRotation: true\n    });\n\n    new dsf.storage.AnalyticsBucket(this, 'AnalyticsBucket', {\n      encryptionKey: key\n    });\n  }\n}","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.storage"},"field":{"field":"markdown","line":67}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.storage","@cdklabs/aws-data-solutions-framework.storage.AnalyticsBucket","@cdklabs/aws-data-solutions-framework.storage.AnalyticsBucketProps","aws-cdk-lib.Stack","aws-cdk-lib.aws_kms.IKey","aws-cdk-lib.aws_kms.Key","aws-cdk-lib.aws_kms.KeyProps","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Key } from 'aws-cdk-lib/aws-kms';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\n/// !show\nclass ExampleDefaultAnalyticsBucketStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    const key = new Key(this, 'DataKey', {\n      enableKeyRotation: true\n    });\n    \n    new dsf.storage.AnalyticsBucket(this, 'AnalyticsBucket', {\n      encryptionKey: key\n    });\n  }\n}\n/// !hide\n\nconst app = new cdk.App();\nnew ExampleDefaultAnalyticsBucketStack(app, 'ExampleDefaultDataLakeStorage');","syntaxKindCounter":{"11":2,"80":16,"108":1,"110":2,"112":1,"154":1,"169":2,"176":1,"183":1,"210":2,"211":3,"213":1,"214":2,"233":1,"241":1,"243":1,"244":2,"260":1,"261":1,"263":1,"298":1,"303":2},"fqnsFingerprint":"4fe6a6939b21676c6840ebf7591c6e928caba5e89f9f7eeb3ab4599564c23584"},"4338374e7b119c1e988633b9f0eca4aa1938b1f48793447024c2fe96681751f2":{"translations":{"python":{"source":"dsf.storage.AnalyticsBucket(self, \"AnalyticsBucket\",\n    bucket_name=dsf.utils.BucketUtils.generate_unique_bucket_name(self, \"AnalyticsBucket\", \"my-custom-name\"),\n    encryption_key=key\n)","version":"2"},"csharp":{"source":"new Storage.AnalyticsBucket(this, \"AnalyticsBucket\", new AnalyticsBucketProps {\n    BucketName = Utils.BucketUtils.GenerateUniqueBucketName(this, \"AnalyticsBucket\", \"my-custom-name\"),\n    EncryptionKey = key\n});","version":"1"},"java":{"source":"AnalyticsBucket.Builder.create(this, \"AnalyticsBucket\")\n        .bucketName(BucketUtils.generateUniqueBucketName(this, \"AnalyticsBucket\", \"my-custom-name\"))\n        .encryptionKey(key)\n        .build();","version":"1"},"go":{"source":"storage.NewAnalyticsBucket(this, jsii.String(\"AnalyticsBucket\"), &AnalyticsBucketProps{\n\tBucketName: utils.BucketUtils_GenerateUniqueBucketName(this, jsii.String(\"AnalyticsBucket\"), jsii.String(\"my-custom-name\")),\n\tEncryptionKey: key,\n})","version":"1"},"$":{"source":"new dsf.storage.AnalyticsBucket(this, 'AnalyticsBucket', {\n    bucketName: dsf.utils.BucketUtils.generateUniqueBucketName(this, 'AnalyticsBucket', 'my-custom-name'),\n    encryptionKey: key\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.storage"},"field":{"field":"markdown","line":104}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.storage","@cdklabs/aws-data-solutions-framework.storage.AnalyticsBucket","@cdklabs/aws-data-solutions-framework.storage.AnalyticsBucketProps","@cdklabs/aws-data-solutions-framework.utils","@cdklabs/aws-data-solutions-framework.utils.BucketUtils","@cdklabs/aws-data-solutions-framework.utils.BucketUtils#generateUniqueBucketName","aws-cdk-lib.aws_kms.IKey","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Key } from 'aws-cdk-lib/aws-kms';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\nclass ExampleAnalyticsBucketNamingStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    const key = new Key(this, 'DataKey', {\n      enableKeyRotation: true,\n    });\n\n/// !show\n    new dsf.storage.AnalyticsBucket(this, 'AnalyticsBucket', {\n        bucketName: dsf.utils.BucketUtils.generateUniqueBucketName(this, 'AnalyticsBucket', 'my-custom-name'),\n        encryptionKey: key\n    });\n/// !hide\n  }\n}\n\nconst app = new cdk.App();\nnew ExampleAnalyticsBucketNamingStack(app, 'ExampleAnalyticsBucketNamingStack');","syntaxKindCounter":{"11":3,"80":10,"110":2,"210":1,"211":5,"213":1,"214":1,"244":1,"303":2},"fqnsFingerprint":"39bb707b10b98a17c28ca99527def373879b2ccbf1a456a6da78bb143f119356"},"eafd220724774f5d6d333f47972ae8cd3cb473c3d221de14b0a0a0dfc84fad2c":{"translations":{"python":{"source":"class ExampleDefaultDataLakeStorageStack(cdk.Stack):\n    def __init__(self, scope, id):\n        super().__init__(scope, id)\n        dsf.storage.DataLakeStorage(self, \"MyDataLakeStorage\")","version":"2"},"csharp":{"source":"class ExampleDefaultDataLakeStorageStack : Stack\n{\n    public ExampleDefaultDataLakeStorageStack(Construct scope, string id) : base(scope, id)\n    {\n        new Storage.DataLakeStorage(this, \"MyDataLakeStorage\");\n    }\n}","version":"1"},"java":{"source":"public class ExampleDefaultDataLakeStorageStack extends Stack {\n    public ExampleDefaultDataLakeStorageStack(Construct scope, String id) {\n        super(scope, id);\n        new DataLakeStorage(this, \"MyDataLakeStorage\");\n    }\n}","version":"1"},"go":{"source":"type exampleDefaultDataLakeStorageStack struct {\n\tstack\n}\n\nfunc newExampleDefaultDataLakeStorageStack(scope construct, id *string) *exampleDefaultDataLakeStorageStack {\n\tthis := &exampleDefaultDataLakeStorageStack{}\n\tcdk.NewStack_Override(this, scope, id)\n\tstorage.NewDataLakeStorage(this, jsii.String(\"MyDataLakeStorage\"))\n\treturn this\n}","version":"1"},"$":{"source":"class ExampleDefaultDataLakeStorageStack extends cdk.Stack {\n    constructor(scope: Construct, id: string) {\n        super(scope, id);\n        new dsf.storage.DataLakeStorage(this, 'MyDataLakeStorage');\n    }\n}","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.storage"},"field":{"field":"markdown","line":133}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.storage","@cdklabs/aws-data-solutions-framework.storage.DataLakeStorage","aws-cdk-lib.Stack","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\n/// !show\nclass ExampleDefaultDataLakeStorageStack extends cdk.Stack {\n    constructor(scope: Construct, id: string) {\n        super(scope, id);\n        new dsf.storage.DataLakeStorage(this, 'MyDataLakeStorage');\n    }\n}\n/// !hide\n\nconst app = new cdk.App();\nnew ExampleDefaultDataLakeStorageStack(app, 'ExampleDefaultDataLakeStorage');","syntaxKindCounter":{"11":1,"80":11,"108":1,"110":1,"154":1,"169":2,"176":1,"183":1,"211":3,"213":1,"214":1,"233":1,"241":1,"244":2,"263":1,"298":1},"fqnsFingerprint":"31ba551ade8dbe9edb7ccd2d9246b61bc51775cc35a39abb45ae82be9d3b7511"},"f44dabc2be4f84dd1b30536ccd1a2a7c487ff2ae12db7c32039a6a246bb4e2e5":{"translations":{"python":{"source":"dsf.storage.DataLakeStorage(self, \"MyDataLakeStorage\",\n    bronze_bucket_name=dsf.utils.BucketUtils.generate_unique_bucket_name(self, \"MyDataLakeStorage\", \"custom-bronze-name\")\n)","version":"2"},"csharp":{"source":"new Storage.DataLakeStorage(this, \"MyDataLakeStorage\", new DataLakeStorageProps {\n    BronzeBucketName = Utils.BucketUtils.GenerateUniqueBucketName(this, \"MyDataLakeStorage\", \"custom-bronze-name\")\n});","version":"1"},"java":{"source":"DataLakeStorage.Builder.create(this, \"MyDataLakeStorage\")\n        .bronzeBucketName(BucketUtils.generateUniqueBucketName(this, \"MyDataLakeStorage\", \"custom-bronze-name\"))\n        .build();","version":"1"},"go":{"source":"storage.NewDataLakeStorage(this, jsii.String(\"MyDataLakeStorage\"), &DataLakeStorageProps{\n\tBronzeBucketName: utils.BucketUtils_GenerateUniqueBucketName(this, jsii.String(\"MyDataLakeStorage\"), jsii.String(\"custom-bronze-name\")),\n})","version":"1"},"$":{"source":"new dsf.storage.DataLakeStorage(this, 'MyDataLakeStorage', {\n    bronzeBucketName: dsf.utils.BucketUtils.generateUniqueBucketName(this, 'MyDataLakeStorage', 'custom-bronze-name')\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.storage"},"field":{"field":"markdown","line":156}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.storage","@cdklabs/aws-data-solutions-framework.storage.DataLakeStorage","@cdklabs/aws-data-solutions-framework.storage.DataLakeStorageProps","@cdklabs/aws-data-solutions-framework.utils","@cdklabs/aws-data-solutions-framework.utils.BucketUtils","@cdklabs/aws-data-solutions-framework.utils.BucketUtils#generateUniqueBucketName","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\nclass ExampleDataLakeStorageNamingStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n/// !show\n    new dsf.storage.DataLakeStorage(this, 'MyDataLakeStorage', {\n        bronzeBucketName: dsf.utils.BucketUtils.generateUniqueBucketName(this, 'MyDataLakeStorage', 'custom-bronze-name')\n    });\n/// !hide\n  }\n}\n\nconst app = new cdk.App();\nnew ExampleDataLakeStorageNamingStack(app, 'ExampleDataLakeStorageNamingStack');","syntaxKindCounter":{"11":3,"80":8,"110":2,"210":1,"211":5,"213":1,"214":1,"244":1,"303":1},"fqnsFingerprint":"49b3a92795b9cd42c7a4a1197a4dca2dd0ea22215e81fc6e9d58b55683e82c73"},"3dc3c9bf687dfff4d19152dd94cc70a011963edfdfce6deb92b497b60362b755":{"translations":{"python":{"source":"# Set context value for global data removal policy\nself.node.set_context(\"@data-solutions-framework-on-aws/removeDataOnDestroy\", True)\n\ndsf.storage.DataLakeStorage(self, \"DataLakeStorage\",\n    removal_policy=RemovalPolicy.DESTROY\n)","version":"2"},"csharp":{"source":"// Set context value for global data removal policy\nNode.SetContext(\"@data-solutions-framework-on-aws/removeDataOnDestroy\", true);\n\nnew Storage.DataLakeStorage(this, \"DataLakeStorage\", new DataLakeStorageProps {\n    RemovalPolicy = RemovalPolicy.DESTROY\n});","version":"1"},"java":{"source":"// Set context value for global data removal policy\nthis.node.setContext(\"@data-solutions-framework-on-aws/removeDataOnDestroy\", true);\n\nDataLakeStorage.Builder.create(this, \"DataLakeStorage\")\n        .removalPolicy(RemovalPolicy.DESTROY)\n        .build();","version":"1"},"go":{"source":"// Set context value for global data removal policy\nthis.Node.SetContext(jsii.String(\"@data-solutions-framework-on-aws/removeDataOnDestroy\"), jsii.Boolean(true))\n\nstorage.NewDataLakeStorage(this, jsii.String(\"DataLakeStorage\"), &DataLakeStorageProps{\n\tRemovalPolicy: awscdk.RemovalPolicy_DESTROY,\n})","version":"1"},"$":{"source":"    // Set context value for global data removal policy\n    this.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\n    new dsf.storage.DataLakeStorage(this, 'DataLakeStorage', {\n        removalPolicy: RemovalPolicy.DESTROY\n    });","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.storage"},"field":{"field":"markdown","line":180}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.storage","@cdklabs/aws-data-solutions-framework.storage.DataLakeStorage","@cdklabs/aws-data-solutions-framework.storage.DataLakeStorageProps","aws-cdk-lib.RemovalPolicy","aws-cdk-lib.RemovalPolicy#DESTROY","constructs.Construct","constructs.Construct#node","constructs.Node#setContext"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { RemovalPolicy } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\nclass ExampleDataLakeStorageObjectRemovalStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    /// !show\n    // Set context value for global data removal policy\n    this.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\n    new dsf.storage.DataLakeStorage(this, 'DataLakeStorage', {\n        removalPolicy: RemovalPolicy.DESTROY\n    });\n    /// !hide\n  }\n}\n\nconst app = new cdk.App();\nnew ExampleDataLakeStorageObjectRemovalStack(app, 'ExampleDataLakeStorageObjectRemovalStack');","syntaxKindCounter":{"11":2,"80":8,"110":2,"112":1,"210":1,"211":5,"213":1,"214":1,"244":2,"303":1},"fqnsFingerprint":"c9013bdfd36e210bbaf4f1b0a647e9362ee6196bc1e62ae0e3761d6ff841d48e"},"9c0fcb5eeecf4ceafca6bdd429b62ac6ea7c092f53c94a071e1f6a1c8f5f4d97":{"translations":{"python":{"source":"dsf.storage.DataLakeStorage(self, \"MyDataLakeStorage\",\n    bronze_bucket_infrequent_access_delay=90,\n    bronze_bucket_archive_delay=180,\n    silver_bucket_infrequent_access_delay=180,\n    silver_bucket_archive_delay=360,\n    gold_bucket_infrequent_access_delay=180,\n    gold_bucket_archive_delay=360\n)","version":"2"},"csharp":{"source":"new Storage.DataLakeStorage(this, \"MyDataLakeStorage\", new DataLakeStorageProps {\n    BronzeBucketInfrequentAccessDelay = 90,\n    BronzeBucketArchiveDelay = 180,\n    SilverBucketInfrequentAccessDelay = 180,\n    SilverBucketArchiveDelay = 360,\n    GoldBucketInfrequentAccessDelay = 180,\n    GoldBucketArchiveDelay = 360\n});","version":"1"},"java":{"source":"DataLakeStorage.Builder.create(this, \"MyDataLakeStorage\")\n        .bronzeBucketInfrequentAccessDelay(90)\n        .bronzeBucketArchiveDelay(180)\n        .silverBucketInfrequentAccessDelay(180)\n        .silverBucketArchiveDelay(360)\n        .goldBucketInfrequentAccessDelay(180)\n        .goldBucketArchiveDelay(360)\n        .build();","version":"1"},"go":{"source":"storage.NewDataLakeStorage(this, jsii.String(\"MyDataLakeStorage\"), &DataLakeStorageProps{\n\tBronzeBucketInfrequentAccessDelay: jsii.Number(90),\n\tBronzeBucketArchiveDelay: jsii.Number(180),\n\tSilverBucketInfrequentAccessDelay: jsii.Number(180),\n\tSilverBucketArchiveDelay: jsii.Number(360),\n\tGoldBucketInfrequentAccessDelay: jsii.Number(180),\n\tGoldBucketArchiveDelay: jsii.Number(360),\n})","version":"1"},"$":{"source":"new dsf.storage.DataLakeStorage(this, 'MyDataLakeStorage', {\n    bronzeBucketInfrequentAccessDelay: 90,\n    bronzeBucketArchiveDelay: 180,\n    silverBucketInfrequentAccessDelay: 180,\n    silverBucketArchiveDelay: 360,\n    goldBucketInfrequentAccessDelay: 180,\n    goldBucketArchiveDelay: 360,\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.storage"},"field":{"field":"markdown","line":197}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.storage","@cdklabs/aws-data-solutions-framework.storage.DataLakeStorage","@cdklabs/aws-data-solutions-framework.storage.DataLakeStorageProps","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\nclass ExampleDefaultDataLakeStorageStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n/// !show\n    new dsf.storage.DataLakeStorage(this, 'MyDataLakeStorage', {\n        bronzeBucketInfrequentAccessDelay: 90,\n        bronzeBucketArchiveDelay: 180,\n        silverBucketInfrequentAccessDelay: 180,\n        silverBucketArchiveDelay: 360,\n        goldBucketInfrequentAccessDelay: 180,\n        goldBucketArchiveDelay: 360,\n    });\n/// !hide\n  }\n}\n\nconst app = new cdk.App();\nnew ExampleDefaultDataLakeStorageStack(app, 'ExampleDefaultDataLakeStorage');","syntaxKindCounter":{"9":6,"11":1,"80":9,"110":1,"210":1,"211":2,"214":1,"244":1,"303":6},"fqnsFingerprint":"d09feb3487a9485f44e19e0b5a1f017a7b6966f5ea19ed9e6fbd2839a20cafc9"},"0af6da9ac614832fbd5aea31b5d32e67aa4bc8dfe4cb8543733985a27af0baa9":{"translations":{"python":{"source":"msk = MskProvisioned(stack, \"cluster\")","version":"2"},"csharp":{"source":"var msk = new MskProvisioned(stack, \"cluster\");","version":"1"},"java":{"source":"MskProvisioned msk = new MskProvisioned(stack, \"cluster\");","version":"1"},"go":{"source":"msk := libmsk.NewMskProvisioned(stack, jsii.String(\"cluster\"))","version":"1"},"$":{"source":"const msk = new MskProvisioned(stack, 'cluster');","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.streaming"},"field":{"field":"markdown","line":29}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.streaming.AclOperationTypes","@cdklabs/aws-data-solutions-framework.streaming.AclPermissionTypes","@cdklabs/aws-data-solutions-framework.streaming.AclResourceTypes","@cdklabs/aws-data-solutions-framework.streaming.MskProvisioned","@cdklabs/aws-data-solutions-framework.streaming.ResourcePatternTypes","constructs.Construct"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { AclOperationTypes, AclPermissionTypes, AclResourceTypes,MskProvisioned, ResourcePatternTypes } from '../lib/msk';\n\n\nconst app = new cdk.App();\n\nconst stack = new cdk.Stack(app, 'MskProvisionedDsf');\n\nstack.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\n/// !show\nconst msk = new MskProvisioned(stack, 'cluster');\n/// !hide\n\nmsk.setAcl('acl', {\n    resourceType: AclResourceTypes.TOPIC,\n    resourceName: 'topic-1',\n    resourcePatternType: ResourcePatternTypes.LITERAL,\n    principal: 'User:Cn=Toto',\n    host: '*',\n    operation: AclOperationTypes.CREATE,\n    permissionType: AclPermissionTypes.ALLOW,\n  },\n  cdk.RemovalPolicy.DESTROY);\n\n  ","syntaxKindCounter":{"11":1,"80":3,"214":1,"243":1,"260":1,"261":1},"fqnsFingerprint":"c0685804f9ca5dc4c42a488b7bc1bc787e110837eab9ca632f9ba2843427b7ee"},"4170a0d4b7596fc95fe39a09439f3bd915ebbb9800ba30f7688197fb889dcadf":{"translations":{"python":{"source":"vpc = Vpc.from_vpc_attributes(stack, \"vpc\",\n    vpc_id=\"vpc-1111111111\",\n    vpc_cidr_block=\"10.0.0.0/16\",\n    availability_zones=[\"eu-west-1a\", \"eu-west-1b\"],\n    public_subnet_ids=[\"subnet-111111111\", \"subnet-11111111\"],\n    private_subnet_ids=[\"subnet-11111111\", \"subnet-1111111\"]\n)\n\nmsk = MskProvisioned(stack, \"cluster\",\n    vpc=vpc,\n    cluster_name=\"my-cluster\",\n    subnets=vpc.select_subnets()\n)","version":"2"},"csharp":{"source":"var vpc = Vpc.FromVpcAttributes(stack, \"vpc\", new VpcAttributes {\n    VpcId = \"vpc-1111111111\",\n    VpcCidrBlock = \"10.0.0.0/16\",\n    AvailabilityZones = new [] { \"eu-west-1a\", \"eu-west-1b\" },\n    PublicSubnetIds = new [] { \"subnet-111111111\", \"subnet-11111111\" },\n    PrivateSubnetIds = new [] { \"subnet-11111111\", \"subnet-1111111\" }\n});\n\nvar msk = new MskProvisioned(stack, \"cluster\", new MskProvisionedProps {\n    Vpc = vpc,\n    ClusterName = \"my-cluster\",\n    Subnets = vpc.SelectSubnets()\n});","version":"1"},"java":{"source":"IVpc vpc = Vpc.fromVpcAttributes(stack, \"vpc\", VpcAttributes.builder()\n        .vpcId(\"vpc-1111111111\")\n        .vpcCidrBlock(\"10.0.0.0/16\")\n        .availabilityZones(List.of(\"eu-west-1a\", \"eu-west-1b\"))\n        .publicSubnetIds(List.of(\"subnet-111111111\", \"subnet-11111111\"))\n        .privateSubnetIds(List.of(\"subnet-11111111\", \"subnet-1111111\"))\n        .build());\n\nMskProvisioned msk = MskProvisioned.Builder.create(stack, \"cluster\")\n        .vpc(vpc)\n        .clusterName(\"my-cluster\")\n        .subnets(vpc.selectSubnets())\n        .build();","version":"1"},"go":{"source":"vpc := awscdk.Vpc_FromVpcAttributes(stack, jsii.String(\"vpc\"), &VpcAttributes{\n\tVpcId: jsii.String(\"vpc-1111111111\"),\n\tVpcCidrBlock: jsii.String(\"10.0.0.0/16\"),\n\tAvailabilityZones: []*string{\n\t\tjsii.String(\"eu-west-1a\"),\n\t\tjsii.String(\"eu-west-1b\"),\n\t},\n\tPublicSubnetIds: []*string{\n\t\tjsii.String(\"subnet-111111111\"),\n\t\tjsii.String(\"subnet-11111111\"),\n\t},\n\tPrivateSubnetIds: []*string{\n\t\tjsii.String(\"subnet-11111111\"),\n\t\tjsii.String(\"subnet-1111111\"),\n\t},\n})\n\nmsk := libmsk.NewMskProvisioned(stack, jsii.String(\"cluster\"), &MskProvisionedProps{\n\tVpc: vpc,\n\tClusterName: jsii.String(\"my-cluster\"),\n\tSubnets: vpc.SelectSubnets(),\n})","version":"1"},"$":{"source":"let vpc = Vpc.fromVpcAttributes(stack, 'vpc', {\n    vpcId: 'vpc-1111111111',\n    vpcCidrBlock: '10.0.0.0/16',\n    availabilityZones: ['eu-west-1a', 'eu-west-1b'],\n    publicSubnetIds: ['subnet-111111111', 'subnet-11111111'],\n    privateSubnetIds: ['subnet-11111111', 'subnet-1111111'],\n});\n\nconst msk = new MskProvisioned(stack, 'cluster', {\n    vpc: vpc,\n    clusterName: 'my-cluster',\n    subnets: vpc.selectSubnets(),\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.streaming"},"field":{"field":"markdown","line":41}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.streaming.MskProvisioned","@cdklabs/aws-data-solutions-framework.streaming.MskProvisionedProps","aws-cdk-lib.aws_ec2.IVpc","aws-cdk-lib.aws_ec2.IVpc#selectSubnets","aws-cdk-lib.aws_ec2.SubnetSelection","aws-cdk-lib.aws_ec2.Vpc#fromVpcAttributes","aws-cdk-lib.aws_ec2.VpcAttributes","constructs.Construct"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { MskProvisioned } from '../lib/msk';\nimport { Vpc } from 'aws-cdk-lib/aws-ec2';\n\n\nconst app = new cdk.App();\n\nconst stack = new cdk.Stack(app, 'DsfTestMskServerless');\n\nstack.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\n/// !show\nlet vpc = Vpc.fromVpcAttributes(stack, 'vpc', {\n    vpcId: 'vpc-1111111111',\n    vpcCidrBlock: '10.0.0.0/16',\n    availabilityZones: ['eu-west-1a', 'eu-west-1b'],\n    publicSubnetIds: ['subnet-111111111', 'subnet-11111111'],\n    privateSubnetIds: ['subnet-11111111', 'subnet-1111111'],\n});\n\nconst msk = new MskProvisioned(stack, 'cluster', {\n    vpc: vpc,\n    clusterName: 'my-cluster',\n    subnets: vpc.selectSubnets(),\n});\n/// !hide\n\nnew cdk.CfnOutput(stack, 'mskArn', {\n    value: msk.cluster.attrArn,\n});","syntaxKindCounter":{"11":11,"80":18,"209":3,"210":2,"211":2,"213":2,"214":1,"243":2,"260":2,"261":2,"303":8},"fqnsFingerprint":"7557eb57b79c98a4ee8afb7006e1a0d649c7b902752b2b155b69867285d0ffcf"},"6d967a038b3a8c1d7be9d9638eb6d314e3abc5ff4c4bdc1b4c6d7946bf01df25":{"translations":{"python":{"source":"certificate_authority = CertificateAuthority.from_certificate_authority_arn(stack, \"certificateAuthority\", \"arn:aws:acm-pca:eu-west-1:123456789012:certificate-authority/aaaaaaaa-bbbb-454a-cccc-b454877f0d1b\")\n\nmsk = MskProvisioned(stack, \"cluster\",\n    client_authentication=ClientAuthentication.sasl_tls(\n        iam=True,\n        certificate_authorities=[certificate_authority]\n    ),\n    certificate_definition=AclAdminProps(\n        admin_principal=\"User:CN=Admin\",\n        acl_admin_principal=\"User:CN=aclAdmin\",\n        secret_certificate=Secret.from_secret_complete_arn(stack, \"secret\", \"arn:aws:secretsmanager:eu-west-1:123456789012:secret:dsf/mskCert-3UhUJJ\")\n    ),\n    allow_everyone_if_no_acl_found=False\n)","version":"2"},"csharp":{"source":"var certificateAuthority = CertificateAuthority.FromCertificateAuthorityArn(stack, \"certificateAuthority\", \"arn:aws:acm-pca:eu-west-1:123456789012:certificate-authority/aaaaaaaa-bbbb-454a-cccc-b454877f0d1b\");\n\nvar msk = new MskProvisioned(stack, \"cluster\", new MskProvisionedProps {\n    ClientAuthentication = ClientAuthentication.SaslTls(new SaslTlsAuthProps {\n        Iam = true,\n        CertificateAuthorities = new [] { certificateAuthority }\n    }),\n    CertificateDefinition = new AclAdminProps {\n        AdminPrincipal = \"User:CN=Admin\",\n        AclAdminPrincipal = \"User:CN=aclAdmin\",\n        SecretCertificate = Secret.FromSecretCompleteArn(stack, \"secret\", \"arn:aws:secretsmanager:eu-west-1:123456789012:secret:dsf/mskCert-3UhUJJ\")\n    },\n    AllowEveryoneIfNoAclFound = false\n});","version":"1"},"java":{"source":"ICertificateAuthority certificateAuthority = CertificateAuthority.fromCertificateAuthorityArn(stack, \"certificateAuthority\", \"arn:aws:acm-pca:eu-west-1:123456789012:certificate-authority/aaaaaaaa-bbbb-454a-cccc-b454877f0d1b\");\n\nMskProvisioned msk = MskProvisioned.Builder.create(stack, \"cluster\")\n        .clientAuthentication(ClientAuthentication.saslTls(SaslTlsAuthProps.builder()\n                .iam(true)\n                .certificateAuthorities(List.of(certificateAuthority))\n                .build()))\n        .certificateDefinition(AclAdminProps.builder()\n                .adminPrincipal(\"User:CN=Admin\")\n                .aclAdminPrincipal(\"User:CN=aclAdmin\")\n                .secretCertificate(Secret.fromSecretCompleteArn(stack, \"secret\", \"arn:aws:secretsmanager:eu-west-1:123456789012:secret:dsf/mskCert-3UhUJJ\"))\n                .build())\n        .allowEveryoneIfNoAclFound(false)\n        .build();","version":"1"},"go":{"source":"certificateAuthority := awscdk.CertificateAuthority_FromCertificateAuthorityArn(stack, jsii.String(\"certificateAuthority\"), jsii.String(\"arn:aws:acm-pca:eu-west-1:123456789012:certificate-authority/aaaaaaaa-bbbb-454a-cccc-b454877f0d1b\"))\n\nmsk := libmsk.NewMskProvisioned(stack, jsii.String(\"cluster\"), &MskProvisionedProps{\n\tClientAuthentication: *libmsk.ClientAuthentication_SaslTls(&SaslTlsAuthProps{\n\t\tIam: jsii.Boolean(true),\n\t\tCertificateAuthorities: []iCertificateAuthority{\n\t\t\tcertificateAuthority,\n\t\t},\n\t}),\n\tCertificateDefinition: &AclAdminProps{\n\t\tAdminPrincipal: jsii.String(\"User:CN=Admin\"),\n\t\tAclAdminPrincipal: jsii.String(\"User:CN=aclAdmin\"),\n\t\tSecretCertificate: awscdk.Secret_FromSecretCompleteArn(stack, jsii.String(\"secret\"), jsii.String(\"arn:aws:secretsmanager:eu-west-1:123456789012:secret:dsf/mskCert-3UhUJJ\")),\n\t},\n\tAllowEveryoneIfNoAclFound: jsii.Boolean(false),\n})","version":"1"},"$":{"source":"let certificateAuthority = CertificateAuthority.fromCertificateAuthorityArn(\n    stack, 'certificateAuthority',\n    'arn:aws:acm-pca:eu-west-1:123456789012:certificate-authority/aaaaaaaa-bbbb-454a-cccc-b454877f0d1b');\n\n  const msk = new MskProvisioned(stack, 'cluster', {\n    clientAuthentication: ClientAuthentication.saslTls(\n      {\n        iam: true,\n        certificateAuthorities: [certificateAuthority],\n      },\n    ),\n    certificateDefinition: {\n      adminPrincipal: 'User:CN=Admin',\n      aclAdminPrincipal: 'User:CN=aclAdmin',\n      secretCertificate: Secret.fromSecretCompleteArn(stack, 'secret', 'arn:aws:secretsmanager:eu-west-1:123456789012:secret:dsf/mskCert-3UhUJJ'),\n    },\n    allowEveryoneIfNoAclFound: false,\n  });","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.streaming"},"field":{"field":"markdown","line":72}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.streaming.AclAdminProps","@cdklabs/aws-data-solutions-framework.streaming.ClientAuthentication","@cdklabs/aws-data-solutions-framework.streaming.ClientAuthentication#saslTls","@cdklabs/aws-data-solutions-framework.streaming.MskProvisioned","@cdklabs/aws-data-solutions-framework.streaming.MskProvisionedProps","@cdklabs/aws-data-solutions-framework.streaming.SaslTlsAuthProps","aws-cdk-lib.aws_acmpca.CertificateAuthority#fromCertificateAuthorityArn","aws-cdk-lib.aws_acmpca.ICertificateAuthority","aws-cdk-lib.aws_secretsmanager.ISecret","aws-cdk-lib.aws_secretsmanager.Secret#fromSecretCompleteArn","constructs.Construct"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { Authentication, ClientAuthentication, MskProvisioned } from '../lib/msk';\nimport { CertificateAuthority } from 'aws-cdk-lib/aws-acmpca';\nimport { Secret } from 'aws-cdk-lib/aws-secretsmanager';\n\n\nconst app = new cdk.App();\n\nconst stack = new cdk.Stack(app, 'MskProvisionedDsf');\n\nstack.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\n/// !show\nlet certificateAuthority = CertificateAuthority.fromCertificateAuthorityArn(\n    stack, 'certificateAuthority',\n    'arn:aws:acm-pca:eu-west-1:123456789012:certificate-authority/aaaaaaaa-bbbb-454a-cccc-b454877f0d1b');\n\n  const msk = new MskProvisioned(stack, 'cluster', {\n    clientAuthentication: ClientAuthentication.saslTls(\n      {\n        iam: true,\n        certificateAuthorities: [certificateAuthority],\n      },\n    ),\n    certificateDefinition: {\n      adminPrincipal: 'User:CN=Admin',\n      aclAdminPrincipal: 'User:CN=aclAdmin',\n      secretCertificate: Secret.fromSecretCompleteArn(stack, 'secret', 'arn:aws:secretsmanager:eu-west-1:123456789012:secret:dsf/mskCert-3UhUJJ'),\n    },\n    allowEveryoneIfNoAclFound: false,\n  });\n/// !hide\n\nmsk.grantConsume('consume', 'foo', Authentication.MTLS, 'User:Cn=MyUser');\n\n  ","syntaxKindCounter":{"11":7,"80":21,"97":1,"112":1,"209":1,"210":3,"211":3,"213":3,"214":1,"243":2,"260":2,"261":2,"303":8},"fqnsFingerprint":"90f1cb5695e8849529098fec02d49bd3dbbf162765a614dfe2627555d7dd6c34"},"786b4e04cc7c481529dfbece140906f4ca41df61531625fc676ae04047f62c2b":{"translations":{"python":{"source":"msk.set_topic(\"topic1\", Authentication.IAM, MskTopic(\n    topic=\"topic1\",\n    num_partitions=3,\n    replication_factor=1,\n    config_entries=[{\n        \"name\": \"retention.ms\",\n        \"value\": \"90000\"\n    }, {\n        \"name\": \"retention.bytes\",\n        \"value\": \"90000\"\n    }\n    ]\n), cdk.RemovalPolicy.DESTROY, False, 1500)","version":"2"},"csharp":{"source":"msk.SetTopic(\"topic1\", Authentication.IAM, new MskTopic {\n    Topic = \"topic1\",\n    NumPartitions = 3,\n    ReplicationFactor = 1,\n    ConfigEntries = new [] { new Dictionary<string, string> {\n        { \"name\", \"retention.ms\" },\n        { \"value\", \"90000\" }\n    }, new Dictionary<string, string> {\n        { \"name\", \"retention.bytes\" },\n        { \"value\", \"90000\" }\n    } }\n}, RemovalPolicy.DESTROY, false, 1500);","version":"1"},"java":{"source":"msk.setTopic(\"topic1\", Authentication.IAM, MskTopic.builder()\n        .topic(\"topic1\")\n        .numPartitions(3)\n        .replicationFactor(1)\n        .configEntries(List.of(Map.of(\n                \"name\", \"retention.ms\",\n                \"value\", \"90000\"), Map.of(\n                \"name\", \"retention.bytes\",\n                \"value\", \"90000\")))\n        .build(), RemovalPolicy.DESTROY, false, 1500);","version":"1"},"go":{"source":"msk.SetTopic(jsii.String(\"topic1\"), libmsk.Authentication_IAM, &MskTopic{\n\tTopic: jsii.String(\"topic1\"),\n\tNumPartitions: jsii.Number(3),\n\tReplicationFactor: jsii.Number(1),\n\tConfigEntries: []map[string]*string{\n\t\tmap[string]*string{\n\t\t\t\"name\": jsii.String(\"retention.ms\"),\n\t\t\t\"value\": jsii.String(\"90000\"),\n\t\t},\n\t\tmap[string]*string{\n\t\t\t\"name\": jsii.String(\"retention.bytes\"),\n\t\t\t\"value\": jsii.String(\"90000\"),\n\t\t},\n\t},\n}, cdk.RemovalPolicy_DESTROY, jsii.Boolean(false), jsii.Number(1500))","version":"1"},"$":{"source":"msk.setTopic('topic1',\n  Authentication.IAM, {\n    topic: 'topic1',\n    numPartitions: 3,\n    replicationFactor: 1,\n    configEntries: [\n      {\n        name: 'retention.ms',\n        value: '90000',\n      },\n      {\n        name: 'retention.bytes',\n        value: '90000',\n      },\n    ],\n  }, cdk.RemovalPolicy.DESTROY, false, 1500);","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.streaming"},"field":{"field":"markdown","line":113}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.streaming.Authentication","@cdklabs/aws-data-solutions-framework.streaming.Authentication#IAM","@cdklabs/aws-data-solutions-framework.streaming.MskProvisioned#setTopic","@cdklabs/aws-data-solutions-framework.streaming.MskTopic","aws-cdk-lib.RemovalPolicy","aws-cdk-lib.RemovalPolicy#DESTROY"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { Authentication, MskProvisioned } from '../lib/msk';\n\n\nconst app = new cdk.App();\n\nconst stack = new cdk.Stack(app, 'MskProvisionedDsf');\n\nstack.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\n\nconst msk = new MskProvisioned(stack, 'cluster');\n\n/// !show\nmsk.setTopic('topic1',\n  Authentication.IAM, {\n    topic: 'topic1',\n    numPartitions: 3,\n    replicationFactor: 1,\n    configEntries: [\n      {\n        name: 'retention.ms',\n        value: '90000',\n      },\n      {\n        name: 'retention.bytes',\n        value: '90000',\n      },\n    ],\n  }, cdk.RemovalPolicy.DESTROY, false, 1500);\n/// !hide\n\n\n  ","syntaxKindCounter":{"9":3,"11":6,"80":15,"97":1,"209":1,"210":3,"211":4,"213":1,"244":1,"303":8},"fqnsFingerprint":"7fd963e82b9f8642e83085dabe993a3c12e73b703a68f2017434ad3c9fd3403c"},"fd940238a7ef1c5c9084976643863e6801bbf1d35b5ab68816997ee98c59369d":{"translations":{"python":{"source":"msk.set_acl(\"acl\", Acl(\n    resource_type=AclResourceTypes.TOPIC,\n    resource_name=\"topic-1\",\n    resource_pattern_type=ResourcePatternTypes.LITERAL,\n    principal=\"User:Cn=Bar\",\n    host=\"*\",\n    operation=AclOperationTypes.CREATE,\n    permission_type=AclPermissionTypes.ALLOW\n), cdk.RemovalPolicy.DESTROY, Authentication.IAM)","version":"2"},"csharp":{"source":"msk.SetAcl(\"acl\", new Acl {\n    ResourceType = AclResourceTypes.TOPIC,\n    ResourceName = \"topic-1\",\n    ResourcePatternType = ResourcePatternTypes.LITERAL,\n    Principal = \"User:Cn=Bar\",\n    Host = \"*\",\n    Operation = AclOperationTypes.CREATE,\n    PermissionType = AclPermissionTypes.ALLOW\n}, RemovalPolicy.DESTROY, Authentication.IAM);","version":"1"},"java":{"source":"msk.setAcl(\"acl\", Acl.builder()\n        .resourceType(AclResourceTypes.TOPIC)\n        .resourceName(\"topic-1\")\n        .resourcePatternType(ResourcePatternTypes.LITERAL)\n        .principal(\"User:Cn=Bar\")\n        .host(\"*\")\n        .operation(AclOperationTypes.CREATE)\n        .permissionType(AclPermissionTypes.ALLOW)\n        .build(), RemovalPolicy.DESTROY, Authentication.IAM);","version":"1"},"go":{"source":"msk.SetAcl(jsii.String(\"acl\"), &Acl{\n\tResourceType: *libmsk.AclResourceTypes_TOPIC,\n\tResourceName: jsii.String(\"topic-1\"),\n\tResourcePatternType: *libmsk.ResourcePatternTypes_LITERAL,\n\tPrincipal: jsii.String(\"User:Cn=Bar\"),\n\tHost: jsii.String(\"*\"),\n\tOperation: *libmsk.AclOperationTypes_CREATE,\n\tPermissionType: *libmsk.AclPermissionTypes_ALLOW,\n}, cdk.RemovalPolicy_DESTROY, libmsk.Authentication_IAM)","version":"1"},"$":{"source":"msk.setAcl('acl', {\n    resourceType: AclResourceTypes.TOPIC,\n    resourceName: 'topic-1',\n    resourcePatternType: ResourcePatternTypes.LITERAL,\n    principal: 'User:Cn=Bar',\n    host: '*',\n    operation: AclOperationTypes.CREATE,\n    permissionType: AclPermissionTypes.ALLOW,\n  },\n  cdk.RemovalPolicy.DESTROY,\n  Authentication.IAM,\n);","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.streaming"},"field":{"field":"markdown","line":151}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.streaming.Acl","@cdklabs/aws-data-solutions-framework.streaming.AclOperationTypes","@cdklabs/aws-data-solutions-framework.streaming.AclOperationTypes#CREATE","@cdklabs/aws-data-solutions-framework.streaming.AclPermissionTypes","@cdklabs/aws-data-solutions-framework.streaming.AclPermissionTypes#ALLOW","@cdklabs/aws-data-solutions-framework.streaming.AclResourceTypes","@cdklabs/aws-data-solutions-framework.streaming.AclResourceTypes#TOPIC","@cdklabs/aws-data-solutions-framework.streaming.Authentication","@cdklabs/aws-data-solutions-framework.streaming.Authentication#IAM","@cdklabs/aws-data-solutions-framework.streaming.MskProvisioned#setAcl","@cdklabs/aws-data-solutions-framework.streaming.ResourcePatternTypes","@cdklabs/aws-data-solutions-framework.streaming.ResourcePatternTypes#LITERAL","aws-cdk-lib.RemovalPolicy","aws-cdk-lib.RemovalPolicy#DESTROY"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { AclOperationTypes, AclPermissionTypes, AclResourceTypes, MskProvisioned, ResourcePatternTypes, Authentication } from '../lib/msk';\n\n\nconst app = new cdk.App();\n\nconst stack = new cdk.Stack(app, 'MskProvisionedDsf');\n\nstack.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\n\nconst msk = new MskProvisioned(stack, 'cluster');\n\n/// !show\nmsk.setAcl('acl', {\n    resourceType: AclResourceTypes.TOPIC,\n    resourceName: 'topic-1',\n    resourcePatternType: ResourcePatternTypes.LITERAL,\n    principal: 'User:Cn=Bar',\n    host: '*',\n    operation: AclOperationTypes.CREATE,\n    permissionType: AclPermissionTypes.ALLOW,\n  },\n  cdk.RemovalPolicy.DESTROY,\n  Authentication.IAM,\n);\n/// !hide\n","syntaxKindCounter":{"11":4,"80":22,"210":1,"211":8,"213":1,"244":1,"303":7},"fqnsFingerprint":"9461c04c90eaeb974040784e89f565af69b0f16ad343e81b45b7bfbd042f7796"},"78ade9d61fdbbf0b8decb6265da21aa91be8df7e7c1881a5e5d576ad33c7b7bd":{"translations":{"python":{"source":"msk.grant_produce(\"consume\", \"foo\", Authentication.MTLS, \"User:Cn=MyUser\")","version":"2"},"csharp":{"source":"msk.GrantProduce(\"consume\", \"foo\", Authentication.MTLS, \"User:Cn=MyUser\");","version":"1"},"java":{"source":"msk.grantProduce(\"consume\", \"foo\", Authentication.MTLS, \"User:Cn=MyUser\");","version":"1"},"go":{"source":"msk.GrantProduce(jsii.String(\"consume\"), jsii.String(\"foo\"), libmsk.Authentication_MTLS, jsii.String(\"User:Cn=MyUser\"))","version":"1"},"$":{"source":"msk.grantProduce('consume', 'foo', Authentication.MTLS, 'User:Cn=MyUser');","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.streaming"},"field":{"field":"markdown","line":172}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.streaming.AclAdminProps","@cdklabs/aws-data-solutions-framework.streaming.Authentication","@cdklabs/aws-data-solutions-framework.streaming.Authentication#MTLS","@cdklabs/aws-data-solutions-framework.streaming.ClientAuthentication","@cdklabs/aws-data-solutions-framework.streaming.MskProvisioned#grantProduce","aws-cdk-lib.aws_secretsmanager.ISecret"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { Authentication, ClientAuthentication, MskProvisioned } from '../lib/msk';\nimport { CertificateAuthority } from 'aws-cdk-lib/aws-acmpca';\nimport { Secret } from 'aws-cdk-lib/aws-secretsmanager';\n\n\nconst app = new cdk.App();\n\nconst stack = new cdk.Stack(app, 'MskProvisionedDsf');\n\nstack.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\n\nlet certificateAuthority = CertificateAuthority.fromCertificateAuthorityArn(\n    stack, 'certificateAuthority',\n    'arn:aws:acm-pca:eu-west-1:123456789012:certificate-authority/aaaaaaaa-bbbb-454a-cccc-b454877f0d1b');\n\n  const msk = new MskProvisioned(stack, 'cluster', {\n    clientAuthentication: ClientAuthentication.saslTls(\n      {\n        iam: true,\n        certificateAuthorities: [certificateAuthority],\n      },\n    ),\n    certificateDefinition: {\n      adminPrincipal: 'User:CN=Admin',\n      aclAdminPrincipal: 'User:CN=aclAdmin',\n      secretCertificate: Secret.fromSecretCompleteArn(stack, 'secret', 'arn:aws:secretsmanager:eu-west-1:123456789012:secret:dsf/mskCert-3UhUJJ'),\n    },\n    allowEveryoneIfNoAclFound: false,\n  });\n\n/// !show\nmsk.grantProduce('consume', 'foo', Authentication.MTLS, 'User:Cn=MyUser');\n/// !hide\n\n\n  ","syntaxKindCounter":{"11":3,"80":4,"211":2,"213":1,"244":1},"fqnsFingerprint":"2afa4ac2f450a2d1ff4a20459f42279c80f7908885b7ae2c7b1d60a906743501"},"0f74de83383100b007f17ef190a5f13f0a7c8a6a63c584f9818864aa2813cdce":{"translations":{"python":{"source":"msk.grant_consume(\"consume\", \"foo\", Authentication.MTLS, \"User:Cn=MyUser\")","version":"2"},"csharp":{"source":"msk.GrantConsume(\"consume\", \"foo\", Authentication.MTLS, \"User:Cn=MyUser\");","version":"1"},"java":{"source":"msk.grantConsume(\"consume\", \"foo\", Authentication.MTLS, \"User:Cn=MyUser\");","version":"1"},"go":{"source":"msk.GrantConsume(jsii.String(\"consume\"), jsii.String(\"foo\"), libmsk.Authentication_MTLS, jsii.String(\"User:Cn=MyUser\"))","version":"1"},"$":{"source":"msk.grantConsume('consume', 'foo', Authentication.MTLS, 'User:Cn=MyUser');","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.streaming"},"field":{"field":"markdown","line":180}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.streaming.AclAdminProps","@cdklabs/aws-data-solutions-framework.streaming.Authentication","@cdklabs/aws-data-solutions-framework.streaming.Authentication#MTLS","@cdklabs/aws-data-solutions-framework.streaming.ClientAuthentication","@cdklabs/aws-data-solutions-framework.streaming.MskProvisioned#grantConsume","aws-cdk-lib.aws_secretsmanager.ISecret"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { Authentication, ClientAuthentication, MskProvisioned } from '../lib/msk';\nimport { CertificateAuthority } from 'aws-cdk-lib/aws-acmpca';\nimport { Secret } from 'aws-cdk-lib/aws-secretsmanager';\n\n\nconst app = new cdk.App();\n\nconst stack = new cdk.Stack(app, 'MskProvisionedDsf');\n\nstack.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\n\nlet certificateAuthority = CertificateAuthority.fromCertificateAuthorityArn(\n    stack, 'certificateAuthority',\n    'arn:aws:acm-pca:eu-west-1:123456789012:certificate-authority/aaaaaaaa-bbbb-454a-cccc-b454877f0d1b');\n\n  const msk = new MskProvisioned(stack, 'cluster', {\n    clientAuthentication: ClientAuthentication.saslTls(\n      {\n        iam: true,\n        certificateAuthorities: [certificateAuthority],\n      },\n    ),\n    certificateDefinition: {\n      adminPrincipal: 'User:CN=Admin',\n      aclAdminPrincipal: 'User:CN=aclAdmin',\n      secretCertificate: Secret.fromSecretCompleteArn(stack, 'secret', 'arn:aws:secretsmanager:eu-west-1:123456789012:secret:dsf/mskCert-3UhUJJ'),\n    },\n    allowEveryoneIfNoAclFound: false,\n  });\n\n/// !show\nmsk.grantConsume('consume', 'foo', Authentication.MTLS, 'User:Cn=MyUser');\n/// !hide\n\n\n  ","syntaxKindCounter":{"11":3,"80":4,"211":2,"213":1,"244":1},"fqnsFingerprint":"e1a25e1c923b7ed042dfd3a569503c83ff379a2e4b1cec57b1fce379d28f5c25"},"ca33b40907a8a8a2598bf219aa55ad0397988d92b1419ca2ed50ed59659578ad":{"translations":{"python":{"source":"msk = MskProvisioned(stack, \"cluster\")\n\ncluter_policy = PolicyDocument(\n    statements=[\n        PolicyStatement(\n            actions=[\"kafka:CreateVpcConnection\", \"kafka:GetBootstrapBrokers\", \"kafka:DescribeClusterV2\"\n            ],\n            resources=[msk.cluster.attr_arn],\n            effect=Effect.ALLOW,\n            principals=[ServicePrincipal(\"firehose.amazonaws.com\")]\n        )\n    ]\n)\n\nmsk.add_cluster_policy(cluter_policy, \"cluterPolicy\")","version":"2"},"csharp":{"source":"var msk = new MskProvisioned(stack, \"cluster\");\n\nvar cluterPolicy = new PolicyDocument(new PolicyDocumentProps {\n    Statements = new [] {\n        new PolicyStatement(new PolicyStatementProps {\n            Actions = new [] { \"kafka:CreateVpcConnection\", \"kafka:GetBootstrapBrokers\", \"kafka:DescribeClusterV2\" },\n            Resources = new [] { msk.Cluster.AttrArn },\n            Effect = Effect.ALLOW,\n            Principals = new [] { new ServicePrincipal(\"firehose.amazonaws.com\") }\n        }) }\n});\n\nmsk.AddClusterPolicy(cluterPolicy, \"cluterPolicy\");","version":"1"},"java":{"source":"MskProvisioned msk = new MskProvisioned(stack, \"cluster\");\n\nPolicyDocument cluterPolicy = PolicyDocument.Builder.create()\n        .statements(List.of(\n            PolicyStatement.Builder.create()\n                    .actions(List.of(\"kafka:CreateVpcConnection\", \"kafka:GetBootstrapBrokers\", \"kafka:DescribeClusterV2\"))\n                    .resources(List.of(msk.getCluster().getAttrArn()))\n                    .effect(Effect.ALLOW)\n                    .principals(List.of(new ServicePrincipal(\"firehose.amazonaws.com\")))\n                    .build()))\n        .build();\n\nmsk.addClusterPolicy(cluterPolicy, \"cluterPolicy\");","version":"1"},"go":{"source":"msk := libmsk.NewMskProvisioned(stack, jsii.String(\"cluster\"))\n\ncluterPolicy := awscdk.NewPolicyDocument(&PolicyDocumentProps{\n\tStatements: []policyStatement{\n\t\tawscdk.NewPolicyStatement(&PolicyStatementProps{\n\t\t\tActions: []*string{\n\t\t\t\tjsii.String(\"kafka:CreateVpcConnection\"),\n\t\t\t\tjsii.String(\"kafka:GetBootstrapBrokers\"),\n\t\t\t\tjsii.String(\"kafka:DescribeClusterV2\"),\n\t\t\t},\n\t\t\tResources: []*string{\n\t\t\t\tmsk.Cluster.AttrArn,\n\t\t\t},\n\t\t\tEffect: awscdk.Effect_ALLOW,\n\t\t\tPrincipals: []iPrincipal{\n\t\t\t\tawscdk.NewServicePrincipal(jsii.String(\"firehose.amazonaws.com\")),\n\t\t\t},\n\t\t}),\n\t},\n})\n\nmsk.AddClusterPolicy(cluterPolicy, jsii.String(\"cluterPolicy\"))","version":"1"},"$":{"source":"const msk = new MskProvisioned(stack, 'cluster');\n\nconst cluterPolicy = new PolicyDocument(\n  {\n    statements: [\n      new PolicyStatement({\n        actions: [\n          'kafka:CreateVpcConnection',\n          'kafka:GetBootstrapBrokers',\n          'kafka:DescribeClusterV2',\n        ],\n        resources: [msk.cluster.attrArn],\n        effect: Effect.ALLOW,\n        principals: [new ServicePrincipal('firehose.amazonaws.com')],\n      }),\n    ],\n  },\n);\n\nmsk.addClusterPolicy(cluterPolicy, 'cluterPolicy');","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.streaming"},"field":{"field":"markdown","line":188}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.streaming.MskProvisioned","@cdklabs/aws-data-solutions-framework.streaming.MskProvisioned#addClusterPolicy","@cdklabs/aws-data-solutions-framework.streaming.MskProvisioned#cluster","aws-cdk-lib.aws_iam.Effect","aws-cdk-lib.aws_iam.Effect#ALLOW","aws-cdk-lib.aws_iam.PolicyDocument","aws-cdk-lib.aws_iam.PolicyDocumentProps","aws-cdk-lib.aws_iam.PolicyStatement","aws-cdk-lib.aws_iam.PolicyStatementProps","aws-cdk-lib.aws_iam.ServicePrincipal","aws-cdk-lib.aws_msk.CfnCluster#attrArn","constructs.Construct"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { MskProvisioned } from '../lib/msk';\nimport { Effect, PolicyDocument, PolicyStatement, ServicePrincipal } from 'aws-cdk-lib/aws-iam';\n\n\nconst app = new cdk.App();\n\nconst stack = new cdk.Stack(app, 'MskProvisionedDsf');\n\nstack.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\n/// !show\nconst msk = new MskProvisioned(stack, 'cluster');\n\nconst cluterPolicy = new PolicyDocument(\n  {\n    statements: [\n      new PolicyStatement({\n        actions: [\n          'kafka:CreateVpcConnection',\n          'kafka:GetBootstrapBrokers',\n          'kafka:DescribeClusterV2',\n        ],\n        resources: [msk.cluster.attrArn],\n        effect: Effect.ALLOW,\n        principals: [new ServicePrincipal('firehose.amazonaws.com')],\n      }),\n    ],\n  },\n);\n\nmsk.addClusterPolicy(cluterPolicy, 'cluterPolicy');\n/// !hide\n","syntaxKindCounter":{"11":6,"80":20,"209":4,"210":2,"211":4,"213":1,"214":4,"243":2,"244":1,"260":2,"261":2,"303":5},"fqnsFingerprint":"92f64a53ad25e85a35bda89ee50d21256b6caf7312d297cf5e118877fef3b52c"},"33da9d56d1852b819cab9b9db1cfcff044d61081912cdbcc8fbfbaede9fb2235":{"translations":{"python":{"source":"msk = MskServerless(stack, \"cluster\")","version":"2"},"csharp":{"source":"var msk = new MskServerless(stack, \"cluster\");","version":"1"},"java":{"source":"MskServerless msk = new MskServerless(stack, \"cluster\");","version":"1"},"go":{"source":"msk := libmsk.NewMskServerless(stack, jsii.String(\"cluster\"))","version":"1"},"$":{"source":"const msk = new MskServerless(stack, 'cluster');","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.streaming"},"field":{"field":"markdown","line":232}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.streaming.MskServerless","constructs.Construct"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { MskServerless } from '../lib/msk';\n\n\nconst app = new cdk.App();\n\nconst stack = new cdk.Stack(app, 'DsfTestMskServerless');\n\nstack.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\n/// !show\nconst msk = new MskServerless(stack, 'cluster');\n/// !hide\n\nnew cdk.CfnOutput(stack, 'mskArn', {\n  value: msk.cluster.attrArn,\n});\n\n\nmsk.addTopic('topic1', {\n  topic: 'topic1',\n  numPartitions: 3,\n  replicationFactor: 1,\n}, cdk.RemovalPolicy.DESTROY, false, 1500);\n\n\n","syntaxKindCounter":{"11":1,"80":3,"214":1,"243":1,"260":1,"261":1},"fqnsFingerprint":"68ec7d064bedc3437be0cc6aeab08e4e83725e7354a483e8c68abec8b0b94dd0"},"dd054b67ef1362eae84a9f90e6a9740a8686889fa080282350acbb83503c8ff3":{"translations":{"python":{"source":"vpc = Vpc.from_vpc_attributes(stack, \"vpc\",\n    vpc_id=\"vpc-1111111111\",\n    vpc_cidr_block=\"10.0.0.0/16\",\n    availability_zones=[\"eu-west-1a\", \"eu-west-1b\"],\n    public_subnet_ids=[\"subnet-111111111\", \"subnet-11111111\"],\n    private_subnet_ids=[\"subnet-11111111\", \"subnet-1111111\"]\n)\n\nmsk = MskServerless(stack, \"cluster\",\n    cluster_name=\"msk-byov\",\n    security_groups=[SecurityGroup.from_lookup_by_name(stack, \"brokerSecurityGroup\", \"broker-sg\", vpc)],\n    subnets=vpc.select_subnets(),\n    vpc=vpc\n)","version":"2"},"csharp":{"source":"var vpc = Vpc.FromVpcAttributes(stack, \"vpc\", new VpcAttributes {\n    VpcId = \"vpc-1111111111\",\n    VpcCidrBlock = \"10.0.0.0/16\",\n    AvailabilityZones = new [] { \"eu-west-1a\", \"eu-west-1b\" },\n    PublicSubnetIds = new [] { \"subnet-111111111\", \"subnet-11111111\" },\n    PrivateSubnetIds = new [] { \"subnet-11111111\", \"subnet-1111111\" }\n});\n\nvar msk = new MskServerless(stack, \"cluster\", new MskServerlessProps {\n    ClusterName = \"msk-byov\",\n    SecurityGroups = new [] { SecurityGroup.FromLookupByName(stack, \"brokerSecurityGroup\", \"broker-sg\", vpc) },\n    Subnets = vpc.SelectSubnets(),\n    Vpc = vpc\n});","version":"1"},"java":{"source":"IVpc vpc = Vpc.fromVpcAttributes(stack, \"vpc\", VpcAttributes.builder()\n        .vpcId(\"vpc-1111111111\")\n        .vpcCidrBlock(\"10.0.0.0/16\")\n        .availabilityZones(List.of(\"eu-west-1a\", \"eu-west-1b\"))\n        .publicSubnetIds(List.of(\"subnet-111111111\", \"subnet-11111111\"))\n        .privateSubnetIds(List.of(\"subnet-11111111\", \"subnet-1111111\"))\n        .build());\n\nMskServerless msk = MskServerless.Builder.create(stack, \"cluster\")\n        .clusterName(\"msk-byov\")\n        .securityGroups(List.of(SecurityGroup.fromLookupByName(stack, \"brokerSecurityGroup\", \"broker-sg\", vpc)))\n        .subnets(vpc.selectSubnets())\n        .vpc(vpc)\n        .build();","version":"1"},"go":{"source":"vpc := awscdk.Vpc_FromVpcAttributes(stack, jsii.String(\"vpc\"), &VpcAttributes{\n\tVpcId: jsii.String(\"vpc-1111111111\"),\n\tVpcCidrBlock: jsii.String(\"10.0.0.0/16\"),\n\tAvailabilityZones: []*string{\n\t\tjsii.String(\"eu-west-1a\"),\n\t\tjsii.String(\"eu-west-1b\"),\n\t},\n\tPublicSubnetIds: []*string{\n\t\tjsii.String(\"subnet-111111111\"),\n\t\tjsii.String(\"subnet-11111111\"),\n\t},\n\tPrivateSubnetIds: []*string{\n\t\tjsii.String(\"subnet-11111111\"),\n\t\tjsii.String(\"subnet-1111111\"),\n\t},\n})\n\nmsk := libmsk.NewMskServerless(stack, jsii.String(\"cluster\"), &MskServerlessProps{\n\tClusterName: jsii.String(\"msk-byov\"),\n\tSecurityGroups: []iSecurityGroup{\n\t\tawscdk.SecurityGroup_FromLookupByName(stack, jsii.String(\"brokerSecurityGroup\"), jsii.String(\"broker-sg\"), vpc),\n\t},\n\tSubnets: vpc.SelectSubnets(),\n\tVpc: vpc,\n})","version":"1"},"$":{"source":"let vpc = Vpc.fromVpcAttributes(stack, 'vpc', {\n    vpcId: 'vpc-1111111111',\n    vpcCidrBlock: '10.0.0.0/16',\n    availabilityZones: ['eu-west-1a', 'eu-west-1b'],\n    publicSubnetIds: ['subnet-111111111', 'subnet-11111111'],\n    privateSubnetIds: ['subnet-11111111', 'subnet-1111111'],\n});\n\nconst msk = new MskServerless(stack, 'cluster', {\n    clusterName: 'msk-byov',\n    securityGroups: [SecurityGroup.fromLookupByName(stack, 'brokerSecurityGroup', 'broker-sg', vpc)],\n    subnets: vpc.selectSubnets(),\n    vpc: vpc,\n  });","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.streaming"},"field":{"field":"markdown","line":244}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.streaming.MskServerless","@cdklabs/aws-data-solutions-framework.streaming.MskServerlessProps","aws-cdk-lib.aws_ec2.IVpc","aws-cdk-lib.aws_ec2.IVpc#selectSubnets","aws-cdk-lib.aws_ec2.SecurityGroup#fromLookupByName","aws-cdk-lib.aws_ec2.SubnetSelection","aws-cdk-lib.aws_ec2.Vpc#fromVpcAttributes","aws-cdk-lib.aws_ec2.VpcAttributes","constructs.Construct"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { MskServerless } from '../lib/msk';\nimport { SecurityGroup, Vpc } from 'aws-cdk-lib/aws-ec2';\n\n\nconst app = new cdk.App();\n\nconst stack = new cdk.Stack(app, 'DsfTestMskServerless');\n\nstack.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\n/// !show\nlet vpc = Vpc.fromVpcAttributes(stack, 'vpc', {\n    vpcId: 'vpc-1111111111',\n    vpcCidrBlock: '10.0.0.0/16',\n    availabilityZones: ['eu-west-1a', 'eu-west-1b'],\n    publicSubnetIds: ['subnet-111111111', 'subnet-11111111'],\n    privateSubnetIds: ['subnet-11111111', 'subnet-1111111'],\n});\n\nconst msk = new MskServerless(stack, 'cluster', {\n    clusterName: 'msk-byov',\n    securityGroups: [SecurityGroup.fromLookupByName(stack, 'brokerSecurityGroup', 'broker-sg', vpc)],\n    subnets: vpc.selectSubnets(),\n    vpc: vpc,\n  });\n/// !hide\n\nnew cdk.CfnOutput(stack, 'mskArn', {\n  value: msk.cluster.attrArn,\n});\n\n\nmsk.addTopic('topic1', {\n  topic: 'topic1',\n  numPartitions: 3,\n  replicationFactor: 1,\n}, cdk.RemovalPolicy.DESTROY, false, 1500);\n\n\n\n\n","syntaxKindCounter":{"11":13,"80":23,"209":4,"210":2,"211":3,"213":3,"214":1,"243":2,"260":2,"261":2,"303":9},"fqnsFingerprint":"b9336e1403462cbef87c9a8030cd8e3c0e0b08deddd2db565432916129f6e7d8"},"ec63928bd2c6d303a8d51335cdd491091d54b5f4a8ca607557253ba82d72b007":{"translations":{"python":{"source":"msk = MskServerless(stack, \"cluster\")\n\ntopic = MskTopic(\n    topic=\"topic1\",\n    num_partitions=3,\n    replication_factor=1,\n    config_entries=[{\n        \"name\": \"retention.ms\",\n        \"value\": \"90000\"\n    }, {\n        \"name\": \"retention.bytes\",\n        \"value\": \"90000\"\n    }\n    ]\n)\n\nmsk.add_topic(\"topic1\", topic, cdk.RemovalPolicy.DESTROY, False, 1500)","version":"2"},"csharp":{"source":"var msk = new MskServerless(stack, \"cluster\");\n\nvar topic = new MskTopic {\n    Topic = \"topic1\",\n    NumPartitions = 3,\n    ReplicationFactor = 1,\n    ConfigEntries = new [] { new Dictionary<string, string> {\n        { \"name\", \"retention.ms\" },\n        { \"value\", \"90000\" }\n    }, new Dictionary<string, string> {\n        { \"name\", \"retention.bytes\" },\n        { \"value\", \"90000\" }\n    } }\n};\n\nmsk.AddTopic(\"topic1\", topic, RemovalPolicy.DESTROY, false, 1500);","version":"1"},"java":{"source":"MskServerless msk = new MskServerless(stack, \"cluster\");\n\nMskTopic topic = MskTopic.builder()\n        .topic(\"topic1\")\n        .numPartitions(3)\n        .replicationFactor(1)\n        .configEntries(List.of(Map.of(\n                \"name\", \"retention.ms\",\n                \"value\", \"90000\"), Map.of(\n                \"name\", \"retention.bytes\",\n                \"value\", \"90000\")))\n        .build();\n\nmsk.addTopic(\"topic1\", topic, RemovalPolicy.DESTROY, false, 1500);","version":"1"},"go":{"source":"msk := libmsk.NewMskServerless(stack, jsii.String(\"cluster\"))\n\ntopic := &MskTopic{\n\tTopic: jsii.String(\"topic1\"),\n\tNumPartitions: jsii.Number(3),\n\tReplicationFactor: jsii.Number(1),\n\tConfigEntries: []map[string]*string{\n\t\tmap[string]*string{\n\t\t\t\"name\": jsii.String(\"retention.ms\"),\n\t\t\t\"value\": jsii.String(\"90000\"),\n\t\t},\n\t\tmap[string]*string{\n\t\t\t\"name\": jsii.String(\"retention.bytes\"),\n\t\t\t\"value\": jsii.String(\"90000\"),\n\t\t},\n\t},\n}\n\nmsk.AddTopic(jsii.String(\"topic1\"), topic, cdk.RemovalPolicy_DESTROY, jsii.Boolean(false), jsii.Number(1500))","version":"1"},"$":{"source":"const msk = new MskServerless(stack, 'cluster');\n\nlet topic: MskTopic =  {\n  topic: 'topic1',\n  numPartitions: 3,\n  replicationFactor: 1,\n  configEntries: [\n    {\n      name: 'retention.ms',\n      value: '90000',\n    },\n    {\n      name: 'retention.bytes',\n      value: '90000',\n    },\n  ],\n}\n\nmsk.addTopic('topic1', topic, cdk.RemovalPolicy.DESTROY, false, 1500);","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.streaming"},"field":{"field":"markdown","line":278}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.streaming.MskServerless","@cdklabs/aws-data-solutions-framework.streaming.MskServerless#addTopic","@cdklabs/aws-data-solutions-framework.streaming.MskTopic","aws-cdk-lib.RemovalPolicy","aws-cdk-lib.RemovalPolicy#DESTROY","constructs.Construct"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { MskServerless, MskTopic } from '../lib/msk';\n\n\nconst app = new cdk.App();\n\nconst stack = new cdk.Stack(app, 'DsfTestMskServerless');\n\nstack.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\n/// !show\nconst msk = new MskServerless(stack, 'cluster');\n\nlet topic: MskTopic =  {\n  topic: 'topic1',\n  numPartitions: 3,\n  replicationFactor: 1,\n  configEntries: [\n    {\n      name: 'retention.ms',\n      value: '90000',\n    },\n    {\n      name: 'retention.bytes',\n      value: '90000',\n    },\n  ],\n}\n\nmsk.addTopic('topic1', topic, cdk.RemovalPolicy.DESTROY, false, 1500);\n/// !hide\n\nnew cdk.CfnOutput(stack, 'mskArn', {\n  value: msk.cluster.attrArn,\n});","syntaxKindCounter":{"9":3,"11":7,"80":19,"97":1,"183":1,"209":1,"210":3,"211":3,"213":1,"214":1,"243":2,"244":1,"260":2,"261":2,"303":8},"fqnsFingerprint":"0ab70b52e26eaeed765123bdf832671630e44307000f9d4eeaa71d1501796658"},"e77b9ade360f7febe64918211146a966bdbef0ecf3cfe02f821ba6cc75df7fd1":{"translations":{"python":{"source":"msk = MskServerless(stack, \"cluster\")\n\niam_role = Role.from_role_name(stack, \"role\", \"role\")\n\nmsk.grant_produce(\"topic1\", iam_role)","version":"2"},"csharp":{"source":"var msk = new MskServerless(stack, \"cluster\");\n\nvar iamRole = Role.FromRoleName(stack, \"role\", \"role\");\n\nmsk.GrantProduce(\"topic1\", iamRole);","version":"1"},"java":{"source":"MskServerless msk = new MskServerless(stack, \"cluster\");\n\nIRole iamRole = Role.fromRoleName(stack, \"role\", \"role\");\n\nmsk.grantProduce(\"topic1\", iamRole);","version":"1"},"go":{"source":"msk := libmsk.NewMskServerless(stack, jsii.String(\"cluster\"))\n\niamRole := awscdk.Role_FromRoleName(stack, jsii.String(\"role\"), jsii.String(\"role\"))\n\nmsk.GrantProduce(jsii.String(\"topic1\"), iamRole)","version":"1"},"$":{"source":"const msk = new MskServerless(stack, 'cluster');\n\nlet iamRole = Role.fromRoleName(stack, 'role', 'role');\n\nmsk.grantProduce('topic1',iamRole);","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.streaming"},"field":{"field":"markdown","line":306}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.streaming.MskServerless","@cdklabs/aws-data-solutions-framework.streaming.MskServerless#grantProduce","aws-cdk-lib.aws_iam.IPrincipal","aws-cdk-lib.aws_iam.IRole","aws-cdk-lib.aws_iam.Role#fromRoleName","constructs.Construct"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { MskServerless } from '../lib/msk';\nimport { Role } from 'aws-cdk-lib/aws-iam';\n\n\nconst app = new cdk.App();\n\nconst stack = new cdk.Stack(app, 'DsfTestMskServerless');\n\nstack.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\n/// !show\nconst msk = new MskServerless(stack, 'cluster');\n\nlet iamRole = Role.fromRoleName(stack, 'role', 'role');\n\nmsk.grantProduce('topic1',iamRole);\n/// !hide\n\nnew cdk.CfnOutput(stack, 'mskArn', {\n  value: msk.cluster.attrArn,\n});","syntaxKindCounter":{"11":4,"80":10,"211":2,"213":2,"214":1,"243":2,"244":1,"260":2,"261":2},"fqnsFingerprint":"6594bbfa2e273ec5ad1113a5a9e50d8c465153fc0aae32aff857023073f65e95"},"a5bb225882ad1e67fc505ef64f5955c89c5a9de756f125c357d4b7b67ff1004c":{"translations":{"python":{"source":"msk = MskServerless(stack, \"cluster\")\n\niam_role = Role.from_role_name(stack, \"role\", \"role\")\n\nmsk.grant_consume(\"topic1\", iam_role)","version":"2"},"csharp":{"source":"var msk = new MskServerless(stack, \"cluster\");\n\nvar iamRole = Role.FromRoleName(stack, \"role\", \"role\");\n\nmsk.GrantConsume(\"topic1\", iamRole);","version":"1"},"java":{"source":"MskServerless msk = new MskServerless(stack, \"cluster\");\n\nIRole iamRole = Role.fromRoleName(stack, \"role\", \"role\");\n\nmsk.grantConsume(\"topic1\", iamRole);","version":"1"},"go":{"source":"msk := libmsk.NewMskServerless(stack, jsii.String(\"cluster\"))\n\niamRole := awscdk.Role_FromRoleName(stack, jsii.String(\"role\"), jsii.String(\"role\"))\n\nmsk.GrantConsume(jsii.String(\"topic1\"), iamRole)","version":"1"},"$":{"source":"const msk = new MskServerless(stack, 'cluster');\n\nconst iamRole = Role.fromRoleName(stack, 'role', 'role');\n\nmsk.grantConsume('topic1',iamRole);","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.streaming"},"field":{"field":"markdown","line":318}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.streaming.MskServerless","@cdklabs/aws-data-solutions-framework.streaming.MskServerless#grantConsume","aws-cdk-lib.aws_iam.IPrincipal","aws-cdk-lib.aws_iam.IRole","aws-cdk-lib.aws_iam.Role#fromRoleName","constructs.Construct"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { MskServerless } from '../lib/msk';\nimport { Role } from 'aws-cdk-lib/aws-iam';\n\n\nconst app = new cdk.App();\n\nconst stack = new cdk.Stack(app, 'DsfTestMskServerless');\n\nstack.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\n/// !show\nconst msk = new MskServerless(stack, 'cluster');\n\nconst iamRole = Role.fromRoleName(stack, 'role', 'role');\n\nmsk.grantConsume('topic1',iamRole);\n/// !hide\n\nnew cdk.CfnOutput(stack, 'mskArn', {\n  value: msk.cluster.attrArn,\n});","syntaxKindCounter":{"11":4,"80":10,"211":2,"213":2,"214":1,"243":2,"244":1,"260":2,"261":2},"fqnsFingerprint":"0c657a7f037d2045a1b8ed39f8f780500b713d0c315855569b7a09096741af61"},"668b18e3f6a9ac9ce16a07ff8bdd7a30c2d739b12f5aa886c7001a6879c5d8b1":{"translations":{"python":{"source":"msk = MskServerless(stack, \"cluster\")\n\ncluter_policy = PolicyDocument(\n    statements=[\n        PolicyStatement(\n            actions=[\"kafka:CreateVpcConnection\", \"kafka:GetBootstrapBrokers\", \"kafka:DescribeClusterV2\"\n            ],\n            resources=[msk.cluster.attr_arn],\n            effect=Effect.ALLOW,\n            principals=[ServicePrincipal(\"firehose.amazonaws.com\")]\n        )\n    ]\n)\n\nmsk.add_cluster_policy(cluter_policy, \"cluterPolicy\")","version":"2"},"csharp":{"source":"var msk = new MskServerless(stack, \"cluster\");\n\nvar cluterPolicy = new PolicyDocument(new PolicyDocumentProps {\n    Statements = new [] {\n        new PolicyStatement(new PolicyStatementProps {\n            Actions = new [] { \"kafka:CreateVpcConnection\", \"kafka:GetBootstrapBrokers\", \"kafka:DescribeClusterV2\" },\n            Resources = new [] { msk.Cluster.AttrArn },\n            Effect = Effect.ALLOW,\n            Principals = new [] { new ServicePrincipal(\"firehose.amazonaws.com\") }\n        }) }\n});\n\nmsk.AddClusterPolicy(cluterPolicy, \"cluterPolicy\");","version":"1"},"java":{"source":"MskServerless msk = new MskServerless(stack, \"cluster\");\n\nPolicyDocument cluterPolicy = PolicyDocument.Builder.create()\n        .statements(List.of(\n            PolicyStatement.Builder.create()\n                    .actions(List.of(\"kafka:CreateVpcConnection\", \"kafka:GetBootstrapBrokers\", \"kafka:DescribeClusterV2\"))\n                    .resources(List.of(msk.getCluster().getAttrArn()))\n                    .effect(Effect.ALLOW)\n                    .principals(List.of(new ServicePrincipal(\"firehose.amazonaws.com\")))\n                    .build()))\n        .build();\n\nmsk.addClusterPolicy(cluterPolicy, \"cluterPolicy\");","version":"1"},"go":{"source":"msk := libmsk.NewMskServerless(stack, jsii.String(\"cluster\"))\n\ncluterPolicy := awscdk.NewPolicyDocument(&PolicyDocumentProps{\n\tStatements: []policyStatement{\n\t\tawscdk.NewPolicyStatement(&PolicyStatementProps{\n\t\t\tActions: []*string{\n\t\t\t\tjsii.String(\"kafka:CreateVpcConnection\"),\n\t\t\t\tjsii.String(\"kafka:GetBootstrapBrokers\"),\n\t\t\t\tjsii.String(\"kafka:DescribeClusterV2\"),\n\t\t\t},\n\t\t\tResources: []*string{\n\t\t\t\tmsk.Cluster.AttrArn,\n\t\t\t},\n\t\t\tEffect: awscdk.Effect_ALLOW,\n\t\t\tPrincipals: []iPrincipal{\n\t\t\t\tawscdk.NewServicePrincipal(jsii.String(\"firehose.amazonaws.com\")),\n\t\t\t},\n\t\t}),\n\t},\n})\n\nmsk.AddClusterPolicy(cluterPolicy, jsii.String(\"cluterPolicy\"))","version":"1"},"$":{"source":"const msk = new MskServerless(stack, 'cluster');\n\nconst cluterPolicy = new PolicyDocument(\n  {\n    statements: [\n      new PolicyStatement({\n        actions: [\n          'kafka:CreateVpcConnection',\n          'kafka:GetBootstrapBrokers',\n          'kafka:DescribeClusterV2',\n        ],\n        resources: [msk.cluster.attrArn],\n        effect: Effect.ALLOW,\n        principals: [new ServicePrincipal('firehose.amazonaws.com')],\n      }),\n    ],\n  },\n);\n\nmsk.addClusterPolicy(cluterPolicy, 'cluterPolicy');","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.streaming"},"field":{"field":"markdown","line":331}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.streaming.MskServerless","@cdklabs/aws-data-solutions-framework.streaming.MskServerless#addClusterPolicy","@cdklabs/aws-data-solutions-framework.streaming.MskServerless#cluster","aws-cdk-lib.aws_iam.Effect","aws-cdk-lib.aws_iam.Effect#ALLOW","aws-cdk-lib.aws_iam.PolicyDocument","aws-cdk-lib.aws_iam.PolicyDocumentProps","aws-cdk-lib.aws_iam.PolicyStatement","aws-cdk-lib.aws_iam.PolicyStatementProps","aws-cdk-lib.aws_iam.ServicePrincipal","aws-cdk-lib.aws_msk.CfnServerlessCluster#attrArn","constructs.Construct"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { MskServerless } from '../lib/msk';\nimport { Effect, PolicyDocument, PolicyStatement, ServicePrincipal } from 'aws-cdk-lib/aws-iam';\n\n\nconst app = new cdk.App();\n\nconst stack = new cdk.Stack(app, 'MskProvisionedDsf');\n\nstack.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\n/// !show\nconst msk = new MskServerless(stack, 'cluster');\n\nconst cluterPolicy = new PolicyDocument(\n  {\n    statements: [\n      new PolicyStatement({\n        actions: [\n          'kafka:CreateVpcConnection',\n          'kafka:GetBootstrapBrokers',\n          'kafka:DescribeClusterV2',\n        ],\n        resources: [msk.cluster.attrArn],\n        effect: Effect.ALLOW,\n        principals: [new ServicePrincipal('firehose.amazonaws.com')],\n      }),\n    ],\n  },\n);\n\nmsk.addClusterPolicy(cluterPolicy, 'cluterPolicy');\n/// !hide\n","syntaxKindCounter":{"11":6,"80":20,"209":4,"210":2,"211":4,"213":1,"214":4,"243":2,"244":1,"260":2,"261":2,"303":5},"fqnsFingerprint":"85c7d5952c98b4b063d8e40673e216828ec35c0396ceb5e4284b46c9e04aed34"},"2fae63ba12c576d33c193b5eda3c5f93b385d1ef9af8fb219c28b5e7be1aefed":{"translations":{"python":{"source":"certificate_authority = CertificateAuthority.from_certificate_authority_arn(stack, \"certificateAuthority\", \"arn:aws:acm-pca:eu-west-1:12345678912:certificate-authority/dummy-ca\")\n\nsecret = Secret.from_secret_complete_arn(stack, \"secret\", \"arn:aws:secretsmanager:eu-west-1:12345678912:secret:dsf/mskCert-dummy\")\n\nvpc = Vpc.from_vpc_attributes(stack, \"vpc\",\n    vpc_id=\"vpc-1111111111\",\n    vpc_cidr_block=\"10.0.0.0/16\",\n    availability_zones=[\"eu-west-1a\", \"eu-west-1b\"],\n    public_subnet_ids=[\"subnet-111111111\", \"subnet-11111111\"],\n    private_subnet_ids=[\"subnet-11111111\", \"subnet-1111111\"]\n)\n\nkafka_api = KafkaApi(stack, \"kafkaApi\",\n    vpc=vpc,\n    cluster_arn=\"arn:aws:kafka:eu-west-1:12345678912:cluster/byo-msk/dummy-5cf3-42d5-aece-dummmy-2\",\n    cluster_type=MskClusterType.PROVISIONED,\n    broker_security_group=SecurityGroup.from_security_group_id(stack, \"brokerSecurityGroup\", \"sg-98237412hsa\"),\n    certficate_secret=secret,\n    client_authentication=ClientAuthentication.sasl_tls(\n        iam=True,\n        certificate_authorities=[certificate_authority]\n    ),\n    kafka_client_log_level=KafkaClientLogLevel.DEBUG,\n    service_token=\"arn:aws:lambda::XXXXXX:function:XXXXXX-kafkaApiMskIamProviderCustomResour-XXXXXX\"\n)","version":"2"},"csharp":{"source":"var certificateAuthority = CertificateAuthority.FromCertificateAuthorityArn(stack, \"certificateAuthority\", \"arn:aws:acm-pca:eu-west-1:12345678912:certificate-authority/dummy-ca\");\n\nvar secret = Secret.FromSecretCompleteArn(stack, \"secret\", \"arn:aws:secretsmanager:eu-west-1:12345678912:secret:dsf/mskCert-dummy\");\n\nvar vpc = Vpc.FromVpcAttributes(stack, \"vpc\", new VpcAttributes {\n    VpcId = \"vpc-1111111111\",\n    VpcCidrBlock = \"10.0.0.0/16\",\n    AvailabilityZones = new [] { \"eu-west-1a\", \"eu-west-1b\" },\n    PublicSubnetIds = new [] { \"subnet-111111111\", \"subnet-11111111\" },\n    PrivateSubnetIds = new [] { \"subnet-11111111\", \"subnet-1111111\" }\n});\n\nvar kafkaApi = new KafkaApi(stack, \"kafkaApi\", new KafkaApiProps {\n    Vpc = vpc,\n    ClusterArn = \"arn:aws:kafka:eu-west-1:12345678912:cluster/byo-msk/dummy-5cf3-42d5-aece-dummmy-2\",\n    ClusterType = MskClusterType.PROVISIONED,\n    BrokerSecurityGroup = SecurityGroup.FromSecurityGroupId(stack, \"brokerSecurityGroup\", \"sg-98237412hsa\"),\n    CertficateSecret = secret,\n    ClientAuthentication = ClientAuthentication.SaslTls(new SaslTlsAuthProps {\n        Iam = true,\n        CertificateAuthorities = new [] { certificateAuthority }\n    }),\n    KafkaClientLogLevel = KafkaClientLogLevel.DEBUG,\n    ServiceToken = \"arn:aws:lambda::XXXXXX:function:XXXXXX-kafkaApiMskIamProviderCustomResour-XXXXXX\"\n});","version":"1"},"java":{"source":"ICertificateAuthority certificateAuthority = CertificateAuthority.fromCertificateAuthorityArn(stack, \"certificateAuthority\", \"arn:aws:acm-pca:eu-west-1:12345678912:certificate-authority/dummy-ca\");\n\nISecret secret = Secret.fromSecretCompleteArn(stack, \"secret\", \"arn:aws:secretsmanager:eu-west-1:12345678912:secret:dsf/mskCert-dummy\");\n\nIVpc vpc = Vpc.fromVpcAttributes(stack, \"vpc\", VpcAttributes.builder()\n        .vpcId(\"vpc-1111111111\")\n        .vpcCidrBlock(\"10.0.0.0/16\")\n        .availabilityZones(List.of(\"eu-west-1a\", \"eu-west-1b\"))\n        .publicSubnetIds(List.of(\"subnet-111111111\", \"subnet-11111111\"))\n        .privateSubnetIds(List.of(\"subnet-11111111\", \"subnet-1111111\"))\n        .build());\n\nKafkaApi kafkaApi = KafkaApi.Builder.create(stack, \"kafkaApi\")\n        .vpc(vpc)\n        .clusterArn(\"arn:aws:kafka:eu-west-1:12345678912:cluster/byo-msk/dummy-5cf3-42d5-aece-dummmy-2\")\n        .clusterType(MskClusterType.PROVISIONED)\n        .brokerSecurityGroup(SecurityGroup.fromSecurityGroupId(stack, \"brokerSecurityGroup\", \"sg-98237412hsa\"))\n        .certficateSecret(secret)\n        .clientAuthentication(ClientAuthentication.saslTls(SaslTlsAuthProps.builder()\n                .iam(true)\n                .certificateAuthorities(List.of(certificateAuthority))\n                .build()))\n        .kafkaClientLogLevel(KafkaClientLogLevel.DEBUG)\n        .serviceToken(\"arn:aws:lambda::XXXXXX:function:XXXXXX-kafkaApiMskIamProviderCustomResour-XXXXXX\")\n        .build();","version":"1"},"go":{"source":"certificateAuthority := awscdk.CertificateAuthority_FromCertificateAuthorityArn(stack, jsii.String(\"certificateAuthority\"), jsii.String(\"arn:aws:acm-pca:eu-west-1:12345678912:certificate-authority/dummy-ca\"))\n\nsecret := awscdk.Secret_FromSecretCompleteArn(stack, jsii.String(\"secret\"), jsii.String(\"arn:aws:secretsmanager:eu-west-1:12345678912:secret:dsf/mskCert-dummy\"))\n\nvpc := awscdk.Vpc_FromVpcAttributes(stack, jsii.String(\"vpc\"), &VpcAttributes{\n\tVpcId: jsii.String(\"vpc-1111111111\"),\n\tVpcCidrBlock: jsii.String(\"10.0.0.0/16\"),\n\tAvailabilityZones: []*string{\n\t\tjsii.String(\"eu-west-1a\"),\n\t\tjsii.String(\"eu-west-1b\"),\n\t},\n\tPublicSubnetIds: []*string{\n\t\tjsii.String(\"subnet-111111111\"),\n\t\tjsii.String(\"subnet-11111111\"),\n\t},\n\tPrivateSubnetIds: []*string{\n\t\tjsii.String(\"subnet-11111111\"),\n\t\tjsii.String(\"subnet-1111111\"),\n\t},\n})\n\nkafkaApi := libmskkafkaapi.NewKafkaApi(stack, jsii.String(\"kafkaApi\"), &KafkaApiProps{\n\tVpc: vpc,\n\tClusterArn: jsii.String(\"arn:aws:kafka:eu-west-1:12345678912:cluster/byo-msk/dummy-5cf3-42d5-aece-dummmy-2\"),\n\tClusterType: libmsk.MskClusterType_PROVISIONED,\n\tBrokerSecurityGroup: awscdk.SecurityGroup_FromSecurityGroupId(stack, jsii.String(\"brokerSecurityGroup\"), jsii.String(\"sg-98237412hsa\")),\n\tCertficateSecret: secret,\n\tClientAuthentication: *libmsk.ClientAuthentication_SaslTls(&SaslTlsAuthProps{\n\t\tIam: jsii.Boolean(true),\n\t\tCertificateAuthorities: []iCertificateAuthority{\n\t\t\tcertificateAuthority,\n\t\t},\n\t}),\n\tKafkaClientLogLevel: *libmsk.KafkaClientLogLevel_DEBUG,\n\tServiceToken: jsii.String(\"arn:aws:lambda::XXXXXX:function:XXXXXX-kafkaApiMskIamProviderCustomResour-XXXXXX\"),\n})","version":"1"},"$":{"source":"let certificateAuthority = CertificateAuthority.fromCertificateAuthorityArn(\n  stack, 'certificateAuthority',\n  'arn:aws:acm-pca:eu-west-1:12345678912:certificate-authority/dummy-ca'\n);\n\nlet secret = Secret.fromSecretCompleteArn(\n  stack, 'secret', 'arn:aws:secretsmanager:eu-west-1:12345678912:secret:dsf/mskCert-dummy'\n);\n\nlet vpc = Vpc.fromVpcAttributes(stack, 'vpc', {\n  vpcId: 'vpc-1111111111',\n  vpcCidrBlock: '10.0.0.0/16',\n  availabilityZones: ['eu-west-1a', 'eu-west-1b'],\n  publicSubnetIds: ['subnet-111111111', 'subnet-11111111'],\n  privateSubnetIds: ['subnet-11111111', 'subnet-1111111'],\n});\n\n\nconst kafkaApi = new KafkaApi(stack, 'kafkaApi', {\n  vpc: vpc,\n  clusterArn: 'arn:aws:kafka:eu-west-1:12345678912:cluster/byo-msk/dummy-5cf3-42d5-aece-dummmy-2',\n  clusterType: MskClusterType.PROVISIONED,\n  brokerSecurityGroup: SecurityGroup.fromSecurityGroupId(stack, 'brokerSecurityGroup', 'sg-98237412hsa'),\n  certficateSecret: secret,\n  clientAuthentication: ClientAuthentication.saslTls({\n    iam: true,\n    certificateAuthorities: [certificateAuthority],\n  },),\n  kafkaClientLogLevel: KafkaClientLogLevel.DEBUG,\n  serviceToken: 'arn:aws:lambda::XXXXXX:function:XXXXXX-kafkaApiMskIamProviderCustomResour-XXXXXX',\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.streaming"},"field":{"field":"markdown","line":363}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.streaming.AclOperationTypes","@cdklabs/aws-data-solutions-framework.streaming.AclPermissionTypes","@cdklabs/aws-data-solutions-framework.streaming.AclResourceTypes","@cdklabs/aws-data-solutions-framework.streaming.ClientAuthentication","@cdklabs/aws-data-solutions-framework.streaming.ClientAuthentication#saslTls","@cdklabs/aws-data-solutions-framework.streaming.KafkaApi","@cdklabs/aws-data-solutions-framework.streaming.KafkaApiProps","@cdklabs/aws-data-solutions-framework.streaming.KafkaClientLogLevel","@cdklabs/aws-data-solutions-framework.streaming.KafkaClientLogLevel#DEBUG","@cdklabs/aws-data-solutions-framework.streaming.MskClusterType","@cdklabs/aws-data-solutions-framework.streaming.MskClusterType#PROVISIONED","@cdklabs/aws-data-solutions-framework.streaming.ResourcePatternTypes","@cdklabs/aws-data-solutions-framework.streaming.SaslTlsAuthProps","aws-cdk-lib.aws_acmpca.CertificateAuthority#fromCertificateAuthorityArn","aws-cdk-lib.aws_acmpca.ICertificateAuthority","aws-cdk-lib.aws_ec2.ISecurityGroup","aws-cdk-lib.aws_ec2.IVpc","aws-cdk-lib.aws_ec2.SecurityGroup#fromSecurityGroupId","aws-cdk-lib.aws_ec2.Vpc#fromVpcAttributes","aws-cdk-lib.aws_ec2.VpcAttributes","aws-cdk-lib.aws_secretsmanager.ISecret","aws-cdk-lib.aws_secretsmanager.Secret#fromSecretCompleteArn","constructs.Construct"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { SecurityGroup, Vpc } from 'aws-cdk-lib/aws-ec2';\nimport { AclOperationTypes, AclPermissionTypes, AclResourceTypes, ClientAuthentication, KafkaClientLogLevel, MskClusterType, ResourcePatternTypes } from '../lib/msk';\nimport { KafkaApi } from '../lib/msk/kafka-api';\nimport { CertificateAuthority } from 'aws-cdk-lib/aws-acmpca';\nimport { Secret } from 'aws-cdk-lib/aws-secretsmanager';\n\n\nconst app = new cdk.App();\n\nconst stack = new cdk.Stack(app, 'MskProvisionedDsf');\n\nstack.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\n\n/// !show\nlet certificateAuthority = CertificateAuthority.fromCertificateAuthorityArn(\n  stack, 'certificateAuthority',\n  'arn:aws:acm-pca:eu-west-1:12345678912:certificate-authority/dummy-ca'\n);\n\nlet secret = Secret.fromSecretCompleteArn(\n  stack, 'secret', 'arn:aws:secretsmanager:eu-west-1:12345678912:secret:dsf/mskCert-dummy'\n);\n\nlet vpc = Vpc.fromVpcAttributes(stack, 'vpc', {\n  vpcId: 'vpc-1111111111',\n  vpcCidrBlock: '10.0.0.0/16',\n  availabilityZones: ['eu-west-1a', 'eu-west-1b'],\n  publicSubnetIds: ['subnet-111111111', 'subnet-11111111'],\n  privateSubnetIds: ['subnet-11111111', 'subnet-1111111'],\n});\n\n\nconst kafkaApi = new KafkaApi(stack, 'kafkaApi', {\n  vpc: vpc,\n  clusterArn: 'arn:aws:kafka:eu-west-1:12345678912:cluster/byo-msk/dummy-5cf3-42d5-aece-dummmy-2',\n  clusterType: MskClusterType.PROVISIONED,\n  brokerSecurityGroup: SecurityGroup.fromSecurityGroupId(stack, 'brokerSecurityGroup', 'sg-98237412hsa'),\n  certficateSecret: secret,\n  clientAuthentication: ClientAuthentication.saslTls({\n    iam: true,\n    certificateAuthorities: [certificateAuthority],\n  },),\n  kafkaClientLogLevel: KafkaClientLogLevel.DEBUG,\n  serviceToken: 'arn:aws:lambda::XXXXXX:function:XXXXXX-kafkaApiMskIamProviderCustomResour-XXXXXX',\n});\n/// !hide\n\nkafkaApi.setAcl('acl', {\n  resourceType: AclResourceTypes.TOPIC,\n  resourceName: 'topic-1',\n  resourcePatternType: ResourcePatternTypes.LITERAL,\n  principal: 'User:Cn=MyUser',\n  host: '*',\n  operation: AclOperationTypes.CREATE,\n  permissionType: AclPermissionTypes.ALLOW,\n},\ncdk.RemovalPolicy.DESTROY);\n\n","syntaxKindCounter":{"11":18,"80":42,"112":1,"209":4,"210":3,"211":7,"213":5,"214":1,"243":4,"260":4,"261":4,"303":15},"fqnsFingerprint":"e0049b5d8e03141ba724ca293797cf869486cf554f23e6adf8a5236a04eee1d0"},"65b6cb120aedf991e1bcd711b94124f2c2e4a0cc58471fcdb38ed60ce72aa011":{"translations":{"python":{"source":"kafka_api.set_topic(\"topic1\", Authentication.IAM, MskTopic(\n    topic=\"topic1\",\n    num_partitions=3,\n    replication_factor=1\n), cdk.RemovalPolicy.DESTROY, False, 1500)","version":"2"},"csharp":{"source":"kafkaApi.SetTopic(\"topic1\", Authentication.IAM, new MskTopic {\n    Topic = \"topic1\",\n    NumPartitions = 3,\n    ReplicationFactor = 1\n}, RemovalPolicy.DESTROY, false, 1500);","version":"1"},"java":{"source":"kafkaApi.setTopic(\"topic1\", Authentication.IAM, MskTopic.builder()\n        .topic(\"topic1\")\n        .numPartitions(3)\n        .replicationFactor(1)\n        .build(), RemovalPolicy.DESTROY, false, 1500);","version":"1"},"go":{"source":"kafkaApi.SetTopic(jsii.String(\"topic1\"), libmsk.Authentication_IAM, &MskTopic{\n\tTopic: jsii.String(\"topic1\"),\n\tNumPartitions: jsii.Number(3),\n\tReplicationFactor: jsii.Number(1),\n}, cdk.RemovalPolicy_DESTROY, jsii.Boolean(false), jsii.Number(1500))","version":"1"},"$":{"source":"kafkaApi.setTopic('topic1',\n  Authentication.IAM,\n  {\n    topic: 'topic1',\n    numPartitions: 3,\n    replicationFactor: 1,\n  },\n  cdk.RemovalPolicy.DESTROY, false, 1500\n);","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.streaming"},"field":{"field":"markdown","line":456}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.streaming.Authentication","@cdklabs/aws-data-solutions-framework.streaming.Authentication#IAM","@cdklabs/aws-data-solutions-framework.streaming.ClientAuthentication","@cdklabs/aws-data-solutions-framework.streaming.KafkaApi#setTopic","@cdklabs/aws-data-solutions-framework.streaming.KafkaClientLogLevel","@cdklabs/aws-data-solutions-framework.streaming.MskClusterType","@cdklabs/aws-data-solutions-framework.streaming.MskTopic","aws-cdk-lib.RemovalPolicy","aws-cdk-lib.RemovalPolicy#DESTROY","aws-cdk-lib.aws_ec2.ISecurityGroup","aws-cdk-lib.aws_ec2.IVpc","aws-cdk-lib.aws_secretsmanager.ISecret"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { SecurityGroup, Vpc } from 'aws-cdk-lib/aws-ec2';\nimport { Authentication, ClientAuthentication, KafkaClientLogLevel, MskClusterType } from '../lib/msk';\nimport { KafkaApi } from '../lib/msk/kafka-api';\nimport { CertificateAuthority } from 'aws-cdk-lib/aws-acmpca';\nimport { Secret } from 'aws-cdk-lib/aws-secretsmanager';\n\n\nconst app = new cdk.App();\n\nconst stack = new cdk.Stack(app, 'MskProvisionedDsf');\n\nstack.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\n\n\nlet certificateAuthority = CertificateAuthority.fromCertificateAuthorityArn(\n  stack, 'certificateAuthority',\n  'arn:aws:acm-pca:eu-west-1:12345678912:certificate-authority/dummy-ca'\n);\n\nlet secret = Secret.fromSecretCompleteArn(\n  stack, 'secret', 'arn:aws:secretsmanager:eu-west-1:12345678912:secret:dsf/mskCert-dummy'\n);\n\nlet vpc = Vpc.fromVpcAttributes(stack, 'vpc', {\n  vpcId: 'vpc-1111111111',\n  vpcCidrBlock: '10.0.0.0/16',\n  availabilityZones: ['eu-west-1a', 'eu-west-1b'],\n  publicSubnetIds: ['subnet-111111111', 'subnet-11111111'],\n  privateSubnetIds: ['subnet-11111111', 'subnet-1111111'],\n});\n\n\nconst kafkaApi = new KafkaApi(stack, 'kafkaApi', {\n  vpc: vpc,\n  clusterArn: 'arn:aws:kafka:eu-west-1:12345678912:cluster/byo-msk/dummy-5cf3-42d5-aece-dummmy-2',\n  clusterType: MskClusterType.PROVISIONED,\n  brokerSecurityGroup: SecurityGroup.fromSecurityGroupId(stack, 'brokerSecurityGroup', 'sg-98237412hsa'),\n  certficateSecret: secret,\n  clientAuthentication: ClientAuthentication.saslTls({\n    iam: true,\n    certificateAuthorities: [certificateAuthority],\n  },),\n  kafkaClientLogLevel: KafkaClientLogLevel.DEBUG,\n});\n\n\n/// !show\nkafkaApi.setTopic('topic1',\n  Authentication.IAM, \n  {\n    topic: 'topic1',\n    numPartitions: 3,\n    replicationFactor: 1,\n  }, \n  cdk.RemovalPolicy.DESTROY, false, 1500\n);\n/// !hide\n","syntaxKindCounter":{"9":3,"11":2,"80":10,"97":1,"210":1,"211":4,"213":1,"244":1,"303":3},"fqnsFingerprint":"8e8985e1b59eebce1be138c0f62ee790ec81ea751fdfa6c303f5c46adf8c0253"},"8c9c7cbe66b9df80fef954d47cf5bc0abba1e0ac32e50eb6d613ed62016764fe":{"translations":{"python":{"source":"kafka_api.set_acl(\"acl\", Acl(\n    resource_type=AclResourceTypes.TOPIC,\n    resource_name=\"topic-1\",\n    resource_pattern_type=ResourcePatternTypes.LITERAL,\n    principal=\"User:Cn=MyUser\",\n    host=\"*\",\n    operation=AclOperationTypes.CREATE,\n    permission_type=AclPermissionTypes.ALLOW\n), cdk.RemovalPolicy.DESTROY, Authentication.MTLS)","version":"2"},"csharp":{"source":"kafkaApi.SetAcl(\"acl\", new Acl {\n    ResourceType = AclResourceTypes.TOPIC,\n    ResourceName = \"topic-1\",\n    ResourcePatternType = ResourcePatternTypes.LITERAL,\n    Principal = \"User:Cn=MyUser\",\n    Host = \"*\",\n    Operation = AclOperationTypes.CREATE,\n    PermissionType = AclPermissionTypes.ALLOW\n}, RemovalPolicy.DESTROY, Authentication.MTLS);","version":"1"},"java":{"source":"kafkaApi.setAcl(\"acl\", Acl.builder()\n        .resourceType(AclResourceTypes.TOPIC)\n        .resourceName(\"topic-1\")\n        .resourcePatternType(ResourcePatternTypes.LITERAL)\n        .principal(\"User:Cn=MyUser\")\n        .host(\"*\")\n        .operation(AclOperationTypes.CREATE)\n        .permissionType(AclPermissionTypes.ALLOW)\n        .build(), RemovalPolicy.DESTROY, Authentication.MTLS);","version":"1"},"go":{"source":"kafkaApi.SetAcl(jsii.String(\"acl\"), &Acl{\n\tResourceType: *libmsk.AclResourceTypes_TOPIC,\n\tResourceName: jsii.String(\"topic-1\"),\n\tResourcePatternType: *libmsk.ResourcePatternTypes_LITERAL,\n\tPrincipal: jsii.String(\"User:Cn=MyUser\"),\n\tHost: jsii.String(\"*\"),\n\tOperation: *libmsk.AclOperationTypes_CREATE,\n\tPermissionType: *libmsk.AclPermissionTypes_ALLOW,\n}, cdk.RemovalPolicy_DESTROY, libmsk.Authentication_MTLS)","version":"1"},"$":{"source":"kafkaApi.setAcl('acl',\n  {\n    resourceType: AclResourceTypes.TOPIC,\n    resourceName: 'topic-1',\n    resourcePatternType: ResourcePatternTypes.LITERAL,\n    principal: 'User:Cn=MyUser',\n    host: '*',\n    operation: AclOperationTypes.CREATE,\n    permissionType: AclPermissionTypes.ALLOW,\n  },\n  cdk.RemovalPolicy.DESTROY,\n  Authentication.MTLS\n);","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.streaming"},"field":{"field":"markdown","line":493}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.streaming.Acl","@cdklabs/aws-data-solutions-framework.streaming.AclOperationTypes","@cdklabs/aws-data-solutions-framework.streaming.AclOperationTypes#CREATE","@cdklabs/aws-data-solutions-framework.streaming.AclPermissionTypes","@cdklabs/aws-data-solutions-framework.streaming.AclPermissionTypes#ALLOW","@cdklabs/aws-data-solutions-framework.streaming.AclResourceTypes","@cdklabs/aws-data-solutions-framework.streaming.AclResourceTypes#TOPIC","@cdklabs/aws-data-solutions-framework.streaming.Authentication","@cdklabs/aws-data-solutions-framework.streaming.Authentication#MTLS","@cdklabs/aws-data-solutions-framework.streaming.ClientAuthentication","@cdklabs/aws-data-solutions-framework.streaming.KafkaApi#setAcl","@cdklabs/aws-data-solutions-framework.streaming.KafkaClientLogLevel","@cdklabs/aws-data-solutions-framework.streaming.MskClusterType","@cdklabs/aws-data-solutions-framework.streaming.ResourcePatternTypes","@cdklabs/aws-data-solutions-framework.streaming.ResourcePatternTypes#LITERAL","aws-cdk-lib.RemovalPolicy","aws-cdk-lib.RemovalPolicy#DESTROY","aws-cdk-lib.aws_ec2.ISecurityGroup","aws-cdk-lib.aws_ec2.IVpc","aws-cdk-lib.aws_secretsmanager.ISecret"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { SecurityGroup, Vpc } from 'aws-cdk-lib/aws-ec2';\nimport { AclOperationTypes, AclPermissionTypes, AclResourceTypes, ClientAuthentication, KafkaClientLogLevel, MskClusterType, ResourcePatternTypes, Authentication } from '../lib/msk';\nimport { KafkaApi } from '../lib/msk/kafka-api';\nimport { CertificateAuthority } from 'aws-cdk-lib/aws-acmpca';\nimport { Secret } from 'aws-cdk-lib/aws-secretsmanager';\n\n\nconst app = new cdk.App();\n\nconst stack = new cdk.Stack(app, 'MskProvisionedDsf');\n\nstack.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\n\nlet certificateAuthority = CertificateAuthority.fromCertificateAuthorityArn(\n  stack, 'certificateAuthority',\n  'arn:aws:acm-pca:eu-west-1:12345678912:certificate-authority/dummy-ca'\n);\n\nlet secret = Secret.fromSecretCompleteArn(\n  stack, 'secret', 'arn:aws:secretsmanager:eu-west-1:12345678912:secret:dsf/mskCert-dummy'\n);\n\nlet vpc = Vpc.fromVpcAttributes(stack, 'vpc', {\n  vpcId: 'vpc-1111111111',\n  vpcCidrBlock: '10.0.0.0/16',\n  availabilityZones: ['eu-west-1a', 'eu-west-1b'],\n  publicSubnetIds: ['subnet-111111111', 'subnet-11111111'],\n  privateSubnetIds: ['subnet-11111111', 'subnet-1111111'],\n});\n\n\nconst kafkaApi = new KafkaApi(stack, 'kafkaApi', {\n  vpc: vpc,\n  clusterArn: 'arn:aws:kafka:eu-west-1:12345678912:cluster/byo-msk/dummy-5cf3-42d5-aece-dummmy-2',\n  clusterType: MskClusterType.PROVISIONED,\n  brokerSecurityGroup: SecurityGroup.fromSecurityGroupId(stack, 'brokerSecurityGroup', 'sg-98237412hsa'),\n  certficateSecret: secret,\n  clientAuthentication: ClientAuthentication.saslTls({\n    iam: true,\n    certificateAuthorities: [certificateAuthority],\n  },),\n  kafkaClientLogLevel: KafkaClientLogLevel.DEBUG,\n});\n\n\n/// !show\nkafkaApi.setAcl('acl', \n  {\n    resourceType: AclResourceTypes.TOPIC,\n    resourceName: 'topic-1',\n    resourcePatternType: ResourcePatternTypes.LITERAL,\n    principal: 'User:Cn=MyUser',\n    host: '*',\n    operation: AclOperationTypes.CREATE,\n    permissionType: AclPermissionTypes.ALLOW,\n  },\n  cdk.RemovalPolicy.DESTROY,\n  Authentication.MTLS\n);\n/// !hide\n","syntaxKindCounter":{"11":4,"80":22,"210":1,"211":8,"213":1,"244":1,"303":7},"fqnsFingerprint":"e8e480186d958a8aca532bf03480039e94299c23fcbb453ad3d19d30764d19d7"},"3077287c8654fe3c5872acd86c4b8085cdcf9aa6547a78e56fcd239beb0f818e":{"translations":{"python":{"source":"kafka_api.grant_produce(\"consume\", \"foo\", Authentication.MTLS, \"User:Cn=bar\")","version":"2"},"csharp":{"source":"kafkaApi.GrantProduce(\"consume\", \"foo\", Authentication.MTLS, \"User:Cn=bar\");","version":"1"},"java":{"source":"kafkaApi.grantProduce(\"consume\", \"foo\", Authentication.MTLS, \"User:Cn=bar\");","version":"1"},"go":{"source":"kafkaApi.GrantProduce(jsii.String(\"consume\"), jsii.String(\"foo\"), libmsk.Authentication_MTLS, jsii.String(\"User:Cn=bar\"))","version":"1"},"$":{"source":"kafkaApi.grantProduce('consume', 'foo', Authentication.MTLS, 'User:Cn=bar');","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.streaming"},"field":{"field":"markdown","line":515}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.streaming.Authentication","@cdklabs/aws-data-solutions-framework.streaming.Authentication#MTLS","@cdklabs/aws-data-solutions-framework.streaming.ClientAuthentication","@cdklabs/aws-data-solutions-framework.streaming.KafkaApi#grantProduce","@cdklabs/aws-data-solutions-framework.streaming.KafkaClientLogLevel","@cdklabs/aws-data-solutions-framework.streaming.MskClusterType","aws-cdk-lib.aws_ec2.ISecurityGroup","aws-cdk-lib.aws_ec2.IVpc","aws-cdk-lib.aws_secretsmanager.ISecret"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { SecurityGroup, Vpc } from 'aws-cdk-lib/aws-ec2';\nimport { Authentication, ClientAuthentication, KafkaClientLogLevel, MskClusterType } from '../lib/msk';\nimport { KafkaApi } from '../lib/msk/kafka-api';\nimport { CertificateAuthority } from 'aws-cdk-lib/aws-acmpca';\nimport { Secret } from 'aws-cdk-lib/aws-secretsmanager';\n\n\nconst app = new cdk.App();\n\nconst stack = new cdk.Stack(app, 'MskProvisionedDsf');\n\nstack.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\n\nlet certificateAuthority = CertificateAuthority.fromCertificateAuthorityArn(\n  stack, 'certificateAuthority',\n  'arn:aws:acm-pca:eu-west-1:12345678912:certificate-authority/dummy-ca'\n);\n\nlet secret = Secret.fromSecretCompleteArn(\n  stack, 'secret', 'arn:aws:secretsmanager:eu-west-1:12345678912:secret:dsf/mskCert-dummy'\n);\n\nlet vpc = Vpc.fromVpcAttributes(stack, 'vpc', {\n  vpcId: 'vpc-1111111111',\n  vpcCidrBlock: '10.0.0.0/16',\n  availabilityZones: ['eu-west-1a', 'eu-west-1b'],\n  publicSubnetIds: ['subnet-111111111', 'subnet-11111111'],\n  privateSubnetIds: ['subnet-11111111', 'subnet-1111111'],\n});\n\n\nconst kafkaApi = new KafkaApi(stack, 'kafkaApi', {\n  vpc: vpc,\n  clusterArn: 'arn:aws:kafka:eu-west-1:12345678912:cluster/byo-msk/dummy-5cf3-42d5-aece-dummmy-2',\n  clusterType: MskClusterType.PROVISIONED,\n  brokerSecurityGroup: SecurityGroup.fromSecurityGroupId(stack, 'brokerSecurityGroup', 'sg-98237412hsa'),\n  certficateSecret: secret,\n  clientAuthentication: ClientAuthentication.saslTls({\n    iam: true,\n    certificateAuthorities: [certificateAuthority],\n  },),\n  kafkaClientLogLevel: KafkaClientLogLevel.DEBUG,\n});\n\n/// !show\nkafkaApi.grantProduce('consume', 'foo', Authentication.MTLS, 'User:Cn=bar');\n/// !hide\n","syntaxKindCounter":{"11":3,"80":4,"211":2,"213":1,"244":1},"fqnsFingerprint":"55b25b1108e7848bfb3705e3327c79b9b1b436fef6a320a39b367dbd3ad6956a"},"fddcf99127ba0a18cf08a0d4bb5f24584c5d8e4aea5f6cdb796f9d5c18b0ea47":{"translations":{"python":{"source":"kafka_api.grant_consume(\"consume\", \"foo\", Authentication.MTLS, \"User:Cn=bar\")","version":"2"},"csharp":{"source":"kafkaApi.GrantConsume(\"consume\", \"foo\", Authentication.MTLS, \"User:Cn=bar\");","version":"1"},"java":{"source":"kafkaApi.grantConsume(\"consume\", \"foo\", Authentication.MTLS, \"User:Cn=bar\");","version":"1"},"go":{"source":"kafkaApi.GrantConsume(jsii.String(\"consume\"), jsii.String(\"foo\"), libmsk.Authentication_MTLS, jsii.String(\"User:Cn=bar\"))","version":"1"},"$":{"source":"kafkaApi.grantConsume('consume', 'foo', Authentication.MTLS, 'User:Cn=bar');","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.streaming"},"field":{"field":"markdown","line":524}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.streaming.Authentication","@cdklabs/aws-data-solutions-framework.streaming.Authentication#MTLS","@cdklabs/aws-data-solutions-framework.streaming.ClientAuthentication","@cdklabs/aws-data-solutions-framework.streaming.KafkaApi#grantConsume","@cdklabs/aws-data-solutions-framework.streaming.KafkaClientLogLevel","@cdklabs/aws-data-solutions-framework.streaming.MskClusterType","aws-cdk-lib.aws_ec2.ISecurityGroup","aws-cdk-lib.aws_ec2.IVpc","aws-cdk-lib.aws_secretsmanager.ISecret"],"fullSource":"import * as cdk from 'aws-cdk-lib';\nimport { SecurityGroup, Vpc } from 'aws-cdk-lib/aws-ec2';\nimport { Authentication, ClientAuthentication, KafkaClientLogLevel, MskClusterType } from '../lib/msk';\nimport { KafkaApi } from '../lib/msk/kafka-api';\nimport { CertificateAuthority } from 'aws-cdk-lib/aws-acmpca';\nimport { Secret } from 'aws-cdk-lib/aws-secretsmanager';\n\n\nconst app = new cdk.App();\n\nconst stack = new cdk.Stack(app, 'MskProvisionedDsf');\n\nstack.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\n\nlet certificateAuthority = CertificateAuthority.fromCertificateAuthorityArn(\n  stack, 'certificateAuthority',\n  'arn:aws:acm-pca:eu-west-1:12345678912:certificate-authority/dummy-ca'\n);\n\nlet secret = Secret.fromSecretCompleteArn(\n  stack, 'secret', 'arn:aws:secretsmanager:eu-west-1:12345678912:secret:dsf/mskCert-dummy'\n);\n\nlet vpc = Vpc.fromVpcAttributes(stack, 'vpc', {\n  vpcId: 'vpc-1111111111',\n  vpcCidrBlock: '10.0.0.0/16',\n  availabilityZones: ['eu-west-1a', 'eu-west-1b'],\n  publicSubnetIds: ['subnet-111111111', 'subnet-11111111'],\n  privateSubnetIds: ['subnet-11111111', 'subnet-1111111'],\n});\n\n\nconst kafkaApi = new KafkaApi(stack, 'kafkaApi', {\n  vpc: vpc,\n  clusterArn: 'arn:aws:kafka:eu-west-1:12345678912:cluster/byo-msk/dummy-5cf3-42d5-aece-dummmy-2',\n  clusterType: MskClusterType.PROVISIONED,\n  brokerSecurityGroup: SecurityGroup.fromSecurityGroupId(stack, 'brokerSecurityGroup', 'sg-98237412hsa'),\n  certficateSecret: secret,\n  clientAuthentication: ClientAuthentication.saslTls({\n    iam: true,\n    certificateAuthorities: [certificateAuthority],\n  },),\n  kafkaClientLogLevel: KafkaClientLogLevel.DEBUG,\n});\n\n/// !show\nkafkaApi.grantConsume('consume', 'foo', Authentication.MTLS, 'User:Cn=bar');\n/// !hide\n","syntaxKindCounter":{"11":3,"80":4,"211":2,"213":1,"244":1},"fqnsFingerprint":"1e2667690b6379a22de76608be82e7398033f838ccb06aaf4000d7ef30d81a4a"},"f24972257ce399abf8ed5e8e320cc50b9cf3a6a73311e667e7719605ca23d90c":{"translations":{"python":{"source":"class ExampleDefaultS3DataCopyStack(cdk.Stack):\n    def __init__(self, scope, id):\n        super().__init__(scope, id)\n\n        source_bucket = Bucket.from_bucket_name(self, \"sourceBucket\", \"nyc-tlc\")\n        target_bucket = Bucket.from_bucket_name(self, \"destinationBucket\", \"staging-bucket\")\n\n        dsf.utils.S3DataCopy(self, \"S3DataCopy\",\n            source_bucket=source_bucket,\n            source_bucket_prefix=\"trip data/\",\n            source_bucket_region=\"us-east-1\",\n            target_bucket=target_bucket,\n            target_bucket_prefix=\"staging-data/\"\n        )","version":"2"},"csharp":{"source":"class ExampleDefaultS3DataCopyStack : Stack\n{\n    public ExampleDefaultS3DataCopyStack(Construct scope, string id) : base(scope, id)\n    {\n\n        var sourceBucket = Bucket.FromBucketName(this, \"sourceBucket\", \"nyc-tlc\");\n        var targetBucket = Bucket.FromBucketName(this, \"destinationBucket\", \"staging-bucket\");\n\n        new Utils.S3DataCopy(this, \"S3DataCopy\", new S3DataCopyProps {\n            SourceBucket = sourceBucket,\n            SourceBucketPrefix = \"trip data/\",\n            SourceBucketRegion = \"us-east-1\",\n            TargetBucket = targetBucket,\n            TargetBucketPrefix = \"staging-data/\"\n        });\n    }\n}","version":"1"},"java":{"source":"public class ExampleDefaultS3DataCopyStack extends Stack {\n    public ExampleDefaultS3DataCopyStack(Construct scope, String id) {\n        super(scope, id);\n\n        IBucket sourceBucket = Bucket.fromBucketName(this, \"sourceBucket\", \"nyc-tlc\");\n        IBucket targetBucket = Bucket.fromBucketName(this, \"destinationBucket\", \"staging-bucket\");\n\n        S3DataCopy.Builder.create(this, \"S3DataCopy\")\n                .sourceBucket(sourceBucket)\n                .sourceBucketPrefix(\"trip data/\")\n                .sourceBucketRegion(\"us-east-1\")\n                .targetBucket(targetBucket)\n                .targetBucketPrefix(\"staging-data/\")\n                .build();\n    }\n}","version":"1"},"go":{"source":"type exampleDefaultS3DataCopyStack struct {\n\tstack\n}\n\nfunc newExampleDefaultS3DataCopyStack(scope construct, id *string) *exampleDefaultS3DataCopyStack {\n\tthis := &exampleDefaultS3DataCopyStack{}\n\tcdk.NewStack_Override(this, scope, id)\n\n\tsourceBucket := awscdk.Bucket_FromBucketName(this, jsii.String(\"sourceBucket\"), jsii.String(\"nyc-tlc\"))\n\ttargetBucket := awscdk.Bucket_FromBucketName(this, jsii.String(\"destinationBucket\"), jsii.String(\"staging-bucket\"))\n\n\tutils.NewS3DataCopy(this, jsii.String(\"S3DataCopy\"), &S3DataCopyProps{\n\t\tSourceBucket: SourceBucket,\n\t\tSourceBucketPrefix: jsii.String(\"trip data/\"),\n\t\tSourceBucketRegion: jsii.String(\"us-east-1\"),\n\t\tTargetBucket: TargetBucket,\n\t\tTargetBucketPrefix: jsii.String(\"staging-data/\"),\n\t})\n\treturn this\n}","version":"1"},"$":{"source":"class ExampleDefaultS3DataCopyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    const sourceBucket = Bucket.fromBucketName(this, 'sourceBucket', 'nyc-tlc');\n    const targetBucket = Bucket.fromBucketName(this, 'destinationBucket', 'staging-bucket');\n\n    new dsf.utils.S3DataCopy(this, 'S3DataCopy', {\n      sourceBucket,\n      sourceBucketPrefix: 'trip data/',\n      sourceBucketRegion: 'us-east-1',\n      targetBucket,\n      targetBucketPrefix: 'staging-data/',\n    });\n  }\n}","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.utils"},"field":{"field":"markdown","line":20}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.utils","@cdklabs/aws-data-solutions-framework.utils.S3DataCopy","@cdklabs/aws-data-solutions-framework.utils.S3DataCopyProps","aws-cdk-lib.Stack","aws-cdk-lib.aws_s3.Bucket#fromBucketName","aws-cdk-lib.aws_s3.IBucket","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\nimport { Bucket } from 'aws-cdk-lib/aws-s3';\n\n/// !show\nclass ExampleDefaultS3DataCopyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    \n    const sourceBucket = Bucket.fromBucketName(this, 'sourceBucket', 'nyc-tlc');\n    const targetBucket = Bucket.fromBucketName(this, 'destinationBucket', 'staging-bucket');\n    \n    new dsf.utils.S3DataCopy(this, 'S3DataCopy', {\n      sourceBucket,\n      sourceBucketPrefix: 'trip data/',\n      sourceBucketRegion: 'us-east-1',\n      targetBucket,\n      targetBucketPrefix: 'staging-data/',\n    });\n  }\n}\n/// !hide\n\nconst app = new cdk.App();\nnew ExampleDefaultS3DataCopyStack(app, 'ExampleDefaultS3DataCopy');","syntaxKindCounter":{"11":8,"80":22,"108":1,"110":3,"154":1,"169":2,"176":1,"183":1,"210":1,"211":5,"213":3,"214":1,"233":1,"241":1,"243":2,"244":2,"260":2,"261":2,"263":1,"298":1,"303":3,"304":2},"fqnsFingerprint":"17cd8930b629defa443f637a6fabad289cc8f5863e2e0f21831a41c787f158a1"},"efa1383759c20ad48b97906687c967f9bfb6474568dc38f74e0c23b31168d51c":{"translations":{"python":{"source":"vpc = Vpc.from_lookup(self, \"Vpc\", vpc_name=\"my-vpc\")\nsubnets = vpc.select_subnets(subnet_type=SubnetType.PRIVATE_WITH_EGRESS)\n\ndsf.utils.S3DataCopy(self, \"S3DataCopy\",\n    source_bucket=source_bucket,\n    source_bucket_prefix=\"trip data/\",\n    source_bucket_region=\"us-east-1\",\n    target_bucket=target_bucket,\n    target_bucket_prefix=\"staging-data/\",\n    vpc=vpc,\n    subnets=subnets\n)","version":"2"},"csharp":{"source":"var vpc = Vpc.FromLookup(this, \"Vpc\", new VpcLookupOptions { VpcName = \"my-vpc\" });\nvar subnets = vpc.SelectSubnets(new SubnetSelection { SubnetType = SubnetType.PRIVATE_WITH_EGRESS });\n\nnew Utils.S3DataCopy(this, \"S3DataCopy\", new S3DataCopyProps {\n    SourceBucket = sourceBucket,\n    SourceBucketPrefix = \"trip data/\",\n    SourceBucketRegion = \"us-east-1\",\n    TargetBucket = targetBucket,\n    TargetBucketPrefix = \"staging-data/\",\n    Vpc = vpc,\n    Subnets = subnets\n});","version":"1"},"java":{"source":"IVpc vpc = Vpc.fromLookup(this, \"Vpc\", VpcLookupOptions.builder().vpcName(\"my-vpc\").build());\nSelectedSubnets subnets = vpc.selectSubnets(SubnetSelection.builder().subnetType(SubnetType.PRIVATE_WITH_EGRESS).build());\n\nS3DataCopy.Builder.create(this, \"S3DataCopy\")\n        .sourceBucket(sourceBucket)\n        .sourceBucketPrefix(\"trip data/\")\n        .sourceBucketRegion(\"us-east-1\")\n        .targetBucket(targetBucket)\n        .targetBucketPrefix(\"staging-data/\")\n        .vpc(vpc)\n        .subnets(subnets)\n        .build();","version":"1"},"go":{"source":"vpc := awscdk.Vpc_FromLookup(this, jsii.String(\"Vpc\"), &VpcLookupOptions{\n\tVpcName: jsii.String(\"my-vpc\"),\n})\nsubnets := vpc.SelectSubnets(&SubnetSelection{\n\tSubnetType: awscdk.SubnetType_PRIVATE_WITH_EGRESS,\n})\n\nutils.NewS3DataCopy(this, jsii.String(\"S3DataCopy\"), &S3DataCopyProps{\n\tSourceBucket: SourceBucket,\n\tSourceBucketPrefix: jsii.String(\"trip data/\"),\n\tSourceBucketRegion: jsii.String(\"us-east-1\"),\n\tTargetBucket: TargetBucket,\n\tTargetBucketPrefix: jsii.String(\"staging-data/\"),\n\tVpc: Vpc,\n\tSubnets: Subnets,\n})","version":"1"},"$":{"source":"    const vpc = Vpc.fromLookup(this, 'Vpc', { vpcName: 'my-vpc'});\n    const subnets = vpc.selectSubnets({subnetType: SubnetType.PRIVATE_WITH_EGRESS});\n\n    new dsf.utils.S3DataCopy(this, 'S3DataCopy', {\n      sourceBucket,\n      sourceBucketPrefix: 'trip data/',\n      sourceBucketRegion: 'us-east-1',\n      targetBucket,\n      targetBucketPrefix: 'staging-data/',\n      vpc,\n      subnets,\n    });","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.utils"},"field":{"field":"markdown","line":45}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.utils","@cdklabs/aws-data-solutions-framework.utils.S3DataCopy","@cdklabs/aws-data-solutions-framework.utils.S3DataCopyProps","aws-cdk-lib.aws_ec2.IVpc","aws-cdk-lib.aws_ec2.IVpc#selectSubnets","aws-cdk-lib.aws_ec2.SelectedSubnets","aws-cdk-lib.aws_ec2.SubnetSelection","aws-cdk-lib.aws_ec2.SubnetType","aws-cdk-lib.aws_ec2.SubnetType#PRIVATE_WITH_EGRESS","aws-cdk-lib.aws_ec2.Vpc#fromLookup","aws-cdk-lib.aws_ec2.VpcLookupOptions","aws-cdk-lib.aws_s3.IBucket","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\nimport { Bucket } from 'aws-cdk-lib/aws-s3';\nimport { SubnetType, Vpc } from 'aws-cdk-lib/aws-ec2';\n\n\nclass ExampleVpcS3DataCopyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    \n    const sourceBucket = Bucket.fromBucketName(this, 'sourceBucket', 'nyc-tlc');\n    const targetBucket = Bucket.fromBucketName(this, 'destinationBucket', 'staging-bucket');\n    \n    /// !show\n    const vpc = Vpc.fromLookup(this, 'Vpc', { vpcName: 'my-vpc'});\n    const subnets = vpc.selectSubnets({subnetType: SubnetType.PRIVATE_WITH_EGRESS});\n    \n    new dsf.utils.S3DataCopy(this, 'S3DataCopy', {\n      sourceBucket,\n      sourceBucketPrefix: 'trip data/',\n      sourceBucketRegion: 'us-east-1',\n      targetBucket,\n      targetBucketPrefix: 'staging-data/',\n      vpc,\n      subnets,\n    });\n    /// !hide\n  }\n}\n\n\nconst app = new cdk.App();\nnew ExampleVpcS3DataCopyStack(app, 'ExampleVpcS3DataCopy');","syntaxKindCounter":{"11":6,"80":20,"110":2,"210":3,"211":5,"213":2,"214":1,"243":2,"244":1,"260":2,"261":2,"303":5,"304":4},"fqnsFingerprint":"502c4bf669ec2ee8c32b60ff6b4c75b6558af5e51a4a080822d9664755b4c21f"},"1869370bb4afe9a2359c8dbb03ccac9e07af932b2707d181af7812e8e312ff1c":{"translations":{"python":{"source":"class ExampleDefaultDataVpcStack(cdk.Stack):\n    def __init__(self, scope, id):\n        super().__init__(scope, id)\n        dsf.utils.DataVpc(self, \"MyDataVpc\",\n            vpc_cidr=\"10.0.0.0/16\"\n        )","version":"2"},"csharp":{"source":"class ExampleDefaultDataVpcStack : Stack\n{\n    public ExampleDefaultDataVpcStack(Construct scope, string id) : base(scope, id)\n    {\n        new Utils.DataVpc(this, \"MyDataVpc\", new DataVpcProps {\n            VpcCidr = \"10.0.0.0/16\"\n        });\n    }\n}","version":"1"},"java":{"source":"public class ExampleDefaultDataVpcStack extends Stack {\n    public ExampleDefaultDataVpcStack(Construct scope, String id) {\n        super(scope, id);\n        DataVpc.Builder.create(this, \"MyDataVpc\")\n                .vpcCidr(\"10.0.0.0/16\")\n                .build();\n    }\n}","version":"1"},"go":{"source":"type exampleDefaultDataVpcStack struct {\n\tstack\n}\n\nfunc newExampleDefaultDataVpcStack(scope construct, id *string) *exampleDefaultDataVpcStack {\n\tthis := &exampleDefaultDataVpcStack{}\n\tcdk.NewStack_Override(this, scope, id)\n\tutils.NewDataVpc(this, jsii.String(\"MyDataVpc\"), &DataVpcProps{\n\t\tVpcCidr: jsii.String(\"10.0.0.0/16\"),\n\t})\n\treturn this\n}","version":"1"},"$":{"source":"class ExampleDefaultDataVpcStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    new dsf.utils.DataVpc(this, 'MyDataVpc', {\n      vpcCidr: '10.0.0.0/16',\n    });\n  }\n}","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.utils"},"field":{"field":"markdown","line":77}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.utils","@cdklabs/aws-data-solutions-framework.utils.DataVpc","@cdklabs/aws-data-solutions-framework.utils.DataVpcProps","aws-cdk-lib.Stack","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\n/// !show\nclass ExampleDefaultDataVpcStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    new dsf.utils.DataVpc(this, 'MyDataVpc', {\n      vpcCidr: '10.0.0.0/16',\n    });\n  }\n}\n/// !hide\n\nconst app = new cdk.App();\nnew ExampleDefaultDataVpcStack(app, 'ExampleDefaultDataVpc');","syntaxKindCounter":{"11":2,"80":12,"108":1,"110":1,"154":1,"169":2,"176":1,"183":1,"210":1,"211":3,"213":1,"214":1,"233":1,"241":1,"244":2,"263":1,"298":1,"303":1},"fqnsFingerprint":"9bbacf97e2e719e3d9ca67a6d715ca83474b1032e0e03175d1094ba2804bf60a"},"3d2984268dbc50e17eccfd3c02bd36c5b72e8c58f073480bac991642dabd5eb4":{"translations":{"python":{"source":"flow_log_key = Key.from_key_arn(self, \"FlowLogKey\", \"XXXXXXXXXXXXXXXXXXXXXXXX\")\n\nflow_log_role = Role.from_role_arn(self, \"FlowLogRole\", \"XXXXXXXXXXXXXXXXXXXXXXXX\")\n\ndsf.utils.DataVpc(self, \"MyDataVpc\",\n    vpc_cidr=\"10.0.0.0/16\",\n    flow_log_key=flow_log_key,\n    flow_log_role=flow_log_role,\n    flow_log_retention=RetentionDays.TWO_WEEKS\n)","version":"2"},"csharp":{"source":"var flowLogKey = Key.FromKeyArn(this, \"FlowLogKey\", \"XXXXXXXXXXXXXXXXXXXXXXXX\");\n\nvar flowLogRole = Role.FromRoleArn(this, \"FlowLogRole\", \"XXXXXXXXXXXXXXXXXXXXXXXX\");\n\nnew Utils.DataVpc(this, \"MyDataVpc\", new DataVpcProps {\n    VpcCidr = \"10.0.0.0/16\",\n    FlowLogKey = flowLogKey,\n    FlowLogRole = flowLogRole,\n    FlowLogRetention = RetentionDays.TWO_WEEKS\n});","version":"1"},"java":{"source":"IKey flowLogKey = Key.fromKeyArn(this, \"FlowLogKey\", \"XXXXXXXXXXXXXXXXXXXXXXXX\");\n\nIRole flowLogRole = Role.fromRoleArn(this, \"FlowLogRole\", \"XXXXXXXXXXXXXXXXXXXXXXXX\");\n\nDataVpc.Builder.create(this, \"MyDataVpc\")\n        .vpcCidr(\"10.0.0.0/16\")\n        .flowLogKey(flowLogKey)\n        .flowLogRole(flowLogRole)\n        .flowLogRetention(RetentionDays.TWO_WEEKS)\n        .build();","version":"1"},"go":{"source":"flowLogKey := awscdk.Key_FromKeyArn(this, jsii.String(\"FlowLogKey\"), jsii.String(\"XXXXXXXXXXXXXXXXXXXXXXXX\"))\n\nflowLogRole := awscdk.Role_FromRoleArn(this, jsii.String(\"FlowLogRole\"), jsii.String(\"XXXXXXXXXXXXXXXXXXXXXXXX\"))\n\nutils.NewDataVpc(this, jsii.String(\"MyDataVpc\"), &DataVpcProps{\n\tVpcCidr: jsii.String(\"10.0.0.0/16\"),\n\tFlowLogKey: FlowLogKey,\n\tFlowLogRole: FlowLogRole,\n\tFlowLogRetention: awscdk.RetentionDays_TWO_WEEKS,\n})","version":"1"},"$":{"source":"    const flowLogKey = Key.fromKeyArn(this, 'FlowLogKey', 'XXXXXXXXXXXXXXXXXXXXXXXX');\n\n    const flowLogRole = Role.fromRoleArn(this, 'FlowLogRole', 'XXXXXXXXXXXXXXXXXXXXXXXX');\n\n    new dsf.utils.DataVpc(this, 'MyDataVpc', {\n      vpcCidr: '10.0.0.0/16',\n      flowLogKey,\n      flowLogRole,\n      flowLogRetention: RetentionDays.TWO_WEEKS,\n    });\n  }\n}","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.utils"},"field":{"field":"markdown","line":98}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.utils","@cdklabs/aws-data-solutions-framework.utils.DataVpc","@cdklabs/aws-data-solutions-framework.utils.DataVpcProps","aws-cdk-lib.aws_iam.IRole","aws-cdk-lib.aws_iam.Role#fromRoleArn","aws-cdk-lib.aws_kms.IKey","aws-cdk-lib.aws_kms.Key#fromKeyArn","aws-cdk-lib.aws_logs.RetentionDays","aws-cdk-lib.aws_logs.RetentionDays#TWO_WEEKS","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\nimport { Key } from 'aws-cdk-lib/aws-kms';\nimport { Role } from 'aws-cdk-lib/aws-iam';\nimport { RetentionDays } from 'aws-cdk-lib/aws-logs';\n\n\nclass ExampleDefaultDataVpcStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    /// !show\n    const flowLogKey = Key.fromKeyArn(this, 'FlowLogKey', 'XXXXXXXXXXXXXXXXXXXXXXXX');\n    \n    const flowLogRole = Role.fromRoleArn(this, 'FlowLogRole', 'XXXXXXXXXXXXXXXXXXXXXXXX');\n    \n    new dsf.utils.DataVpc(this, 'MyDataVpc', {\n      vpcCidr: '10.0.0.0/16',\n      flowLogKey,\n      flowLogRole,\n      flowLogRetention: RetentionDays.TWO_WEEKS,\n    });\n  }\n}\n/// !hide\n\nconst app = new cdk.App();\nnew ExampleDefaultDataVpcStack(app, 'ExampleDefaultDataVpc');","syntaxKindCounter":{"11":6,"80":15,"110":3,"210":1,"211":5,"213":2,"214":1,"243":2,"244":1,"260":2,"261":2,"303":2,"304":2},"fqnsFingerprint":"d8e6fa753e50c2c708b803318682dad92bab6d64418aa91afb63e88aa9f12685"},"2e247b35d299350554ea0b8c0b12d3478e980eae61857fca337031e376a65309":{"translations":{"python":{"source":"# Set context value for global data removal policy\nself.node.set_context(\"@data-solutions-framework-on-aws/removeDataOnDestroy\", True)\n\ndsf.utils.DataVpc(self, \"MyDataVpc\",\n    vpc_cidr=\"10.0.0.0/16\",\n    removal_policy=RemovalPolicy.DESTROY\n)","version":"2"},"csharp":{"source":"// Set context value for global data removal policy\nNode.SetContext(\"@data-solutions-framework-on-aws/removeDataOnDestroy\", true);\n\nnew Utils.DataVpc(this, \"MyDataVpc\", new DataVpcProps {\n    VpcCidr = \"10.0.0.0/16\",\n    RemovalPolicy = RemovalPolicy.DESTROY\n});","version":"1"},"java":{"source":"// Set context value for global data removal policy\nthis.node.setContext(\"@data-solutions-framework-on-aws/removeDataOnDestroy\", true);\n\nDataVpc.Builder.create(this, \"MyDataVpc\")\n        .vpcCidr(\"10.0.0.0/16\")\n        .removalPolicy(RemovalPolicy.DESTROY)\n        .build();","version":"1"},"go":{"source":"// Set context value for global data removal policy\nthis.Node.SetContext(jsii.String(\"@data-solutions-framework-on-aws/removeDataOnDestroy\"), jsii.Boolean(true))\n\nutils.NewDataVpc(this, jsii.String(\"MyDataVpc\"), &DataVpcProps{\n\tVpcCidr: jsii.String(\"10.0.0.0/16\"),\n\tRemovalPolicy: awscdk.RemovalPolicy_DESTROY,\n})","version":"1"},"$":{"source":"    // Set context value for global data removal policy\n    this.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\n    new dsf.utils.DataVpc(this, 'MyDataVpc', {\n      vpcCidr: '10.0.0.0/16',\n      removalPolicy: RemovalPolicy.DESTROY\n    });\n  }\n}","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.utils"},"field":{"field":"markdown","line":131}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.utils","@cdklabs/aws-data-solutions-framework.utils.DataVpc","@cdklabs/aws-data-solutions-framework.utils.DataVpcProps","aws-cdk-lib.RemovalPolicy","aws-cdk-lib.RemovalPolicy#DESTROY","constructs.Construct","constructs.Construct#node","constructs.Node#setContext"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\nimport { RemovalPolicy } from 'aws-cdk-lib';\n\n\nclass ExampleDefaultDataVpcStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    /// !show\n    // Set context value for global data removal policy\n    this.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n    \n    new dsf.utils.DataVpc(this, 'MyDataVpc', {\n      vpcCidr: '10.0.0.0/16',\n      removalPolicy: RemovalPolicy.DESTROY\n    });\n  }\n}\n/// !hide\n\nconst app = new cdk.App();\nnew ExampleDefaultDataVpcStack(app, 'ExampleDefaultDataVpc');","syntaxKindCounter":{"11":3,"80":9,"110":2,"112":1,"210":1,"211":5,"213":1,"214":1,"244":2,"303":2},"fqnsFingerprint":"2af09bc970ba36851a9f04186af01a9f089fe7e3e446d2e7c48f011b467400ea"},"f4b2f0320a85bdfb46f9f23f32d7b7613eb7c465b231d04cd12dee3d6d164a5f":{"translations":{"python":{"source":"class ExampleDefaultDataVpcStack(cdk.Stack):\n    def __init__(self, scope, id):\n        super().__init__(scope, id)\n        dsf.utils.DataVpc(self, \"MyDataVpc\",\n            vpc_cidr=\"10.0.0.0/16\",\n            client_vpn_endpoint_props=dsf.utils.DataVpcClientVpnEndpointProps(\n                server_certificate_arn=\"arn:aws:acm:us-east-1:XXXXXXXX:certificate/XXXXXXXXXX\",\n                saml_metadata_document=\"\"\"<?xml version=\"1.0\" encoding=\"UTF-8\"?><md:EntityDescriptor xmlns:md=\"urn:oasis:names:tc:SAML:2.0:metadata\" entityID=\"https://portal.sso.us-east-1.amazonaws.com/saml/assertion/XXXXXXXXXXXXXX\">\n                          <md:IDPSSODescriptor WantAuthnRequestsSigned=\"false\" protocolSupportEnumeration=\"urn:oasis:names:tc:SAML:2.0:protocol\">\n                            <md:KeyDescriptor use=\"signing\">\n                              <ds:KeyInfo xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\">\n                                <ds:X509Data>\n                                  <ds:X509Certificate>XXXXXXXXXXXXXXXXXXXXXXXXX</ds:X509Certificate>\n                                </ds:X509Data>\n                              </ds:KeyInfo>\n                            </md:KeyDescriptor>\n                            <md:SingleLogoutService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\" Location=\"https://portal.sso.us-east-1.amazonaws.com/saml/logout/XXXXXXXXXXXXXX\"/>\n                            <md:SingleLogoutService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\" Location=\"https://portal.sso.us-east-1.amazonaws.com/saml/logout/XXXXXXXXXXXXXX\"/>\n                            <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>\n                            <md:SingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\" Location=\"https://portal.sso.us-east-1.amazonaws.com/saml/assertion/XXXXXXXXXXXXXX\"/>\n                            <md:SingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\" Location=\"https://portal.sso.us-east-1.amazonaws.com/saml/assertion/XXXXXXXXXXXXXX\"/>\n                          </md:IDPSSODescriptor>\n                        </md:EntityDescriptor>\"\"\",\n                self_service_portal=False\n            )\n        )","version":"2"},"csharp":{"source":"class ExampleDefaultDataVpcStack : Stack\n{\n    public ExampleDefaultDataVpcStack(Construct scope, string id) : base(scope, id)\n    {\n        new Utils.DataVpc(this, \"MyDataVpc\", new DataVpcProps {\n            VpcCidr = \"10.0.0.0/16\",\n            ClientVpnEndpointProps = new DataVpcClientVpnEndpointProps {\n                ServerCertificateArn = \"arn:aws:acm:us-east-1:XXXXXXXX:certificate/XXXXXXXXXX\",\n                SamlMetadataDocument = @\"<?xml version=\"\"1.0\"\" encoding=\"\"UTF-8\"\"?><md:EntityDescriptor xmlns:md=\"\"urn:oasis:names:tc:SAML:2.0:metadata\"\" entityID=\"\"https://portal.sso.us-east-1.amazonaws.com/saml/assertion/XXXXXXXXXXXXXX\"\">\n                          <md:IDPSSODescriptor WantAuthnRequestsSigned=\"\"false\"\" protocolSupportEnumeration=\"\"urn:oasis:names:tc:SAML:2.0:protocol\"\">\n                            <md:KeyDescriptor use=\"\"signing\"\">\n                              <ds:KeyInfo xmlns:ds=\"\"http://www.w3.org/2000/09/xmldsig#\"\">\n                                <ds:X509Data>\n                                  <ds:X509Certificate>XXXXXXXXXXXXXXXXXXXXXXXXX</ds:X509Certificate>\n                                </ds:X509Data>\n                              </ds:KeyInfo>\n                            </md:KeyDescriptor>\n                            <md:SingleLogoutService Binding=\"\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\"\" Location=\"\"https://portal.sso.us-east-1.amazonaws.com/saml/logout/XXXXXXXXXXXXXX\"\"/>\n                            <md:SingleLogoutService Binding=\"\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\"\" Location=\"\"https://portal.sso.us-east-1.amazonaws.com/saml/logout/XXXXXXXXXXXXXX\"\"/>\n                            <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>\n                            <md:SingleSignOnService Binding=\"\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\"\" Location=\"\"https://portal.sso.us-east-1.amazonaws.com/saml/assertion/XXXXXXXXXXXXXX\"\"/>\n                            <md:SingleSignOnService Binding=\"\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\"\" Location=\"\"https://portal.sso.us-east-1.amazonaws.com/saml/assertion/XXXXXXXXXXXXXX\"\"/>\n                          </md:IDPSSODescriptor>\n                        </md:EntityDescriptor>\",\n                SelfServicePortal = false\n            }\n        });\n    }\n}","version":"1"},"java":{"source":"public class ExampleDefaultDataVpcStack extends Stack {\n    public ExampleDefaultDataVpcStack(Construct scope, String id) {\n        super(scope, id);\n        DataVpc.Builder.create(this, \"MyDataVpc\")\n                .vpcCidr(\"10.0.0.0/16\")\n                .clientVpnEndpointProps(DataVpcClientVpnEndpointProps.builder()\n                        .serverCertificateArn(\"arn:aws:acm:us-east-1:XXXXXXXX:certificate/XXXXXXXXXX\")\n                        .samlMetadataDocument(\"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?><md:EntityDescriptor xmlns:md=\\\"urn:oasis:names:tc:SAML:2.0:metadata\\\" entityID=\\\"https://portal.sso.us-east-1.amazonaws.com/saml/assertion/XXXXXXXXXXXXXX\\\">\\n          <md:IDPSSODescriptor WantAuthnRequestsSigned=\\\"false\\\" protocolSupportEnumeration=\\\"urn:oasis:names:tc:SAML:2.0:protocol\\\">\\n            <md:KeyDescriptor use=\\\"signing\\\">\\n              <ds:KeyInfo xmlns:ds=\\\"http://www.w3.org/2000/09/xmldsig#\\\">\\n                <ds:X509Data>\\n                  <ds:X509Certificate>XXXXXXXXXXXXXXXXXXXXXXXXX</ds:X509Certificate>\\n                </ds:X509Data>\\n              </ds:KeyInfo>\\n            </md:KeyDescriptor>\\n            <md:SingleLogoutService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\\\" Location=\\\"https://portal.sso.us-east-1.amazonaws.com/saml/logout/XXXXXXXXXXXXXX\\\"/>\\n            <md:SingleLogoutService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://portal.sso.us-east-1.amazonaws.com/saml/logout/XXXXXXXXXXXXXX\\\"/>\\n            <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>\\n            <md:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\\\" Location=\\\"https://portal.sso.us-east-1.amazonaws.com/saml/assertion/XXXXXXXXXXXXXX\\\"/>\\n            <md:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://portal.sso.us-east-1.amazonaws.com/saml/assertion/XXXXXXXXXXXXXX\\\"/>\\n          </md:IDPSSODescriptor>\\n        </md:EntityDescriptor>\")\n                        .selfServicePortal(false)\n                        .build())\n                .build();\n    }\n}","version":"1"},"go":{"source":"type exampleDefaultDataVpcStack struct {\n\tstack\n}\n\nfunc newExampleDefaultDataVpcStack(scope construct, id *string) *exampleDefaultDataVpcStack {\n\tthis := &exampleDefaultDataVpcStack{}\n\tcdk.NewStack_Override(this, scope, id)\n\tutils.NewDataVpc(this, jsii.String(\"MyDataVpc\"), &DataVpcProps{\n\t\tVpcCidr: jsii.String(\"10.0.0.0/16\"),\n\t\tClientVpnEndpointProps: &DataVpcClientVpnEndpointProps{\n\t\t\tServerCertificateArn: jsii.String(\"arn:aws:acm:us-east-1:XXXXXXXX:certificate/XXXXXXXXXX\"),\n\t\t\tSamlMetadataDocument: jsii.String(`<?xml version=\"1.0\" encoding=\"UTF-8\"?><md:EntityDescriptor xmlns:md=\"urn:oasis:names:tc:SAML:2.0:metadata\" entityID=\"https://portal.sso.us-east-1.amazonaws.com/saml/assertion/XXXXXXXXXXXXXX\">\n\t\t\t          <md:IDPSSODescriptor WantAuthnRequestsSigned=\"false\" protocolSupportEnumeration=\"urn:oasis:names:tc:SAML:2.0:protocol\">\n\t\t\t            <md:KeyDescriptor use=\"signing\">\n\t\t\t              <ds:KeyInfo xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\">\n\t\t\t                <ds:X509Data>\n\t\t\t                  <ds:X509Certificate>XXXXXXXXXXXXXXXXXXXXXXXXX</ds:X509Certificate>\n\t\t\t                </ds:X509Data>\n\t\t\t              </ds:KeyInfo>\n\t\t\t            </md:KeyDescriptor>\n\t\t\t            <md:SingleLogoutService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\" Location=\"https://portal.sso.us-east-1.amazonaws.com/saml/logout/XXXXXXXXXXXXXX\"/>\n\t\t\t            <md:SingleLogoutService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\" Location=\"https://portal.sso.us-east-1.amazonaws.com/saml/logout/XXXXXXXXXXXXXX\"/>\n\t\t\t            <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>\n\t\t\t            <md:SingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\" Location=\"https://portal.sso.us-east-1.amazonaws.com/saml/assertion/XXXXXXXXXXXXXX\"/>\n\t\t\t            <md:SingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\" Location=\"https://portal.sso.us-east-1.amazonaws.com/saml/assertion/XXXXXXXXXXXXXX\"/>\n\t\t\t          </md:IDPSSODescriptor>\n\t\t\t        </md:EntityDescriptor>`),\n\t\t\tSelfServicePortal: jsii.Boolean(false),\n\t\t},\n\t})\n\treturn this\n}","version":"1"},"$":{"source":"class ExampleDefaultDataVpcStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    new dsf.utils.DataVpc(this, 'MyDataVpc', {\n      vpcCidr: '10.0.0.0/16',\n      clientVpnEndpointProps: {\n        serverCertificateArn: 'arn:aws:acm:us-east-1:XXXXXXXX:certificate/XXXXXXXXXX',\n        samlMetadataDocument: `<?xml version=\"1.0\" encoding=\"UTF-8\"?><md:EntityDescriptor xmlns:md=\"urn:oasis:names:tc:SAML:2.0:metadata\" entityID=\"https://portal.sso.us-east-1.amazonaws.com/saml/assertion/XXXXXXXXXXXXXX\">\n          <md:IDPSSODescriptor WantAuthnRequestsSigned=\"false\" protocolSupportEnumeration=\"urn:oasis:names:tc:SAML:2.0:protocol\">\n            <md:KeyDescriptor use=\"signing\">\n              <ds:KeyInfo xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\">\n                <ds:X509Data>\n                  <ds:X509Certificate>XXXXXXXXXXXXXXXXXXXXXXXXX</ds:X509Certificate>\n                </ds:X509Data>\n              </ds:KeyInfo>\n            </md:KeyDescriptor>\n            <md:SingleLogoutService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\" Location=\"https://portal.sso.us-east-1.amazonaws.com/saml/logout/XXXXXXXXXXXXXX\"/>\n            <md:SingleLogoutService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\" Location=\"https://portal.sso.us-east-1.amazonaws.com/saml/logout/XXXXXXXXXXXXXX\"/>\n            <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>\n            <md:SingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\" Location=\"https://portal.sso.us-east-1.amazonaws.com/saml/assertion/XXXXXXXXXXXXXX\"/>\n            <md:SingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\" Location=\"https://portal.sso.us-east-1.amazonaws.com/saml/assertion/XXXXXXXXXXXXXX\"/>\n          </md:IDPSSODescriptor>\n        </md:EntityDescriptor>`,\n        selfServicePortal:false\n      }\n    });\n  }\n}","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.utils"},"field":{"field":"markdown","line":152}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.utils","@cdklabs/aws-data-solutions-framework.utils.DataVpc","@cdklabs/aws-data-solutions-framework.utils.DataVpcClientVpnEndpointProps","@cdklabs/aws-data-solutions-framework.utils.DataVpcProps","aws-cdk-lib.Stack","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\n/// !show\nclass ExampleDefaultDataVpcStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    new dsf.utils.DataVpc(this, 'MyDataVpc', {\n      vpcCidr: '10.0.0.0/16',\n      clientVpnEndpointProps: {\n        serverCertificateArn: 'arn:aws:acm:us-east-1:XXXXXXXX:certificate/XXXXXXXXXX',\n        samlMetadataDocument: `<?xml version=\"1.0\" encoding=\"UTF-8\"?><md:EntityDescriptor xmlns:md=\"urn:oasis:names:tc:SAML:2.0:metadata\" entityID=\"https://portal.sso.us-east-1.amazonaws.com/saml/assertion/XXXXXXXXXXXXXX\">\n          <md:IDPSSODescriptor WantAuthnRequestsSigned=\"false\" protocolSupportEnumeration=\"urn:oasis:names:tc:SAML:2.0:protocol\">\n            <md:KeyDescriptor use=\"signing\">\n              <ds:KeyInfo xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\">\n                <ds:X509Data>\n                  <ds:X509Certificate>XXXXXXXXXXXXXXXXXXXXXXXXX</ds:X509Certificate>\n                </ds:X509Data>\n              </ds:KeyInfo>\n            </md:KeyDescriptor>\n            <md:SingleLogoutService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\" Location=\"https://portal.sso.us-east-1.amazonaws.com/saml/logout/XXXXXXXXXXXXXX\"/>\n            <md:SingleLogoutService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\" Location=\"https://portal.sso.us-east-1.amazonaws.com/saml/logout/XXXXXXXXXXXXXX\"/>\n            <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>\n            <md:SingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\" Location=\"https://portal.sso.us-east-1.amazonaws.com/saml/assertion/XXXXXXXXXXXXXX\"/>\n            <md:SingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\" Location=\"https://portal.sso.us-east-1.amazonaws.com/saml/assertion/XXXXXXXXXXXXXX\"/>\n          </md:IDPSSODescriptor>\n        </md:EntityDescriptor>`,\n        selfServicePortal:false\n      }\n    });\n  }\n}\n/// !hide\n\nconst app = new cdk.App();\nnew ExampleDefaultDataVpcStack(app, 'ExampleDefaultDataVpcVpnEndpoint');","syntaxKindCounter":{"11":3,"15":1,"80":16,"97":1,"108":1,"110":1,"154":1,"169":2,"176":1,"183":1,"210":2,"211":3,"213":1,"214":1,"233":1,"241":1,"244":2,"263":1,"298":1,"303":5},"fqnsFingerprint":"540f0cf4dfd9cf93df7b9985befa949eca3a9877c388cdea2cc514ae77eb39d8"},"515b6e0909cd8ca5b4d56a82ec47972f35ef9c6f288d8a98f1a14801b94c9db9":{"translations":{"python":{"source":"dsf.storage.DataLakeStorage(self, \"MyDataLakeStorage\",\n    bronze_bucket_infrequent_access_delay=90,\n    bronze_bucket_archive_delay=180,\n    silver_bucket_infrequent_access_delay=180,\n    silver_bucket_archive_delay=360,\n    gold_bucket_infrequent_access_delay=180,\n    gold_bucket_archive_delay=360\n)","version":"2"},"csharp":{"source":"new Storage.DataLakeStorage(this, \"MyDataLakeStorage\", new DataLakeStorageProps {\n    BronzeBucketInfrequentAccessDelay = 90,\n    BronzeBucketArchiveDelay = 180,\n    SilverBucketInfrequentAccessDelay = 180,\n    SilverBucketArchiveDelay = 360,\n    GoldBucketInfrequentAccessDelay = 180,\n    GoldBucketArchiveDelay = 360\n});","version":"1"},"java":{"source":"DataLakeStorage.Builder.create(this, \"MyDataLakeStorage\")\n        .bronzeBucketInfrequentAccessDelay(90)\n        .bronzeBucketArchiveDelay(180)\n        .silverBucketInfrequentAccessDelay(180)\n        .silverBucketArchiveDelay(360)\n        .goldBucketInfrequentAccessDelay(180)\n        .goldBucketArchiveDelay(360)\n        .build();","version":"1"},"go":{"source":"storage.NewDataLakeStorage(this, jsii.String(\"MyDataLakeStorage\"), &DataLakeStorageProps{\n\tBronzeBucketInfrequentAccessDelay: jsii.Number(90),\n\tBronzeBucketArchiveDelay: jsii.Number(180),\n\tSilverBucketInfrequentAccessDelay: jsii.Number(180),\n\tSilverBucketArchiveDelay: jsii.Number(360),\n\tGoldBucketInfrequentAccessDelay: jsii.Number(180),\n\tGoldBucketArchiveDelay: jsii.Number(360),\n})","version":"1"},"$":{"source":"new dsf.storage.DataLakeStorage(this, 'MyDataLakeStorage', {\n    bronzeBucketInfrequentAccessDelay: 90,\n    bronzeBucketArchiveDelay: 180,\n    silverBucketInfrequentAccessDelay: 180,\n    silverBucketArchiveDelay: 360,\n    goldBucketInfrequentAccessDelay: 180,\n    goldBucketArchiveDelay: 360,\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.utils"},"field":{"field":"markdown","line":203}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.storage","@cdklabs/aws-data-solutions-framework.storage.DataLakeStorage","@cdklabs/aws-data-solutions-framework.storage.DataLakeStorageProps","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\n\nclass ExampleDefaultDataLakeStorageStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n/// !show\n    new dsf.storage.DataLakeStorage(this, 'MyDataLakeStorage', {\n        bronzeBucketInfrequentAccessDelay: 90,\n        bronzeBucketArchiveDelay: 180,\n        silverBucketInfrequentAccessDelay: 180,\n        silverBucketArchiveDelay: 360,\n        goldBucketInfrequentAccessDelay: 180,\n        goldBucketArchiveDelay: 360,\n    });\n/// !hide\n  }\n}\n\nconst app = new cdk.App();\nnew ExampleDefaultDataLakeStorageStack(app, 'ExampleDefaultDataLakeStorage');","syntaxKindCounter":{"9":6,"11":1,"80":9,"110":1,"210":1,"211":2,"214":1,"244":1,"303":6},"fqnsFingerprint":"d09feb3487a9485f44e19e0b5a1f017a7b6966f5ea19ed9e6fbd2839a20cafc9"},"94e8db75f0973eb7cc4ecaa715dc57bb26b924d6cb2851694a4b5f26c885c481":{"translations":{"python":{"source":"# Create a data lake using DSF on AWS L3 construct\nstorage = dsf.storage.DataLakeStorage(self, \"MyDataLakeStorage\")\n\n# Access the CDK L2 Bucket construct exposed by the L3 construct\ngold_bucket = storage.gold_bucket\n\n# Use the Bucket CDK API to modify the Bucket Policy and add cross account write access\ngold_bucket.add_to_resource_policy(aws_iam.PolicyStatement(\n    actions=[\"s3:GetObject\", \"s3:PutObject\", \"s3:DeleteObject\", \"s3:ListBucketMultipartUploads\", \"s3:ListMultipartUploadParts\", \"s3:AbortMultipartUpload\", \"s3:ListBucket\"\n    ],\n    effect=aws_iam.Effect.ALLOW,\n    principals=[aws_iam.AccountPrincipal(\"123456789012\")]\n))","version":"2"},"csharp":{"source":"// Create a data lake using DSF on AWS L3 construct\nvar storage = new Storage.DataLakeStorage(this, \"MyDataLakeStorage\");\n\n// Access the CDK L2 Bucket construct exposed by the L3 construct\nvar goldBucket = storage.GoldBucket;\n\n// Use the Bucket CDK API to modify the Bucket Policy and add cross account write access\ngoldBucket.AddToResourcePolicy(new PolicyStatement(new PolicyStatementProps {\n    Actions = new [] { \"s3:GetObject\", \"s3:PutObject\", \"s3:DeleteObject\", \"s3:ListBucketMultipartUploads\", \"s3:ListMultipartUploadParts\", \"s3:AbortMultipartUpload\", \"s3:ListBucket\" },\n    Effect = Effect.ALLOW,\n    Principals = new [] { new AccountPrincipal(\"123456789012\") }\n}));","version":"1"},"java":{"source":"// Create a data lake using DSF on AWS L3 construct\nDataLakeStorage storage = new DataLakeStorage(this, \"MyDataLakeStorage\");\n\n// Access the CDK L2 Bucket construct exposed by the L3 construct\nAnalyticsBucket goldBucket = storage.getGoldBucket();\n\n// Use the Bucket CDK API to modify the Bucket Policy and add cross account write access\ngoldBucket.addToResourcePolicy(PolicyStatement.Builder.create()\n        .actions(List.of(\"s3:GetObject\", \"s3:PutObject\", \"s3:DeleteObject\", \"s3:ListBucketMultipartUploads\", \"s3:ListMultipartUploadParts\", \"s3:AbortMultipartUpload\", \"s3:ListBucket\"))\n        .effect(Effect.ALLOW)\n        .principals(List.of(new AccountPrincipal(\"123456789012\")))\n        .build());","version":"1"},"go":{"source":"// Create a data lake using DSF on AWS L3 construct\nstorage := storage.NewDataLakeStorage(this, jsii.String(\"MyDataLakeStorage\"))\n\n// Access the CDK L2 Bucket construct exposed by the L3 construct\ngoldBucket := storage.GoldBucket\n\n// Use the Bucket CDK API to modify the Bucket Policy and add cross account write access\ngoldBucket.AddToResourcePolicy(awscdk.Aws_iam.NewPolicyStatement(&PolicyStatementProps{\n\tActions: []*string{\n\t\tjsii.String(\"s3:GetObject\"),\n\t\tjsii.String(\"s3:PutObject\"),\n\t\tjsii.String(\"s3:DeleteObject\"),\n\t\tjsii.String(\"s3:ListBucketMultipartUploads\"),\n\t\tjsii.String(\"s3:ListMultipartUploadParts\"),\n\t\tjsii.String(\"s3:AbortMultipartUpload\"),\n\t\tjsii.String(\"s3:ListBucket\"),\n\t},\n\tEffect: awscdk.*Aws_iam.Effect_ALLOW,\n\tPrincipals: []iPrincipal{\n\t\tawscdk.*Aws_iam.NewAccountPrincipal(jsii.String(\"123456789012\")),\n\t},\n}))","version":"1"},"$":{"source":"    // Create a data lake using DSF on AWS L3 construct\n    const storage = new dsf.storage.DataLakeStorage(this, 'MyDataLakeStorage');\n\n    // Access the CDK L2 Bucket construct exposed by the L3 construct\n    const goldBucket = storage.goldBucket;\n\n    // Use the Bucket CDK API to modify the Bucket Policy and add cross account write access\n    goldBucket.addToResourcePolicy(new aws_iam.PolicyStatement({\n          actions: [\n            's3:GetObject',\n            's3:PutObject',\n            's3:DeleteObject',\n            's3:ListBucketMultipartUploads',\n            's3:ListMultipartUploadParts',\n            's3:AbortMultipartUpload',\n            's3:ListBucket',\n          ],\n          effect: aws_iam.Effect.ALLOW,\n          principals: [new aws_iam.AccountPrincipal('123456789012')]\n        }\n    ));","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.utils"},"field":{"field":"markdown","line":227}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.storage","@cdklabs/aws-data-solutions-framework.storage.AnalyticsBucket","@cdklabs/aws-data-solutions-framework.storage.DataLakeStorage","@cdklabs/aws-data-solutions-framework.storage.DataLakeStorage#goldBucket","aws-cdk-lib.aws_iam.AccountPrincipal","aws-cdk-lib.aws_iam.Effect","aws-cdk-lib.aws_iam.Effect#ALLOW","aws-cdk-lib.aws_iam.PolicyStatement","aws-cdk-lib.aws_iam.PolicyStatementProps","aws-cdk-lib.aws_s3.BucketBase#addToResourcePolicy","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\nimport { aws_iam } from \"aws-cdk-lib\";\n\n\nclass ExampleCustomizationL2Stack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    /// !show\n    // Create a data lake using DSF on AWS L3 construct\n    const storage = new dsf.storage.DataLakeStorage(this, 'MyDataLakeStorage');\n\n    // Access the CDK L2 Bucket construct exposed by the L3 construct\n    const goldBucket = storage.goldBucket;\n\n    // Use the Bucket CDK API to modify the Bucket Policy and add cross account write access\n    goldBucket.addToResourcePolicy(new aws_iam.PolicyStatement({\n          actions: [\n            's3:GetObject',\n            's3:PutObject',\n            's3:DeleteObject',\n            's3:ListBucketMultipartUploads',\n            's3:ListMultipartUploadParts',\n            's3:AbortMultipartUpload',\n            's3:ListBucket',\n          ],\n          effect: aws_iam.Effect.ALLOW,\n          principals: [new aws_iam.AccountPrincipal('123456789012')]\n        }\n    ));\n    /// !hide\n  }\n}\n\nconst app = new cdk.App();\nnew ExampleCustomizationL2Stack(app, 'ExampleCustomizationL2Stack');","syntaxKindCounter":{"11":9,"80":19,"110":1,"209":2,"210":1,"211":8,"213":1,"214":3,"243":2,"244":1,"260":2,"261":2,"303":3},"fqnsFingerprint":"f28db8fe7a9b17e83a9984c89e74dbc1b5f514eeb94249dadfd211d96ff8a401"},"99c5453b644bf75b7620f22f431bdfd657ffcbf43d156098a4fa0ee33805ed2d":{"translations":{"python":{"source":"# Create a data lake using DSF on AWS L3 construct\nstorage = dsf.storage.DataLakeStorage(self, \"MyDataLakeStorage\")\n\n# Access the CDK L1 Bucket construct exposed by the L3 construct\ncfn_bucket = storage.gold_bucket.node.default_child\n\n# Override the CDK L1 property for transfer acceleration\ncfn_bucket.accelerate_configuration = CfnBucket.AccelerateConfigurationProperty(\n    acceleration_status=\"Enabled\"\n)","version":"2"},"csharp":{"source":"// Create a data lake using DSF on AWS L3 construct\nvar storage = new Storage.DataLakeStorage(this, \"MyDataLakeStorage\");\n\n// Access the CDK L1 Bucket construct exposed by the L3 construct\nvar cfnBucket = (CfnBucket)storage.GoldBucket.Node.DefaultChild;\n\n// Override the CDK L1 property for transfer acceleration\ncfnBucket.AccelerateConfiguration = new AccelerateConfigurationProperty {\n    AccelerationStatus = \"Enabled\"\n};","version":"1"},"java":{"source":"// Create a data lake using DSF on AWS L3 construct\nDataLakeStorage storage = new DataLakeStorage(this, \"MyDataLakeStorage\");\n\n// Access the CDK L1 Bucket construct exposed by the L3 construct\nCfnBucket cfnBucket = (CfnBucket)storage.getGoldBucket().getNode().getDefaultChild();\n\n// Override the CDK L1 property for transfer acceleration\ncfnBucket.getAccelerateConfiguration() = AccelerateConfigurationProperty.builder()\n        .accelerationStatus(\"Enabled\")\n        .build();","version":"1"},"go":{"source":"// Create a data lake using DSF on AWS L3 construct\nstorage := storage.NewDataLakeStorage(this, jsii.String(\"MyDataLakeStorage\"))\n\n// Access the CDK L1 Bucket construct exposed by the L3 construct\ncfnBucket := storage.GoldBucket.Node.defaultChild.(cfnBucket)\n\n// Override the CDK L1 property for transfer acceleration\ncfnBucket.AccelerateConfiguration = &AccelerateConfigurationProperty{\n\tAccelerationStatus: jsii.String(\"Enabled\"),\n}","version":"1"},"$":{"source":"    // Create a data lake using DSF on AWS L3 construct\n    const storage = new dsf.storage.DataLakeStorage(this, 'MyDataLakeStorage');\n\n    // Access the CDK L1 Bucket construct exposed by the L3 construct\n    const cfnBucket = storage.goldBucket.node.defaultChild as CfnBucket;\n\n    // Override the CDK L1 property for transfer acceleration\n    cfnBucket.accelerateConfiguration = {\n      accelerationStatus: 'Enabled',\n    }","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.utils"},"field":{"field":"markdown","line":254}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.storage","@cdklabs/aws-data-solutions-framework.storage.DataLakeStorage","@cdklabs/aws-data-solutions-framework.storage.DataLakeStorage#goldBucket","aws-cdk-lib.aws_s3.CfnBucket","aws-cdk-lib.aws_s3.CfnBucket#accelerateConfiguration","constructs.Construct","constructs.Construct#node"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\nimport { CfnBucket } from \"aws-cdk-lib/aws-s3\";\n\n\nclass ExampleCustomizationL1Stack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    /// !show\n    // Create a data lake using DSF on AWS L3 construct\n    const storage = new dsf.storage.DataLakeStorage(this, 'MyDataLakeStorage');\n\n    // Access the CDK L1 Bucket construct exposed by the L3 construct\n    const cfnBucket = storage.goldBucket.node.defaultChild as CfnBucket;\n\n    // Override the CDK L1 property for transfer acceleration\n    cfnBucket.accelerateConfiguration = {\n      accelerationStatus: 'Enabled',\n    }\n    /// !hide\n  }\n}\n\nconst app = new cdk.App();\nnew ExampleCustomizationL1Stack(app, 'ExampleCustomizationL1Stack');","syntaxKindCounter":{"11":2,"64":1,"80":13,"110":1,"183":1,"210":1,"211":6,"214":1,"226":1,"234":1,"243":2,"244":1,"260":2,"261":2,"303":1},"fqnsFingerprint":"db160ae148ddcc6d432da24f9c551c988554281dbbbf2c36f1ca62ed472185b2"},"2c0761340a6efc245aa63a2c1522e9a4732e4ed209d9d53bc0aa4560401a3e32":{"translations":{"python":{"source":"# Create a data lake using DSF on AWS L3 construct\nstorage = dsf.storage.DataLakeStorage(self, \"MyDataLakeStorage\")\n\n# Access the CDK L1 Bucket construct exposed by the L3 construct\ncfn_bucket = storage.gold_bucket.node.default_child\n\n# Override the CloudFormation property for transfer acceleration\ncfn_bucket.add_override(\"Properties.AccelerateConfiguration.AccelerationStatus\", \"Enabled\")","version":"2"},"csharp":{"source":"// Create a data lake using DSF on AWS L3 construct\nvar storage = new Storage.DataLakeStorage(this, \"MyDataLakeStorage\");\n\n// Access the CDK L1 Bucket construct exposed by the L3 construct\nvar cfnBucket = (CfnBucket)storage.GoldBucket.Node.DefaultChild;\n\n// Override the CloudFormation property for transfer acceleration\ncfnBucket.AddOverride(\"Properties.AccelerateConfiguration.AccelerationStatus\", \"Enabled\");","version":"1"},"java":{"source":"// Create a data lake using DSF on AWS L3 construct\nDataLakeStorage storage = new DataLakeStorage(this, \"MyDataLakeStorage\");\n\n// Access the CDK L1 Bucket construct exposed by the L3 construct\nCfnBucket cfnBucket = (CfnBucket)storage.getGoldBucket().getNode().getDefaultChild();\n\n// Override the CloudFormation property for transfer acceleration\ncfnBucket.addOverride(\"Properties.AccelerateConfiguration.AccelerationStatus\", \"Enabled\");","version":"1"},"go":{"source":"// Create a data lake using DSF on AWS L3 construct\nstorage := storage.NewDataLakeStorage(this, jsii.String(\"MyDataLakeStorage\"))\n\n// Access the CDK L1 Bucket construct exposed by the L3 construct\ncfnBucket := storage.GoldBucket.Node.defaultChild.(cfnBucket)\n\n// Override the CloudFormation property for transfer acceleration\ncfnBucket.AddOverride(jsii.String(\"Properties.AccelerateConfiguration.AccelerationStatus\"), jsii.String(\"Enabled\"))","version":"1"},"$":{"source":"    // Create a data lake using DSF on AWS L3 construct\n    const storage = new dsf.storage.DataLakeStorage(this, 'MyDataLakeStorage');\n\n    // Access the CDK L1 Bucket construct exposed by the L3 construct\n    const cfnBucket = storage.goldBucket.node.defaultChild as CfnBucket;\n\n    // Override the CloudFormation property for transfer acceleration\n    cfnBucket.addOverride('Properties.AccelerateConfiguration.AccelerationStatus', 'Enabled')","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.utils"},"field":{"field":"markdown","line":270}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.storage","@cdklabs/aws-data-solutions-framework.storage.DataLakeStorage","@cdklabs/aws-data-solutions-framework.storage.DataLakeStorage#goldBucket","aws-cdk-lib.CfnResource#addOverride","aws-cdk-lib.aws_s3.CfnBucket","constructs.Construct","constructs.Construct#node"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport * as dsf from '../../index';\nimport { CfnBucket } from \"aws-cdk-lib/aws-s3\";\n\n\nclass ExampleCustomizationL1Stack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    /// !show\n    // Create a data lake using DSF on AWS L3 construct\n    const storage = new dsf.storage.DataLakeStorage(this, 'MyDataLakeStorage');\n\n    // Access the CDK L1 Bucket construct exposed by the L3 construct\n    const cfnBucket = storage.goldBucket.node.defaultChild as CfnBucket;\n\n    // Override the CloudFormation property for transfer acceleration\n    cfnBucket.addOverride('Properties.AccelerateConfiguration.AccelerationStatus', 'Enabled')\n    /// !hide\n  }\n}\n\nconst app = new cdk.App();\nnew ExampleCustomizationL1Stack(app, 'ExampleCustomizationL1Stack');","syntaxKindCounter":{"11":3,"80":12,"110":1,"183":1,"211":6,"213":1,"214":1,"234":1,"243":2,"244":1,"260":2,"261":2},"fqnsFingerprint":"232cab3ad78e849fade34aa526053d45c17c5ad13a4cef226d58406f9455ebe3"},"e1a8ba7de3512199de27968890d00a9a1ac043252805242d0c1ca98f5d62f458":{"translations":{"python":{"source":"from ...lib.dsf_provider import DsfProvider\n\ncdk.Stack):\nscope, id):\nsuper().__init__(scope, id)my_provider = DsfProvider(self, \"Provider\",\n    provider_name=\"my-provider\",\n    on_event_handler_definition=HandlerDefinition(\n        managed_policy=my_on_event_managed_policy,\n        handler=\"on-event.handler\",\n        deps_lock_file_path=path.join(__dirname, \"./resources/lambda/my-cr/package-lock.json\"),\n        entry_file=path.join(__dirname, \"./resources/lambda/my-cr/on-event.mjs\")\n    ),\n    is_complete_handler_definition=HandlerDefinition(\n        managed_policy=my_is_complete_managed_policy,\n        handler=\"is-complete.handler\",\n        deps_lock_file_path=path.join(__dirname, \"./resources/lambda/my-cr/package-lock.json\"),\n        entry_file=path.join(__dirname, \"./resources/lambda/my-cr/is-complete.mjs\")\n    )\n)\n\ncdk.CustomResource(self, \"CustomResource\",\n    service_token=my_provider.service_token,\n    resource_type=\"Custom::MyCustomResource\"\n)","version":"2"},"csharp":{"source":"using Lib.Dsf.Provider;\n\nExampleIsCompleteDsfProviderStack : Stack\n{\nConstruct scope, string id) : base(scope, id) var myProvider = new DsfProvider(this, \"Provider\", new DsfProviderProps {\n    ProviderName = \"my-provider\",\n    OnEventHandlerDefinition = new HandlerDefinition {\n        ManagedPolicy = myOnEventManagedPolicy,\n        Handler = \"on-event.handler\",\n        DepsLockFilePath = Join(__dirname, \"./resources/lambda/my-cr/package-lock.json\"),\n        EntryFile = Join(__dirname, \"./resources/lambda/my-cr/on-event.mjs\")\n    },\n    IsCompleteHandlerDefinition = new HandlerDefinition {\n        ManagedPolicy = myIsCompleteManagedPolicy,\n        Handler = \"is-complete.handler\",\n        DepsLockFilePath = Join(__dirname, \"./resources/lambda/my-cr/package-lock.json\"),\n        EntryFile = Join(__dirname, \"./resources/lambda/my-cr/is-complete.mjs\")\n    }\n});\n\nnew CustomResource(this, \"CustomResource\", new CustomResourceProps {\n    ServiceToken = myProvider.ServiceToken,\n    ResourceType = \"Custom::MyCustomResource\"\n});","version":"1"},"java":{"source":"import lib.dsf.provider.DsfProvider;\n\nExampleIsCompleteDsfProviderStack extends Stack {\nExampleIsCompleteDsfProviderStack(Construct scope, String id)\nsuper(scope, id);DsfProvider myProvider = new DsfProvider(this, \"Provider\", new DsfProviderProps()\n        .providerName(\"my-provider\")\n        .onEventHandlerDefinition(new HandlerDefinition()\n                .managedPolicy(myOnEventManagedPolicy)\n                .handler(\"on-event.handler\")\n                .depsLockFilePath(join(__dirname, \"./resources/lambda/my-cr/package-lock.json\"))\n                .entryFile(join(__dirname, \"./resources/lambda/my-cr/on-event.mjs\"))\n                )\n        .isCompleteHandlerDefinition(new HandlerDefinition()\n                .managedPolicy(myIsCompleteManagedPolicy)\n                .handler(\"is-complete.handler\")\n                .depsLockFilePath(join(__dirname, \"./resources/lambda/my-cr/package-lock.json\"))\n                .entryFile(join(__dirname, \"./resources/lambda/my-cr/is-complete.mjs\"))\n                )\n        );\n\nCustomResource.Builder.create(this, \"CustomResource\")\n        .serviceToken(myProvider.getServiceToken())\n        .resourceType(\"Custom::MyCustomResource\")\n        .build();","version":"1"},"go":{"source":"import \"github.com/aws-samples/dummy/lib/dsfprovider\"\n\nexampleIsCompleteDsfProviderStack struct {\nstack\n}\n\nscope construct, id *string) *exampleIsCompleteDsfProviderStack {\n\tthis := &exampleIsCompleteDsfProviderStack{}\ncdk.NewStack_Override(this, scope, id)\nmyProvider := libdsfprovider.NewDsfProvider(this, jsii.String(\"Provider\"), &dsfProviderProps{\n\tproviderName: jsii.String(\"my-provider\"),\n\tonEventHandlerDefinition: &handlerDefinition{\n\t\tmanagedPolicy: myOnEventManagedPolicy,\n\t\thandler: jsii.String(\"on-event.handler\"),\n\t\tdepsLockFilePath: path.join(__dirname, jsii.String(\"./resources/lambda/my-cr/package-lock.json\")),\n\t\tentryFile: path.join(__dirname, jsii.String(\"./resources/lambda/my-cr/on-event.mjs\")),\n\t},\n\tisCompleteHandlerDefinition: &handlerDefinition{\n\t\tmanagedPolicy: myIsCompleteManagedPolicy,\n\t\thandler: jsii.String(\"is-complete.handler\"),\n\t\tdepsLockFilePath: path.join(__dirname, jsii.String(\"./resources/lambda/my-cr/package-lock.json\")),\n\t\tentryFile: path.join(__dirname, jsii.String(\"./resources/lambda/my-cr/is-complete.mjs\")),\n\t},\n})\n\ncdk.NewCustomResource(this, jsii.String(\"CustomResource\"), &CustomResourceProps{\n\tServiceToken: myProvider.serviceToken,\n\tResourceType: jsii.String(\"Custom::MyCustomResource\"),\n})","version":"1"},"$":{"source":"import { DsfProvider } from '../lib/dsf-provider';\n\nclass ExampleIsCompleteDsfProviderStack extends cdk.Stack{\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    const myProvider = new DsfProvider(this, 'Provider', {\n      providerName: 'my-provider',\n      onEventHandlerDefinition: {\n        managedPolicy: myOnEventManagedPolicy,\n        handler: 'on-event.handler',\n        depsLockFilePath: path.join(__dirname, './resources/lambda/my-cr/package-lock.json'),\n        entryFile: path.join(__dirname, './resources/lambda/my-cr/on-event.mjs'),\n      },\n      isCompleteHandlerDefinition: {\n        managedPolicy: myIsCompleteManagedPolicy,\n        handler: 'is-complete.handler',\n        depsLockFilePath: path.join(__dirname, './resources/lambda/my-cr/package-lock.json'),\n        entryFile: path.join(__dirname, './resources/lambda/my-cr/is-complete.mjs'),\n      }\n    });\n\n    new cdk.CustomResource(this, 'CustomResource', {\n      serviceToken: myProvider.serviceToken,\n      resourceType: 'Custom::MyCustomResource',\n    });\n  }\n}","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.utils"},"field":{"field":"markdown","line":316}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.CustomResource","aws-cdk-lib.CustomResourceProps","aws-cdk-lib.Stack","aws-cdk-lib.aws_iam.Effect","aws-cdk-lib.aws_iam.IManagedPolicy","aws-cdk-lib.aws_iam.PolicyDocument","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { ManagedPolicy, PolicyDocument, PolicyStatement, Effect } from 'aws-cdk-lib/aws-iam';\nimport * as path from 'path';\nimport { Construct } from 'constructs';\n/// !show\nimport { DsfProvider } from '../lib/dsf-provider';\n\nclass ExampleIsCompleteDsfProviderStack extends cdk.Stack{\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    \n    /// !hide\n    const myOnEventManagedPolicy = new ManagedPolicy(this, 'Policy1', {\n      document: new PolicyDocument({\n        statements: [\n          new PolicyStatement({\n            actions: [\n              's3:*',\n            ],\n            effect: Effect.ALLOW,\n            resources: ['*'],\n          }),\n        ],\n      }),\n    });\n    \n    const myIsCompleteManagedPolicy = new ManagedPolicy(this, 'Policy2', {\n      document: new PolicyDocument({\n        statements: [\n          new PolicyStatement({\n            actions: [\n              's3:*',\n            ],\n            effect: Effect.ALLOW,\n            resources: ['*'],\n          }),\n        ],\n      }),\n    });\n    \n    /// !show\n    const myProvider = new DsfProvider(this, 'Provider', {\n      providerName: 'my-provider',\n      onEventHandlerDefinition: {\n        managedPolicy: myOnEventManagedPolicy,\n        handler: 'on-event.handler',\n        depsLockFilePath: path.join(__dirname, './resources/lambda/my-cr/package-lock.json'),\n        entryFile: path.join(__dirname, './resources/lambda/my-cr/on-event.mjs'),\n      },\n      isCompleteHandlerDefinition: {\n        managedPolicy: myIsCompleteManagedPolicy,\n        handler: 'is-complete.handler',\n        depsLockFilePath: path.join(__dirname, './resources/lambda/my-cr/package-lock.json'),\n        entryFile: path.join(__dirname, './resources/lambda/my-cr/is-complete.mjs'),\n      }\n    });\n\n    new cdk.CustomResource(this, 'CustomResource', {\n      serviceToken: myProvider.serviceToken,\n      resourceType: 'Custom::MyCustomResource',\n    });\n  }\n}\n/// !hide\nconst app = new cdk.App();\nnew ExampleIsCompleteDsfProviderStack(app, 'ExampleIsCompleteDsfProviderStack');\n\n\n\n","syntaxKindCounter":{"11":11,"80":42,"108":1,"110":2,"154":1,"169":2,"176":1,"183":1,"210":4,"211":7,"213":5,"214":2,"233":1,"241":1,"243":1,"244":2,"260":1,"261":1,"263":1,"272":1,"273":1,"275":1,"276":1,"298":1,"303":13},"fqnsFingerprint":"078c281d0348eaf1667ee19556447d7699da8cedb39d9b3af4dd9d0680b1deda"},"7cffc8f2a7a48e75e3f125e69220aa1eba53295e1bdb9e47f40b44c3152d960c":{"translations":{"python":{"source":"my_provider = DsfProvider(self, \"Provider\",\n    provider_name=\"my-provider\",\n    on_event_handler_definition=HandlerDefinition(\n        managed_policy=my_managed_policy,\n        handler=\"on-event.handler\",\n        deps_lock_file_path=path.join(__dirname, \"./resources/lambda/my-cr/package-lock.json\"),\n        entry_file=path.join(__dirname, \"./resources/lambda/my-cr/on-event.mjs\"),\n        bundling=cdk.aws_lambda_nodejs.BundlingOptions(\n            node_modules=[\"@aws-sdk/client-s3\"\n            ],\n            command_hooks={\n                \"after_bundling\": () => [],\n                \"before_bundling\": () => [\n                              'npx esbuild --version'\n                            ],\n                \"before_install\": () => [\n                            ]\n            }\n        )\n    )\n)","version":"2"},"csharp":{"source":"var myProvider = new DsfProvider(this, \"Provider\", new DsfProviderProps {\n    ProviderName = \"my-provider\",\n    OnEventHandlerDefinition = new HandlerDefinition {\n        ManagedPolicy = myManagedPolicy,\n        Handler = \"on-event.handler\",\n        DepsLockFilePath = Join(__dirname, \"./resources/lambda/my-cr/package-lock.json\"),\n        EntryFile = Join(__dirname, \"./resources/lambda/my-cr/on-event.mjs\"),\n        Bundling = new BundlingOptions {\n            NodeModules = new [] { \"@aws-sdk/client-s3\" },\n            CommandHooks = new Dictionary<string, object> {\n                { \"afterBundling\", () => [] },\n                { \"beforeBundling\", () => [\n                              'npx esbuild --version'\n                            ] },\n                { \"beforeInstall\", () => [\n                            ] }\n            }\n        }\n    }\n});","version":"1"},"java":{"source":"DsfProvider myProvider = new DsfProvider(this, \"Provider\", new DsfProviderProps()\n        .providerName(\"my-provider\")\n        .onEventHandlerDefinition(new HandlerDefinition()\n                .managedPolicy(myManagedPolicy)\n                .handler(\"on-event.handler\")\n                .depsLockFilePath(join(__dirname, \"./resources/lambda/my-cr/package-lock.json\"))\n                .entryFile(join(__dirname, \"./resources/lambda/my-cr/on-event.mjs\"))\n                .bundling(BundlingOptions.builder()\n                        .nodeModules(List.of(\"@aws-sdk/client-s3\"))\n                        .commandHooks(Map.of(\n                                \"afterBundling\", () => [],\n                                \"beforeBundling\", () => [\n                                              'npx esbuild --version'\n                                            ],\n                                \"beforeInstall\", () => [\n                                            ]))\n                        .build())\n                )\n        );","version":"1"},"go":{"source":"myProvider := libdsfprovider.NewDsfProvider(this, jsii.String(\"Provider\"), &dsfProviderProps{\n\tproviderName: jsii.String(\"my-provider\"),\n\tonEventHandlerDefinition: &handlerDefinition{\n\t\tmanagedPolicy: myManagedPolicy,\n\t\thandler: jsii.String(\"on-event.handler\"),\n\t\tdepsLockFilePath: path.join(__dirname, jsii.String(\"./resources/lambda/my-cr/package-lock.json\")),\n\t\tentryFile: path.join(__dirname, jsii.String(\"./resources/lambda/my-cr/on-event.mjs\")),\n\t\tbundling: &BundlingOptions{\n\t\t\tNodeModules: []*string{\n\t\t\t\tjsii.String(\"@aws-sdk/client-s3\"),\n\t\t\t},\n\t\t\tCommandHooks: map[string]interface{}{\n\t\t\t\t\"afterBundling\": () => [],\n\t\t\t\t\"beforeBundling\": () => [\n\t\t\t\t              'npx esbuild --version'\n\t\t\t\t            ],\n\t\t\t\t\"beforeInstall\": () => [\n\t\t\t\t            ],\n\t\t\t},\n\t\t},\n\t},\n})","version":"1"},"$":{"source":"const myProvider = new DsfProvider(this, 'Provider', {\n  providerName: 'my-provider',\n  onEventHandlerDefinition: {\n    managedPolicy: myManagedPolicy,\n    handler: 'on-event.handler',\n    depsLockFilePath: path.join(__dirname, './resources/lambda/my-cr/package-lock.json'),\n    entryFile: path.join(__dirname, './resources/lambda/my-cr/on-event.mjs'),\n    bundling: {\n      nodeModules: [\n        '@aws-sdk/client-s3',\n      ],\n      commandHooks: {\n        afterBundling: () => [],\n        beforeBundling: () => [\n          'npx esbuild --version'\n        ],\n        beforeInstall: () => [\n        ]\n      }\n    },\n  },\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.utils"},"field":{"field":"markdown","line":351}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.aws_iam.Effect","aws-cdk-lib.aws_iam.IManagedPolicy","aws-cdk-lib.aws_iam.PolicyDocument","aws-cdk-lib.aws_lambda_nodejs.BundlingOptions","aws-cdk-lib.aws_lambda_nodejs.ICommandHooks","aws-cdk-lib.aws_lambda_nodejs.ICommandHooks#afterBundling","aws-cdk-lib.aws_lambda_nodejs.ICommandHooks#beforeBundling","aws-cdk-lib.aws_lambda_nodejs.ICommandHooks#beforeInstall","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { DsfProvider } from '../lib/dsf-provider';\nimport { ManagedPolicy, PolicyDocument, PolicyStatement, Effect } from 'aws-cdk-lib/aws-iam';\nimport * as path from 'path';\nimport { Construct } from 'constructs';\n\n\nclass ExampleBundlingDsfProviderStack extends cdk.Stack{\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    \n    const myManagedPolicy = new ManagedPolicy(this, 'Policy', {\n      document: new PolicyDocument({\n        statements: [\n          new PolicyStatement({\n            actions: [\n              's3:*',\n            ],\n            effect: Effect.ALLOW,\n            resources: ['*'],\n          }),\n        ],\n      }),\n    });\n    /// !show\n    const myProvider = new DsfProvider(this, 'Provider', {\n      providerName: 'my-provider',\n      onEventHandlerDefinition: {\n        managedPolicy: myManagedPolicy,\n        handler: 'on-event.handler',\n        depsLockFilePath: path.join(__dirname, './resources/lambda/my-cr/package-lock.json'),\n        entryFile: path.join(__dirname, './resources/lambda/my-cr/on-event.mjs'),\n        bundling: {\n          nodeModules: [\n            '@aws-sdk/client-s3',\n          ],\n          commandHooks: {\n            afterBundling: () => [],\n            beforeBundling: () => [\n              'npx esbuild --version'\n            ],\n            beforeInstall: () => [\n            ]\n          }\n        },\n      },\n    });\n    /// !hide\n    new cdk.CustomResource(this, 'CustomResource', {\n      serviceToken: myProvider.serviceToken,\n      resourceType: 'Custom::MyCustomResource',\n    });\n\n  }\n}\n\nconst app = new cdk.App();\nnew ExampleBundlingDsfProviderStack(app, 'ExampleBundlingDsfProviderStack');","syntaxKindCounter":{"11":7,"39":3,"80":21,"110":1,"209":4,"210":4,"211":2,"213":2,"214":1,"219":3,"243":1,"260":1,"261":1,"303":12},"fqnsFingerprint":"94cce85b710df0be3ff452052de27ec675a0a7f075d28961d196ed633b704698"},"6f0c361669e3918d96cf6aa8a514f4460e98572f427ad079161419649a4ee55e":{"translations":{"python":{"source":"vpc = Vpc.from_lookup(self, \"Vpc\", vpc_name=\"my-vpc\")\nsubnets = vpc.select_subnets(subnet_type=SubnetType.PRIVATE_WITH_EGRESS)\nsecurity_group = SecurityGroup.from_security_group_id(self, \"SecurityGroup\", \"sg-123456\")\n\nmy_provider = DsfProvider(self, \"Provider\",\n    provider_name=\"my-provider\",\n    on_event_handler_definition=HandlerDefinition(\n        managed_policy=my_managed_policy,\n        handler=\"on-event.handler\",\n        deps_lock_file_path=path.join(__dirname, \"./resources/lambda/my-cr/package-lock.json\"),\n        entry_file=path.join(__dirname, \"./resources/lambda/my-cr/on-event.mjs\")\n    ),\n    vpc=vpc,\n    subnets=subnets,\n    # the security group should be dedicated to the custom resource\n    security_groups=[security_group]\n)","version":"2"},"csharp":{"source":"var vpc = Vpc.FromLookup(this, \"Vpc\", new VpcLookupOptions { VpcName = \"my-vpc\" });\nvar subnets = vpc.SelectSubnets(new SubnetSelection { SubnetType = SubnetType.PRIVATE_WITH_EGRESS });\nvar securityGroup = SecurityGroup.FromSecurityGroupId(this, \"SecurityGroup\", \"sg-123456\");\n\nvar myProvider = new DsfProvider(this, \"Provider\", new DsfProviderProps {\n    ProviderName = \"my-provider\",\n    OnEventHandlerDefinition = new HandlerDefinition {\n        ManagedPolicy = myManagedPolicy,\n        Handler = \"on-event.handler\",\n        DepsLockFilePath = Join(__dirname, \"./resources/lambda/my-cr/package-lock.json\"),\n        EntryFile = Join(__dirname, \"./resources/lambda/my-cr/on-event.mjs\")\n    },\n    Vpc = vpc,\n    Subnets = subnets,\n    // the security group should be dedicated to the custom resource\n    SecurityGroups = new [] { securityGroup }\n});","version":"1"},"java":{"source":"IVpc vpc = Vpc.fromLookup(this, \"Vpc\", VpcLookupOptions.builder().vpcName(\"my-vpc\").build());\nSelectedSubnets subnets = vpc.selectSubnets(SubnetSelection.builder().subnetType(SubnetType.PRIVATE_WITH_EGRESS).build());\nISecurityGroup securityGroup = SecurityGroup.fromSecurityGroupId(this, \"SecurityGroup\", \"sg-123456\");\n\nDsfProvider myProvider = new DsfProvider(this, \"Provider\", new DsfProviderProps()\n        .providerName(\"my-provider\")\n        .onEventHandlerDefinition(new HandlerDefinition()\n                .managedPolicy(myManagedPolicy)\n                .handler(\"on-event.handler\")\n                .depsLockFilePath(join(__dirname, \"./resources/lambda/my-cr/package-lock.json\"))\n                .entryFile(join(__dirname, \"./resources/lambda/my-cr/on-event.mjs\"))\n                )\n        .vpc(vpc)\n        .subnets(subnets)\n        // the security group should be dedicated to the custom resource\n        .securityGroups(List.of(securityGroup))\n        );","version":"1"},"go":{"source":"vpc := awscdk.Vpc_FromLookup(this, jsii.String(\"Vpc\"), &VpcLookupOptions{\n\tVpcName: jsii.String(\"my-vpc\"),\n})\nsubnets := vpc.SelectSubnets(&SubnetSelection{\n\tSubnetType: awscdk.SubnetType_PRIVATE_WITH_EGRESS,\n})\nsecurityGroup := awscdk.SecurityGroup_FromSecurityGroupId(this, jsii.String(\"SecurityGroup\"), jsii.String(\"sg-123456\"))\n\nmyProvider := libdsfprovider.NewDsfProvider(this, jsii.String(\"Provider\"), &dsfProviderProps{\n\tproviderName: jsii.String(\"my-provider\"),\n\tonEventHandlerDefinition: &handlerDefinition{\n\t\tmanagedPolicy: myManagedPolicy,\n\t\thandler: jsii.String(\"on-event.handler\"),\n\t\tdepsLockFilePath: path.join(__dirname, jsii.String(\"./resources/lambda/my-cr/package-lock.json\")),\n\t\tentryFile: path.join(__dirname, jsii.String(\"./resources/lambda/my-cr/on-event.mjs\")),\n\t},\n\tvpc: vpc,\n\tsubnets: subnets,\n\t// the security group should be dedicated to the custom resource\n\tsecurityGroups: []iSecurityGroup{\n\t\tsecurityGroup,\n\t},\n})","version":"1"},"$":{"source":"\n    const vpc = Vpc.fromLookup(this, 'Vpc', { vpcName: 'my-vpc'});\n    const subnets = vpc.selectSubnets({subnetType: SubnetType.PRIVATE_WITH_EGRESS});\n    const securityGroup = SecurityGroup.fromSecurityGroupId(this, 'SecurityGroup', 'sg-123456');\n\n    const myProvider = new DsfProvider(this, 'Provider', {\n      providerName: 'my-provider',\n      onEventHandlerDefinition: {\n        managedPolicy: myManagedPolicy,\n        handler: 'on-event.handler',\n        depsLockFilePath: path.join(__dirname, './resources/lambda/my-cr/package-lock.json'),\n        entryFile: path.join(__dirname, './resources/lambda/my-cr/on-event.mjs'),\n      },\n      vpc,\n      subnets,\n      // the security group should be dedicated to the custom resource\n      securityGroups: [securityGroup],\n    });","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.utils"},"field":{"field":"markdown","line":389}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.aws_ec2.ISecurityGroup","aws-cdk-lib.aws_ec2.IVpc","aws-cdk-lib.aws_ec2.IVpc#selectSubnets","aws-cdk-lib.aws_ec2.SecurityGroup#fromSecurityGroupId","aws-cdk-lib.aws_ec2.SelectedSubnets","aws-cdk-lib.aws_ec2.SubnetSelection","aws-cdk-lib.aws_ec2.SubnetType","aws-cdk-lib.aws_ec2.SubnetType#PRIVATE_WITH_EGRESS","aws-cdk-lib.aws_ec2.Vpc#fromLookup","aws-cdk-lib.aws_ec2.VpcLookupOptions","aws-cdk-lib.aws_iam.Effect","aws-cdk-lib.aws_iam.IManagedPolicy","aws-cdk-lib.aws_iam.PolicyDocument","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { DsfProvider } from '../lib/dsf-provider';\nimport { ManagedPolicy, PolicyDocument, PolicyStatement, Effect } from 'aws-cdk-lib/aws-iam';\nimport * as path from 'path';\nimport { SecurityGroup, SubnetType, Vpc } from 'aws-cdk-lib/aws-ec2';\nimport { Construct } from 'constructs';\n\n\nclass ExampleVpcDsfProviderStack extends cdk.Stack{\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    \n    const myManagedPolicy = new ManagedPolicy(this, 'Policy', {\n      document: new PolicyDocument({\n        statements: [\n          new PolicyStatement({\n            actions: [\n              's3:*',\n            ],\n            effect: Effect.ALLOW,\n            resources: ['*'],\n          }),\n        ],\n      }),\n    });\n    /// !show\n\n    const vpc = Vpc.fromLookup(this, 'Vpc', { vpcName: 'my-vpc'});\n    const subnets = vpc.selectSubnets({subnetType: SubnetType.PRIVATE_WITH_EGRESS});\n    const securityGroup = SecurityGroup.fromSecurityGroupId(this, 'SecurityGroup', 'sg-123456');\n\n    const myProvider = new DsfProvider(this, 'Provider', {\n      providerName: 'my-provider',\n      onEventHandlerDefinition: {\n        managedPolicy: myManagedPolicy,\n        handler: 'on-event.handler',\n        depsLockFilePath: path.join(__dirname, './resources/lambda/my-cr/package-lock.json'),\n        entryFile: path.join(__dirname, './resources/lambda/my-cr/on-event.mjs'),\n      },\n      vpc,\n      subnets,\n      // the security group should be dedicated to the custom resource\n      securityGroups: [securityGroup],\n    });\n    /// !hide\n\n    new cdk.CustomResource(this, 'CustomResource', {\n      serviceToken: myProvider.serviceToken,\n      resourceType: 'Custom::MyCustomResource',\n    });\n\n  }\n}\n\nconst app = new cdk.App();\nnew ExampleVpcDsfProviderStack(app, 'ExampleVpcDsfProviderStack');","syntaxKindCounter":{"11":9,"80":32,"110":3,"209":1,"210":4,"211":6,"213":5,"214":1,"243":4,"260":4,"261":4,"303":9,"304":2},"fqnsFingerprint":"93419c4eddcec4bc0d23c5795beba61ae29c317a575a7d00469136961c80acf1"},"3b4d3f059f09826df3373631bb9287768a5bebf5c35781c5b4704a9f8dc677f8":{"translations":{"python":{"source":"my_provider = DsfProvider(self, \"Provider\",\n    provider_name=\"my-provider\",\n    on_event_handler_definition=HandlerDefinition(\n        managed_policy=my_managed_policy,\n        handler=\"on-event.handler\",\n        deps_lock_file_path=path.join(__dirname, \"./resources/lambda/my-cr/package-lock.json\"),\n        entry_file=path.join(__dirname, \"./resources/lambda/my-cr/on-event.mjs\"),\n        environment={\n            \"MY_ENV_VARIABLE\": \"my-env-variable-value\"\n        }\n    )\n)","version":"2"},"csharp":{"source":"var myProvider = new DsfProvider(this, \"Provider\", new DsfProviderProps {\n    ProviderName = \"my-provider\",\n    OnEventHandlerDefinition = new HandlerDefinition {\n        ManagedPolicy = myManagedPolicy,\n        Handler = \"on-event.handler\",\n        DepsLockFilePath = Join(__dirname, \"./resources/lambda/my-cr/package-lock.json\"),\n        EntryFile = Join(__dirname, \"./resources/lambda/my-cr/on-event.mjs\"),\n        Environment = new Dictionary<string, string> {\n            { \"MY_ENV_VARIABLE\", \"my-env-variable-value\" }\n        }\n    }\n});","version":"1"},"java":{"source":"DsfProvider myProvider = new DsfProvider(this, \"Provider\", new DsfProviderProps()\n        .providerName(\"my-provider\")\n        .onEventHandlerDefinition(new HandlerDefinition()\n                .managedPolicy(myManagedPolicy)\n                .handler(\"on-event.handler\")\n                .depsLockFilePath(join(__dirname, \"./resources/lambda/my-cr/package-lock.json\"))\n                .entryFile(join(__dirname, \"./resources/lambda/my-cr/on-event.mjs\"))\n                .environment(Map.of(\n                        \"MY_ENV_VARIABLE\", \"my-env-variable-value\"))\n                )\n        );","version":"1"},"go":{"source":"myProvider := libdsfprovider.NewDsfProvider(this, jsii.String(\"Provider\"), &dsfProviderProps{\n\tproviderName: jsii.String(\"my-provider\"),\n\tonEventHandlerDefinition: &handlerDefinition{\n\t\tmanagedPolicy: myManagedPolicy,\n\t\thandler: jsii.String(\"on-event.handler\"),\n\t\tdepsLockFilePath: path.join(__dirname, jsii.String(\"./resources/lambda/my-cr/package-lock.json\")),\n\t\tentryFile: path.join(__dirname, jsii.String(\"./resources/lambda/my-cr/on-event.mjs\")),\n\t\tenvironment: map[string]*string{\n\t\t\t\"MY_ENV_VARIABLE\": jsii.String(\"my-env-variable-value\"),\n\t\t},\n\t},\n})","version":"1"},"$":{"source":"const myProvider = new DsfProvider(this, 'Provider', {\n  providerName: 'my-provider',\n  onEventHandlerDefinition: {\n    managedPolicy: myManagedPolicy,\n    handler: 'on-event.handler',\n    depsLockFilePath: path.join(__dirname, './resources/lambda/my-cr/package-lock.json'),\n    entryFile: path.join(__dirname, './resources/lambda/my-cr/on-event.mjs'),\n    environment: {\n      MY_ENV_VARIABLE: 'my-env-variable-value',\n    }\n  },\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.utils"},"field":{"field":"markdown","line":414}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.aws_iam.Effect","aws-cdk-lib.aws_iam.IManagedPolicy","aws-cdk-lib.aws_iam.PolicyDocument","constructs.Construct"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { ManagedPolicy, PolicyDocument, PolicyStatement, Effect } from 'aws-cdk-lib/aws-iam';\nimport * as path from 'path';\nimport { DsfProvider } from '../lib/dsf-provider';\nimport { Construct } from 'constructs';\n\nclass ExampleEnvDsfProviderStack extends cdk.Stack{\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    \n    const myManagedPolicy = new ManagedPolicy(this, 'Policy', {\n      document: new PolicyDocument({\n        statements: [\n          new PolicyStatement({\n            actions: [\n              's3:*',\n            ],\n            effect: Effect.ALLOW,\n            resources: ['*'],\n          }),\n        ],\n      }),\n    });\n    /// !show\n    const myProvider = new DsfProvider(this, 'Provider', {\n      providerName: 'my-provider',\n      onEventHandlerDefinition: {\n        managedPolicy: myManagedPolicy,\n        handler: 'on-event.handler',\n        depsLockFilePath: path.join(__dirname, './resources/lambda/my-cr/package-lock.json'),\n        entryFile: path.join(__dirname, './resources/lambda/my-cr/on-event.mjs'),\n        environment: {\n          MY_ENV_VARIABLE: 'my-env-variable-value',\n        }\n      },\n    });\n    /// !hide\n    new cdk.CustomResource(this, 'CustomResource', {\n      serviceToken: myProvider.serviceToken,\n      resourceType: 'Custom::MyCustomResource',\n    });\n\n\n  }\n}\n\nconst app = new cdk.App();\nnew ExampleEnvDsfProviderStack(app, 'ExampleEnvDsfProviderStack');\n\n\n","syntaxKindCounter":{"11":6,"80":17,"110":1,"210":3,"211":2,"213":2,"214":1,"243":1,"260":1,"261":1,"303":8},"fqnsFingerprint":"b61fe3865fa11fe4c3586c4bb8925fa2c815d010175b8eb07b70cd9abd481d2d"},"78c9d8beab81184df04c3f185282617255ce7fa36bb1f8411546b38f84adf7f6":{"translations":{"python":{"source":"self.node.set_context(\"@data-solutions-framework-on-aws/removeDataOnDestroy\", True)\n\nmy_provider = DsfProvider(self, \"Provider\",\n    provider_name=\"my-provider\",\n    on_event_handler_definition=HandlerDefinition(\n        managed_policy=my_on_event_managed_policy,\n        handler=\"on-event.handler\",\n        deps_lock_file_path=path.join(__dirname, \"./resources/lambda/my-cr/package-lock.json\"),\n        entry_file=path.join(__dirname, \"./resources/lambda/my-cr/on-event.mjs\")\n    ),\n    removal_policy=cdk.RemovalPolicy.DESTROY\n)","version":"2"},"csharp":{"source":"Node.SetContext(\"@data-solutions-framework-on-aws/removeDataOnDestroy\", true);\n\nvar myProvider = new DsfProvider(this, \"Provider\", new DsfProviderProps {\n    ProviderName = \"my-provider\",\n    OnEventHandlerDefinition = new HandlerDefinition {\n        ManagedPolicy = myOnEventManagedPolicy,\n        Handler = \"on-event.handler\",\n        DepsLockFilePath = Join(__dirname, \"./resources/lambda/my-cr/package-lock.json\"),\n        EntryFile = Join(__dirname, \"./resources/lambda/my-cr/on-event.mjs\")\n    },\n    RemovalPolicy = RemovalPolicy.DESTROY\n});","version":"1"},"java":{"source":"this.node.setContext(\"@data-solutions-framework-on-aws/removeDataOnDestroy\", true);\n\nDsfProvider myProvider = new DsfProvider(this, \"Provider\", new DsfProviderProps()\n        .providerName(\"my-provider\")\n        .onEventHandlerDefinition(new HandlerDefinition()\n                .managedPolicy(myOnEventManagedPolicy)\n                .handler(\"on-event.handler\")\n                .depsLockFilePath(join(__dirname, \"./resources/lambda/my-cr/package-lock.json\"))\n                .entryFile(join(__dirname, \"./resources/lambda/my-cr/on-event.mjs\"))\n                )\n        .removalPolicy(RemovalPolicy.DESTROY)\n        );","version":"1"},"go":{"source":"this.Node.SetContext(jsii.String(\"@data-solutions-framework-on-aws/removeDataOnDestroy\"), jsii.Boolean(true))\n\nmyProvider := libdsfprovider.NewDsfProvider(this, jsii.String(\"Provider\"), &dsfProviderProps{\n\tproviderName: jsii.String(\"my-provider\"),\n\tonEventHandlerDefinition: &handlerDefinition{\n\t\tmanagedPolicy: myOnEventManagedPolicy,\n\t\thandler: jsii.String(\"on-event.handler\"),\n\t\tdepsLockFilePath: path.join(__dirname, jsii.String(\"./resources/lambda/my-cr/package-lock.json\")),\n\t\tentryFile: path.join(__dirname, jsii.String(\"./resources/lambda/my-cr/on-event.mjs\")),\n\t},\n\tremovalPolicy: cdk.RemovalPolicy_DESTROY,\n})","version":"1"},"$":{"source":"\n    this.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\n    const myProvider = new DsfProvider(this, 'Provider', {\n      providerName: 'my-provider',\n      onEventHandlerDefinition: {\n        managedPolicy: myOnEventManagedPolicy,\n        handler: 'on-event.handler',\n        depsLockFilePath: path.join(__dirname, './resources/lambda/my-cr/package-lock.json'),\n        entryFile: path.join(__dirname, './resources/lambda/my-cr/on-event.mjs'),\n      },\n      removalPolicy: cdk.RemovalPolicy.DESTROY,\n    });","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/aws-data-solutions-framework.utils"},"field":{"field":"markdown","line":447}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.RemovalPolicy","aws-cdk-lib.RemovalPolicy#DESTROY","aws-cdk-lib.aws_iam.Effect","aws-cdk-lib.aws_iam.IManagedPolicy","aws-cdk-lib.aws_iam.PolicyDocument","constructs.Construct","constructs.Construct#node","constructs.Node#setContext"],"fullSource":"// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as cdk from 'aws-cdk-lib';\nimport { DsfProvider } from '../lib/dsf-provider';\nimport { ManagedPolicy, PolicyDocument, PolicyStatement, Effect } from 'aws-cdk-lib/aws-iam';\nimport * as path from 'path';\nimport { Construct } from 'constructs';\n\n\nclass ExampleRemovalPolicyDsfProviderStack extends cdk.Stack{\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n    \n    const myOnEventManagedPolicy = new ManagedPolicy(this, 'Policy1', {\n      document: new PolicyDocument({\n        statements: [\n          new PolicyStatement({\n            actions: [\n              's3:*',\n            ],\n            effect: Effect.ALLOW,\n            resources: ['*'],\n          }),\n        ],\n      }),\n    });\n    \n    /// !show\n    \n    this.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n    \n    const myProvider = new DsfProvider(this, 'Provider', {\n      providerName: 'my-provider',\n      onEventHandlerDefinition: {\n        managedPolicy: myOnEventManagedPolicy,\n        handler: 'on-event.handler',\n        depsLockFilePath: path.join(__dirname, './resources/lambda/my-cr/package-lock.json'),\n        entryFile: path.join(__dirname, './resources/lambda/my-cr/on-event.mjs'),\n      },\n      removalPolicy: cdk.RemovalPolicy.DESTROY,\n    });\n    /// !hide\n    new cdk.CustomResource(this, 'CustomResource', {\n      serviceToken: myProvider.serviceToken,\n      resourceType: 'Custom::MyCustomResource',\n    });\n\n  }\n}\n\nconst app = new cdk.App();\nnew ExampleRemovalPolicyDsfProviderStack(app, 'ExampleRemovalPolicyDsfProviderStack');\n\n","syntaxKindCounter":{"11":6,"80":21,"110":2,"112":1,"210":2,"211":6,"213":3,"214":1,"243":1,"244":1,"260":1,"261":1,"303":7},"fqnsFingerprint":"4b8d9f816fca8942401a334fa198ae1ab0618e86e474c7e128480fe4529c288b"},"558a27e36ca122a3bd6e90d648e18511df7a53fe33d794c928cf8b5e6d5f5ce7":{"translations":{"python":{"source":"dsf.consumption.AthenaWorkGroup(self, \"AthenaWorkGroupDefault\",\n    name=\"athena-default\",\n    result_location_prefix=\"athena-default-results/\"\n)","version":"2"},"csharp":{"source":"new Consumption.AthenaWorkGroup(this, \"AthenaWorkGroupDefault\", new AthenaWorkgroupProps {\n    Name = \"athena-default\",\n    ResultLocationPrefix = \"athena-default-results/\"\n});","version":"1"},"java":{"source":"AthenaWorkGroup.Builder.create(this, \"AthenaWorkGroupDefault\")\n        .name(\"athena-default\")\n        .resultLocationPrefix(\"athena-default-results/\")\n        .build();","version":"1"},"go":{"source":"consumption.NewAthenaWorkGroup(this, jsii.String(\"AthenaWorkGroupDefault\"), &AthenaWorkgroupProps{\n\tName: jsii.String(\"athena-default\"),\n\tResultLocationPrefix: jsii.String(\"athena-default-results/\"),\n})","version":"1"},"$":{"source":"new dsf.consumption.AthenaWorkGroup(this, 'AthenaWorkGroupDefault', {\n   name: 'athena-default',\n   resultLocationPrefix: 'athena-default-results/'\n })","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.consumption.AthenaWorkGroup"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption","@cdklabs/aws-data-solutions-framework.consumption.AthenaWorkGroup","@cdklabs/aws-data-solutions-framework.consumption.AthenaWorkgroupProps","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\nnew dsf.consumption.AthenaWorkGroup(this, 'AthenaWorkGroupDefault', {\n   name: 'athena-default',\n   resultLocationPrefix: 'athena-default-results/'\n })\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":3,"80":5,"110":1,"210":1,"211":2,"214":1,"244":1,"303":2},"fqnsFingerprint":"e5801d267f157839463204d7fd53435b4c3b17f421baa5fcc3efdc1cba9e7863"},"4598542fd213543b81e966cc5fe9a7e857b7782e53ca3f96c3daff411c5fd7bd":{"translations":{"python":{"source":"domain_endpoint = \"search-XXXXXX.XXXXXX.es.amazonaws.com\"\napi_role = cdk.iam.Role.from_role_name(self, \"ApiRole\", \"<IAMRoleWithOpenSearchPermissions>\")\nos_api = dsf.consumption.OpenSearchApi(self, \"MyOpenSearchApi\",\n    iam_handler_role=api_role,\n    open_search_endpoint=domain_endpoint,\n    open_search_cluster_type=dsf.consumption.OpenSearchClusterType.PROVISIONED,\n    removal_policy=cdk.RemovalPolicy.DESTROY\n)\n\nrole_map = os_api.add_role_mapping(\"DashBoardUser\", \"dashboards_user\", \"<IAMIdentityCenterDashboardUsersGroupId>\")\nadd1_cr = os_api.call_open_search_api(\"AddData1\", \"movies-01/_doc/1111\", {\"title\": \"Rush\", \"year\": 2013}, \"PUT\")\nadd1_cr.node.add_dependency(role_map)\nadd2_cr = os_api.call_open_search_api(\"AddData3\", \"movies-01/_doc/2222\", {\"title\": \"Toy Story\", \"year\": 2014}, \"PUT\")\nadd2_cr.node.add_dependency(role_map)","version":"2"},"csharp":{"source":"var domainEndpoint = \"search-XXXXXX.XXXXXX.es.amazonaws.com\";\nvar apiRole = Iam.Role.FromRoleName(this, \"ApiRole\", \"<IAMRoleWithOpenSearchPermissions>\");\nvar osApi = new Consumption.OpenSearchApi(this, \"MyOpenSearchApi\", new OpenSearchApiProps {\n    IamHandlerRole = apiRole,\n    OpenSearchEndpoint = domainEndpoint,\n    OpenSearchClusterType = Consumption.OpenSearchClusterType.PROVISIONED,\n    RemovalPolicy = RemovalPolicy.DESTROY\n});\n\nvar roleMap = osApi.AddRoleMapping(\"DashBoardUser\", \"dashboards_user\", \"<IAMIdentityCenterDashboardUsersGroupId>\");\nvar add1Cr = osApi.CallOpenSearchApi(\"AddData1\", \"movies-01/_doc/1111\", new Dictionary<string, object> { { \"title\", \"Rush\" }, { \"year\", 2013 } }, \"PUT\");\nadd1Cr.Node.AddDependency(roleMap);\nvar add2Cr = osApi.CallOpenSearchApi(\"AddData3\", \"movies-01/_doc/2222\", new Dictionary<string, object> { { \"title\", \"Toy Story\" }, { \"year\", 2014 } }, \"PUT\");\nadd2Cr.Node.AddDependency(roleMap);","version":"1"},"java":{"source":"String domainEndpoint = \"search-XXXXXX.XXXXXX.es.amazonaws.com\";\nObject apiRole = Role.fromRoleName(this, \"ApiRole\", \"<IAMRoleWithOpenSearchPermissions>\");\nOpenSearchApi osApi = OpenSearchApi.Builder.create(this, \"MyOpenSearchApi\")\n        .iamHandlerRole(apiRole)\n        .openSearchEndpoint(domainEndpoint)\n        .openSearchClusterType(OpenSearchClusterType.PROVISIONED)\n        .removalPolicy(RemovalPolicy.DESTROY)\n        .build();\n\nCustomResource roleMap = osApi.addRoleMapping(\"DashBoardUser\", \"dashboards_user\", \"<IAMIdentityCenterDashboardUsersGroupId>\");\nCustomResource add1Cr = osApi.callOpenSearchApi(\"AddData1\", \"movies-01/_doc/1111\", Map.of(\"title\", \"Rush\", \"year\", 2013), \"PUT\");\nadd1Cr.node.addDependency(roleMap);\nCustomResource add2Cr = osApi.callOpenSearchApi(\"AddData3\", \"movies-01/_doc/2222\", Map.of(\"title\", \"Toy Story\", \"year\", 2014), \"PUT\");\nadd2Cr.node.addDependency(roleMap);","version":"1"},"go":{"source":"domainEndpoint := \"search-XXXXXX.XXXXXX.es.amazonaws.com\"\napiRole := iam.role_FromRoleName(this, jsii.String(\"ApiRole\"), jsii.String(\"<IAMRoleWithOpenSearchPermissions>\"))\nosApi := consumption.NewOpenSearchApi(this, jsii.String(\"MyOpenSearchApi\"), &OpenSearchApiProps{\n\tIamHandlerRole: apiRole,\n\tOpenSearchEndpoint: domainEndpoint,\n\tOpenSearchClusterType: consumption.OpenSearchClusterType_PROVISIONED,\n\tRemovalPolicy: cdk.RemovalPolicy_DESTROY,\n})\n\nroleMap := osApi.AddRoleMapping(jsii.String(\"DashBoardUser\"), jsii.String(\"dashboards_user\"), jsii.String(\"<IAMIdentityCenterDashboardUsersGroupId>\"))\nadd1Cr := osApi.CallOpenSearchApi(jsii.String(\"AddData1\"), jsii.String(\"movies-01/_doc/1111\"), map[string]interface{}{\n\t\"title\": jsii.String(\"Rush\"),\n\t\"year\": jsii.Number(2013),\n}, jsii.String(\"PUT\"))\nadd1Cr.Node.AddDependency(roleMap)\nadd2Cr := osApi.CallOpenSearchApi(jsii.String(\"AddData3\"), jsii.String(\"movies-01/_doc/2222\"), map[string]interface{}{\n\t\"title\": jsii.String(\"Toy Story\"),\n\t\"year\": jsii.Number(2014),\n}, jsii.String(\"PUT\"))\nadd2Cr.Node.AddDependency(roleMap)","version":"1"},"$":{"source":" const domainEndpoint='search-XXXXXX.XXXXXX.es.amazonaws.com';\n const apiRole = cdk.iam.Role.fromRoleName(this, 'ApiRole', '<IAMRoleWithOpenSearchPermissions>');\n const osApi = new dsf.consumption.OpenSearchApi(this, 'MyOpenSearchApi',{\n   iamHandlerRole:apiRole,\n   openSearchEndpoint:domainEndpoint,\n   openSearchClusterType:dsf.consumption.OpenSearchClusterType.PROVISIONED,\n   removalPolicy:cdk.RemovalPolicy.DESTROY\n });\n\n const roleMap = osApi.addRoleMapping('DashBoardUser', 'dashboards_user','<IAMIdentityCenterDashboardUsersGroupId>');\n const add1Cr = osApi.callOpenSearchApi('AddData1', 'movies-01/_doc/1111',{\"title\": \"Rush\", \"year\": 2013}, 'PUT');\n add1Cr.node.addDependency(roleMap);\n const add2Cr = osApi.callOpenSearchApi('AddData3', 'movies-01/_doc/2222',{\"title\": \"Toy Story\", \"year\": 2014}, 'PUT');\n add2Cr.node.addDependency(roleMap);","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.consumption.OpenSearchApi"},"field":{"field":"example"}},"didCompile":false,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchApi","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchApi#addRoleMapping","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchApi#callOpenSearchApi","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchApiProps","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchClusterType","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchClusterType#PROVISIONED","aws-cdk-lib.CustomResource","aws-cdk-lib.RemovalPolicy","aws-cdk-lib.RemovalPolicy#DESTROY","aws-cdk-lib.aws_iam.IRole","constructs.Construct","constructs.Construct#node","constructs.IDependable","constructs.Node#addDependency"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\n const domainEndpoint='search-XXXXXX.XXXXXX.es.amazonaws.com';\n const apiRole = cdk.iam.Role.fromRoleName(this, 'ApiRole', '<IAMRoleWithOpenSearchPermissions>');\n const osApi = new dsf.consumption.OpenSearchApi(this, 'MyOpenSearchApi',{\n   iamHandlerRole:apiRole,\n   openSearchEndpoint:domainEndpoint,\n   openSearchClusterType:dsf.consumption.OpenSearchClusterType.PROVISIONED,\n   removalPolicy:cdk.RemovalPolicy.DESTROY\n });\n\n const roleMap = osApi.addRoleMapping('DashBoardUser', 'dashboards_user','<IAMIdentityCenterDashboardUsersGroupId>');\n const add1Cr = osApi.callOpenSearchApi('AddData1', 'movies-01/_doc/1111',{\"title\": \"Rush\", \"year\": 2013}, 'PUT');\n add1Cr.node.addDependency(roleMap);\n const add2Cr = osApi.callOpenSearchApi('AddData3', 'movies-01/_doc/2222',{\"title\": \"Toy Story\", \"year\": 2014}, 'PUT');\n add2Cr.node.addDependency(roleMap);\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"9":2,"11":19,"80":40,"110":2,"210":3,"211":17,"213":6,"214":1,"243":6,"244":2,"260":6,"261":6,"303":8},"fqnsFingerprint":"0071057365ae15a32e3ca18e886d3eaabaebcf465230482ec388d07fba8b0c51"},"40a81102a2d294de97c6547c5878be37b60672f83ea705276e0639656afffbdd":{"translations":{"python":{"source":"os_cluster = dsf.consumption.OpenSearchCluster(self, \"MyOpenSearchCluster\",\n    domain_name=\"mycluster1\",\n    saml_entity_id=\"<IdpIdentityId>\",\n    saml_metadata_content=\"<IdpMetadataXml>\",\n    saml_master_backend_role=\"<IAMIdentityCenterAdminGroupId>\",\n    deploy_in_vpc=True,\n    removal_policy=cdk.RemovalPolicy.DESTROY\n)\n\nos_cluster.add_role_mapping(\"DashBoardUser\", \"dashboards_user\", \"<IAMIdentityCenterDashboardUsersGroupId>\")\nos_cluster.add_role_mapping(\"ReadAllRole\", \"readall\", \"<IAMIdentityCenterDashboardUsersGroupId>\")","version":"2"},"csharp":{"source":"var osCluster = new Consumption.OpenSearchCluster(this, \"MyOpenSearchCluster\", new OpenSearchClusterProps {\n    DomainName = \"mycluster1\",\n    SamlEntityId = \"<IdpIdentityId>\",\n    SamlMetadataContent = \"<IdpMetadataXml>\",\n    SamlMasterBackendRole = \"<IAMIdentityCenterAdminGroupId>\",\n    DeployInVpc = true,\n    RemovalPolicy = RemovalPolicy.DESTROY\n});\n\nosCluster.AddRoleMapping(\"DashBoardUser\", \"dashboards_user\", \"<IAMIdentityCenterDashboardUsersGroupId>\");\nosCluster.AddRoleMapping(\"ReadAllRole\", \"readall\", \"<IAMIdentityCenterDashboardUsersGroupId>\");","version":"1"},"java":{"source":"OpenSearchCluster osCluster = OpenSearchCluster.Builder.create(this, \"MyOpenSearchCluster\")\n        .domainName(\"mycluster1\")\n        .samlEntityId(\"<IdpIdentityId>\")\n        .samlMetadataContent(\"<IdpMetadataXml>\")\n        .samlMasterBackendRole(\"<IAMIdentityCenterAdminGroupId>\")\n        .deployInVpc(true)\n        .removalPolicy(RemovalPolicy.DESTROY)\n        .build();\n\nosCluster.addRoleMapping(\"DashBoardUser\", \"dashboards_user\", \"<IAMIdentityCenterDashboardUsersGroupId>\");\nosCluster.addRoleMapping(\"ReadAllRole\", \"readall\", \"<IAMIdentityCenterDashboardUsersGroupId>\");","version":"1"},"go":{"source":"osCluster := consumption.NewOpenSearchCluster(this, jsii.String(\"MyOpenSearchCluster\"), &OpenSearchClusterProps{\n\tDomainName: jsii.String(\"mycluster1\"),\n\tSamlEntityId: jsii.String(\"<IdpIdentityId>\"),\n\tSamlMetadataContent: jsii.String(\"<IdpMetadataXml>\"),\n\tSamlMasterBackendRole: jsii.String(\"<IAMIdentityCenterAdminGroupId>\"),\n\tDeployInVpc: jsii.Boolean(true),\n\tRemovalPolicy: cdk.RemovalPolicy_DESTROY,\n})\n\nosCluster.AddRoleMapping(jsii.String(\"DashBoardUser\"), jsii.String(\"dashboards_user\"), jsii.String(\"<IAMIdentityCenterDashboardUsersGroupId>\"))\nosCluster.AddRoleMapping(jsii.String(\"ReadAllRole\"), jsii.String(\"readall\"), jsii.String(\"<IAMIdentityCenterDashboardUsersGroupId>\"))","version":"1"},"$":{"source":" const osCluster = new dsf.consumption.OpenSearchCluster(this, 'MyOpenSearchCluster',{\n   domainName:\"mycluster1\",\n   samlEntityId:'<IdpIdentityId>',\n   samlMetadataContent:'<IdpMetadataXml>',\n   samlMasterBackendRole:'<IAMIdentityCenterAdminGroupId>',\n   deployInVpc:true,\n   removalPolicy:cdk.RemovalPolicy.DESTROY\n });\n\n osCluster.addRoleMapping('DashBoardUser', 'dashboards_user','<IAMIdentityCenterDashboardUsersGroupId>');\n osCluster.addRoleMapping('ReadAllRole', 'readall','<IAMIdentityCenterDashboardUsersGroupId>');","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.consumption.OpenSearchCluster"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchCluster","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchCluster#addRoleMapping","@cdklabs/aws-data-solutions-framework.consumption.OpenSearchClusterProps","aws-cdk-lib.RemovalPolicy","aws-cdk-lib.RemovalPolicy#DESTROY","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\n const osCluster = new dsf.consumption.OpenSearchCluster(this, 'MyOpenSearchCluster',{\n   domainName:\"mycluster1\",\n   samlEntityId:'<IdpIdentityId>',\n   samlMetadataContent:'<IdpMetadataXml>',\n   samlMasterBackendRole:'<IAMIdentityCenterAdminGroupId>',\n   deployInVpc:true,\n   removalPolicy:cdk.RemovalPolicy.DESTROY\n });\n\n osCluster.addRoleMapping('DashBoardUser', 'dashboards_user','<IAMIdentityCenterDashboardUsersGroupId>');\n osCluster.addRoleMapping('ReadAllRole', 'readall','<IAMIdentityCenterDashboardUsersGroupId>');\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":11,"80":17,"110":1,"112":1,"210":1,"211":6,"213":2,"214":1,"243":1,"244":2,"260":1,"261":1,"303":6},"fqnsFingerprint":"5a024efcfa06372d13a42bdb91fe1721cac2e1f48e5c13c65a0679e5c6f5b154"},"61b6b3750180be4c91411213e46d5c7c5cd4dd3006d7e016766ac4bfae6ea7ee":{"translations":{"python":{"source":"namespace = dsf.consumption.RedshiftServerlessNamespace(self, \"RedshiftNamespace\",\n    name=\"default\",\n    db_name=\"defaultdb\"\n)\n\nworkgroup = dsf.consumption.RedshiftServerlessWorkgroup(self, \"RedshiftWorkgroup\",\n    name=\"redshift-workgroup\",\n    namespace=namespace\n)\n\nrs_data = workgroup.access_data(\"DataApi\")\nrs_data.create_db_role(\"EngineeringRole\", \"defaultdb\", \"engineering\")","version":"2"},"csharp":{"source":"var namespace = new Consumption.RedshiftServerlessNamespace(this, \"RedshiftNamespace\", new RedshiftServerlessNamespaceProps {\n    Name = \"default\",\n    DbName = \"defaultdb\"\n});\n\nvar workgroup = new Consumption.RedshiftServerlessWorkgroup(this, \"RedshiftWorkgroup\", new RedshiftServerlessWorkgroupProps {\n    Name = \"redshift-workgroup\",\n    Namespace = namespace\n});\n\nvar rsData = workgroup.AccessData(\"DataApi\");\nrsData.CreateDbRole(\"EngineeringRole\", \"defaultdb\", \"engineering\");","version":"1"},"java":{"source":"RedshiftServerlessNamespace namespace = RedshiftServerlessNamespace.Builder.create(this, \"RedshiftNamespace\")\n        .name(\"default\")\n        .dbName(\"defaultdb\")\n        .build();\n\nRedshiftServerlessWorkgroup workgroup = RedshiftServerlessWorkgroup.Builder.create(this, \"RedshiftWorkgroup\")\n        .name(\"redshift-workgroup\")\n        .namespace(namespace)\n        .build();\n\nRedshiftData rsData = workgroup.accessData(\"DataApi\");\nrsData.createDbRole(\"EngineeringRole\", \"defaultdb\", \"engineering\");","version":"1"},"go":{"source":"namespace := consumption.NewRedshiftServerlessNamespace(this, jsii.String(\"RedshiftNamespace\"), &RedshiftServerlessNamespaceProps{\n\tName: jsii.String(\"default\"),\n\tDbName: jsii.String(\"defaultdb\"),\n})\n\nworkgroup := consumption.NewRedshiftServerlessWorkgroup(this, jsii.String(\"RedshiftWorkgroup\"), &RedshiftServerlessWorkgroupProps{\n\tName: jsii.String(\"redshift-workgroup\"),\n\tNamespace: namespace,\n})\n\nrsData := workgroup.AccessData(jsii.String(\"DataApi\"))\nrsData.CreateDbRole(jsii.String(\"EngineeringRole\"), jsii.String(\"defaultdb\"), jsii.String(\"engineering\"))","version":"1"},"$":{"source":"const namespace = new dsf.consumption.RedshiftServerlessNamespace(this, 'RedshiftNamespace', {\n   name: \"default\",\n   dbName: 'defaultdb',\n});\n\nconst workgroup = new dsf.consumption.RedshiftServerlessWorkgroup(this, \"RedshiftWorkgroup\", {\n   name: \"redshift-workgroup\",\n   namespace: namespace,\n});\n\nconst rsData = workgroup.accessData('DataApi');\nrsData.createDbRole(\"EngineeringRole\", \"defaultdb\", \"engineering\");","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.consumption.RedshiftData"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption","@cdklabs/aws-data-solutions-framework.consumption.RedshiftData","@cdklabs/aws-data-solutions-framework.consumption.RedshiftData#createDbRole","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessNamespace","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessNamespaceProps","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroup","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroup#accessData","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroupProps","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\nconst namespace = new dsf.consumption.RedshiftServerlessNamespace(this, 'RedshiftNamespace', {\n   name: \"default\",\n   dbName: 'defaultdb',\n});\n\nconst workgroup = new dsf.consumption.RedshiftServerlessWorkgroup(this, \"RedshiftWorkgroup\", {\n   name: \"redshift-workgroup\",\n   namespace: namespace,\n});\n\nconst rsData = workgroup.accessData('DataApi');\nrsData.createDbRole(\"EngineeringRole\", \"defaultdb\", \"engineering\");\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":9,"80":18,"110":2,"210":2,"211":6,"213":2,"214":2,"243":3,"244":1,"260":3,"261":3,"303":4},"fqnsFingerprint":"11f0d1420c395debfc3bf0060926f009995f1bc2a63b3466e18e09fe66b16fce"},"d2c30ab40b60a292771ed8eee591a585d7afdeea30c34b246b535527389fca2e":{"translations":{"python":{"source":"redshift_admin_secret = Secret.from_secret_partial_arn(self, \"RedshiftAdminCredentials\", \"arn:aws:secretsmanager:us-east-1:XXXXXXXX:secret:YYYYYYYY\")\n\nredshift_vpc = Vpc.from_lookup(self, \"RedshiftVpc\",\n    vpc_id=\"XXXXXXXX\"\n)\n\ndata_access = dsf.consumption.RedshiftData(self, \"RedshiftDataAccess\",\n    workgroup_id=\"XXXXXXXXXXXXXXX\",\n    secret=redshift_admin_secret,\n    vpc=redshift_vpc,\n    subnets=redshift_vpc.select_subnets(\n        subnet_group_name=\"YYYYYYYY\"\n    ),\n    create_interface_vpc_endpoint=True,\n    execution_timeout=Duration.minutes(10)\n)\n\ndata_share = dsf.consumption.RedshiftDataSharing(self, \"RedshiftDataShare\",\n    redshift_data=data_access,\n    workgroup_id=\"XXXXXXXXXXXXXXX\",\n    secret=redshift_admin_secret,\n    vpc=redshift_vpc,\n    subnets=redshift_vpc.select_subnets(\n        subnet_group_name=\"YYYYYYYY\"\n    ),\n    create_interface_vpc_endpoint=True,\n    execution_timeout=Duration.minutes(10)\n)\n\nshare = data_share.create_share(\"ProducerShare\", \"default\", \"example_share\", \"public\", [\"public.customers\"])\n\ngrant_to_consumer = data_share.grant(\"GrantToConsumer\",\n    data_share_name=\"example_share\",\n    database_name=\"default\",\n    auto_authorized=True,\n    account_id=\"<CONSUMER_ACCOUNT_ID>\",\n    data_share_arn=\"<DATASHARE_ARN>\"\n)\n\ndata_share.create_database_from_share(\"ProducerShare\",\n    consumer_namespace_arn=\"\",\n    new_database_name=\"db_from_share\",\n    database_name=\"default\",\n    data_share_name=\"example_share\",\n    data_share_arn=\"<DATASHARE_ARN>\",\n    account_id=\"<PRODUCER_ACCOUNT_ID>\"\n)","version":"2"},"csharp":{"source":"var redshiftAdminSecret = Secret.FromSecretPartialArn(this, \"RedshiftAdminCredentials\", \"arn:aws:secretsmanager:us-east-1:XXXXXXXX:secret:YYYYYYYY\");\n\nvar redshiftVpc = Vpc.FromLookup(this, \"RedshiftVpc\", new VpcLookupOptions {\n    VpcId = \"XXXXXXXX\"\n});\n\nvar dataAccess = new Consumption.RedshiftData(this, \"RedshiftDataAccess\", new RedshiftDataProps {\n    WorkgroupId = \"XXXXXXXXXXXXXXX\",\n    Secret = redshiftAdminSecret,\n    Vpc = redshiftVpc,\n    Subnets = redshiftVpc.SelectSubnets(new SubnetSelection {\n        SubnetGroupName = \"YYYYYYYY\"\n    }),\n    CreateInterfaceVpcEndpoint = true,\n    ExecutionTimeout = Duration.Minutes(10)\n});\n\nvar dataShare = new Consumption.RedshiftDataSharing(this, \"RedshiftDataShare\", new RedshiftDataSharingProps {\n    RedshiftData = dataAccess,\n    WorkgroupId = \"XXXXXXXXXXXXXXX\",\n    Secret = redshiftAdminSecret,\n    Vpc = redshiftVpc,\n    Subnets = redshiftVpc.SelectSubnets(new SubnetSelection {\n        SubnetGroupName = \"YYYYYYYY\"\n    }),\n    CreateInterfaceVpcEndpoint = true,\n    ExecutionTimeout = Duration.Minutes(10)\n});\n\nvar share = dataShare.CreateShare(\"ProducerShare\", \"default\", \"example_share\", \"public\", new [] { \"public.customers\" });\n\nvar grantToConsumer = dataShare.Grant(\"GrantToConsumer\", new RedshiftDataSharingGrantProps {\n    DataShareName = \"example_share\",\n    DatabaseName = \"default\",\n    AutoAuthorized = true,\n    AccountId = \"<CONSUMER_ACCOUNT_ID>\",\n    DataShareArn = \"<DATASHARE_ARN>\"\n});\n\ndataShare.CreateDatabaseFromShare(\"ProducerShare\", new RedshiftDataSharingCreateDbProps {\n    ConsumerNamespaceArn = \"\",\n    NewDatabaseName = \"db_from_share\",\n    DatabaseName = \"default\",\n    DataShareName = \"example_share\",\n    DataShareArn = \"<DATASHARE_ARN>\",\n    AccountId = \"<PRODUCER_ACCOUNT_ID>\"\n});","version":"1"},"java":{"source":"ISecret redshiftAdminSecret = Secret.fromSecretPartialArn(this, \"RedshiftAdminCredentials\", \"arn:aws:secretsmanager:us-east-1:XXXXXXXX:secret:YYYYYYYY\");\n\nIVpc redshiftVpc = Vpc.fromLookup(this, \"RedshiftVpc\", VpcLookupOptions.builder()\n        .vpcId(\"XXXXXXXX\")\n        .build());\n\nRedshiftData dataAccess = RedshiftData.Builder.create(this, \"RedshiftDataAccess\")\n        .workgroupId(\"XXXXXXXXXXXXXXX\")\n        .secret(redshiftAdminSecret)\n        .vpc(redshiftVpc)\n        .subnets(redshiftVpc.selectSubnets(SubnetSelection.builder()\n                .subnetGroupName(\"YYYYYYYY\")\n                .build()))\n        .createInterfaceVpcEndpoint(true)\n        .executionTimeout(Duration.minutes(10))\n        .build();\n\nRedshiftDataSharing dataShare = RedshiftDataSharing.Builder.create(this, \"RedshiftDataShare\")\n        .redshiftData(dataAccess)\n        .workgroupId(\"XXXXXXXXXXXXXXX\")\n        .secret(redshiftAdminSecret)\n        .vpc(redshiftVpc)\n        .subnets(redshiftVpc.selectSubnets(SubnetSelection.builder()\n                .subnetGroupName(\"YYYYYYYY\")\n                .build()))\n        .createInterfaceVpcEndpoint(true)\n        .executionTimeout(Duration.minutes(10))\n        .build();\n\nRedshiftNewShareProps share = dataShare.createShare(\"ProducerShare\", \"default\", \"example_share\", \"public\", List.of(\"public.customers\"));\n\nRedshiftDataSharingGrantedProps grantToConsumer = dataShare.grant(\"GrantToConsumer\", RedshiftDataSharingGrantProps.builder()\n        .dataShareName(\"example_share\")\n        .databaseName(\"default\")\n        .autoAuthorized(true)\n        .accountId(\"<CONSUMER_ACCOUNT_ID>\")\n        .dataShareArn(\"<DATASHARE_ARN>\")\n        .build());\n\ndataShare.createDatabaseFromShare(\"ProducerShare\", RedshiftDataSharingCreateDbProps.builder()\n        .consumerNamespaceArn(\"\")\n        .newDatabaseName(\"db_from_share\")\n        .databaseName(\"default\")\n        .dataShareName(\"example_share\")\n        .dataShareArn(\"<DATASHARE_ARN>\")\n        .accountId(\"<PRODUCER_ACCOUNT_ID>\")\n        .build());","version":"1"},"go":{"source":"redshiftAdminSecret := awscdk.Secret_FromSecretPartialArn(this, jsii.String(\"RedshiftAdminCredentials\"), jsii.String(\"arn:aws:secretsmanager:us-east-1:XXXXXXXX:secret:YYYYYYYY\"))\n\nredshiftVpc := awscdk.Vpc_FromLookup(this, jsii.String(\"RedshiftVpc\"), &VpcLookupOptions{\n\tVpcId: jsii.String(\"XXXXXXXX\"),\n})\n\ndataAccess := consumption.NewRedshiftData(this, jsii.String(\"RedshiftDataAccess\"), &RedshiftDataProps{\n\tWorkgroupId: jsii.String(\"XXXXXXXXXXXXXXX\"),\n\tSecret: redshiftAdminSecret,\n\tVpc: redshiftVpc,\n\tSubnets: redshiftVpc.SelectSubnets(&SubnetSelection{\n\t\tSubnetGroupName: jsii.String(\"YYYYYYYY\"),\n\t}),\n\tCreateInterfaceVpcEndpoint: jsii.Boolean(true),\n\tExecutionTimeout: awscdk.Duration_Minutes(jsii.Number(10)),\n})\n\ndataShare := consumption.NewRedshiftDataSharing(this, jsii.String(\"RedshiftDataShare\"), &RedshiftDataSharingProps{\n\tRedshiftData: dataAccess,\n\tWorkgroupId: jsii.String(\"XXXXXXXXXXXXXXX\"),\n\tSecret: redshiftAdminSecret,\n\tVpc: redshiftVpc,\n\tSubnets: redshiftVpc.*SelectSubnets(&SubnetSelection{\n\t\tSubnetGroupName: jsii.String(\"YYYYYYYY\"),\n\t}),\n\tCreateInterfaceVpcEndpoint: jsii.Boolean(true),\n\tExecutionTimeout: awscdk.Duration_*Minutes(jsii.Number(10)),\n})\n\nshare := dataShare.CreateShare(jsii.String(\"ProducerShare\"), jsii.String(\"default\"), jsii.String(\"example_share\"), jsii.String(\"public\"), []*string{\n\tjsii.String(\"public.customers\"),\n})\n\ngrantToConsumer := dataShare.Grant(jsii.String(\"GrantToConsumer\"), &RedshiftDataSharingGrantProps{\n\tDataShareName: jsii.String(\"example_share\"),\n\tDatabaseName: jsii.String(\"default\"),\n\tAutoAuthorized: jsii.Boolean(true),\n\tAccountId: jsii.String(\"<CONSUMER_ACCOUNT_ID>\"),\n\tDataShareArn: jsii.String(\"<DATASHARE_ARN>\"),\n})\n\ndataShare.CreateDatabaseFromShare(jsii.String(\"ProducerShare\"), &RedshiftDataSharingCreateDbProps{\n\tConsumerNamespaceArn: jsii.String(\"\"),\n\tNewDatabaseName: jsii.String(\"db_from_share\"),\n\tDatabaseName: jsii.String(\"default\"),\n\tDataShareName: jsii.String(\"example_share\"),\n\tDataShareArn: jsii.String(\"<DATASHARE_ARN>\"),\n\tAccountId: jsii.String(\"<PRODUCER_ACCOUNT_ID>\"),\n})","version":"1"},"$":{"source":"const redshiftAdminSecret = Secret.fromSecretPartialArn(this, 'RedshiftAdminCredentials', 'arn:aws:secretsmanager:us-east-1:XXXXXXXX:secret:YYYYYYYY');\n\nconst redshiftVpc = Vpc.fromLookup(this, 'RedshiftVpc', {\n  vpcId: 'XXXXXXXX',\n});\n\nconst dataAccess = new dsf.consumption.RedshiftData(this, 'RedshiftDataAccess', {\n  workgroupId: 'XXXXXXXXXXXXXXX',\n  secret: redshiftAdminSecret,\n  vpc: redshiftVpc,\n  subnets: redshiftVpc.selectSubnets({\n    subnetGroupName: 'YYYYYYYY'\n  }),\n  createInterfaceVpcEndpoint: true,\n  executionTimeout: Duration.minutes(10),\n});\n\nconst dataShare = new dsf.consumption.RedshiftDataSharing(this, 'RedshiftDataShare', {\n  redshiftData: dataAccess,\n  workgroupId: 'XXXXXXXXXXXXXXX',\n  secret: redshiftAdminSecret,\n  vpc: redshiftVpc,\n  subnets: redshiftVpc.selectSubnets({\n    subnetGroupName: 'YYYYYYYY'\n  }),\n  createInterfaceVpcEndpoint: true,\n  executionTimeout: Duration.minutes(10),\n});\n\n const share = dataShare.createShare('ProducerShare', 'default', 'example_share', 'public', ['public.customers']);\n\n const grantToConsumer = dataShare.grant('GrantToConsumer', {\n   dataShareName: 'example_share',\n   databaseName: 'default',\n   autoAuthorized: true,\n   accountId: \"<CONSUMER_ACCOUNT_ID>\",\n   dataShareArn: '<DATASHARE_ARN>',\n });\n\ndataShare.createDatabaseFromShare('ProducerShare', {\n  consumerNamespaceArn: '',\n  newDatabaseName: 'db_from_share',\n  databaseName: 'default',\n  dataShareName: 'example_share',\n  dataShareArn: '<DATASHARE_ARN>',\n  accountId: \"<PRODUCER_ACCOUNT_ID>\",\n});","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.consumption.RedshiftDataSharing"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption","@cdklabs/aws-data-solutions-framework.consumption.RedshiftData","@cdklabs/aws-data-solutions-framework.consumption.RedshiftDataProps","@cdklabs/aws-data-solutions-framework.consumption.RedshiftDataSharing","@cdklabs/aws-data-solutions-framework.consumption.RedshiftDataSharing#createDatabaseFromShare","@cdklabs/aws-data-solutions-framework.consumption.RedshiftDataSharing#createShare","@cdklabs/aws-data-solutions-framework.consumption.RedshiftDataSharing#grant","@cdklabs/aws-data-solutions-framework.consumption.RedshiftDataSharingCreateDbProps","@cdklabs/aws-data-solutions-framework.consumption.RedshiftDataSharingGrantProps","@cdklabs/aws-data-solutions-framework.consumption.RedshiftDataSharingGrantedProps","@cdklabs/aws-data-solutions-framework.consumption.RedshiftDataSharingProps","@cdklabs/aws-data-solutions-framework.consumption.RedshiftNewShareProps","aws-cdk-lib.Duration","aws-cdk-lib.Duration#minutes","aws-cdk-lib.aws_ec2.IVpc","aws-cdk-lib.aws_ec2.IVpc#selectSubnets","aws-cdk-lib.aws_ec2.SelectedSubnets","aws-cdk-lib.aws_ec2.SubnetSelection","aws-cdk-lib.aws_ec2.Vpc#fromLookup","aws-cdk-lib.aws_ec2.VpcLookupOptions","aws-cdk-lib.aws_secretsmanager.ISecret","aws-cdk-lib.aws_secretsmanager.Secret#fromSecretPartialArn","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport { Stack, Duration } from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\nimport { Vpc } from 'aws-cdk-lib/aws-ec2';\nimport { Secret } from 'aws-cdk-lib/aws-secretsmanager';\n\nclass MyStack extends Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\nconst redshiftAdminSecret = Secret.fromSecretPartialArn(this, 'RedshiftAdminCredentials', 'arn:aws:secretsmanager:us-east-1:XXXXXXXX:secret:YYYYYYYY');\n\nconst redshiftVpc = Vpc.fromLookup(this, 'RedshiftVpc', {\n  vpcId: 'XXXXXXXX',\n});\n\nconst dataAccess = new dsf.consumption.RedshiftData(this, 'RedshiftDataAccess', {\n  workgroupId: 'XXXXXXXXXXXXXXX',\n  secret: redshiftAdminSecret,\n  vpc: redshiftVpc,\n  subnets: redshiftVpc.selectSubnets({\n    subnetGroupName: 'YYYYYYYY'\n  }),\n  createInterfaceVpcEndpoint: true,\n  executionTimeout: Duration.minutes(10),\n});\n\nconst dataShare = new dsf.consumption.RedshiftDataSharing(this, 'RedshiftDataShare', {\n  redshiftData: dataAccess,\n  workgroupId: 'XXXXXXXXXXXXXXX',\n  secret: redshiftAdminSecret,\n  vpc: redshiftVpc,\n  subnets: redshiftVpc.selectSubnets({\n    subnetGroupName: 'YYYYYYYY'\n  }),\n  createInterfaceVpcEndpoint: true,\n  executionTimeout: Duration.minutes(10),\n});\n\n const share = dataShare.createShare('ProducerShare', 'default', 'example_share', 'public', ['public.customers']);\n\n const grantToConsumer = dataShare.grant('GrantToConsumer', {\n   dataShareName: 'example_share',\n   databaseName: 'default',\n   autoAuthorized: true,\n   accountId: \"<CONSUMER_ACCOUNT_ID>\",\n   dataShareArn: '<DATASHARE_ARN>',\n });\n\ndataShare.createDatabaseFromShare('ProducerShare', {\n  consumerNamespaceArn: '',\n  newDatabaseName: 'db_from_share',\n  databaseName: 'default',\n  dataShareName: 'example_share',\n  dataShareArn: '<DATASHARE_ARN>',\n  accountId: \"<PRODUCER_ACCOUNT_ID>\",\n});\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"9":2,"11":27,"80":62,"110":4,"112":3,"209":1,"210":7,"211":13,"213":9,"214":2,"243":6,"244":1,"260":6,"261":6,"303":27},"fqnsFingerprint":"505faf74b1845f16694fdcf5522fb785b192e0523a8e366fbf0caf1996446012"},"860062e6e4abf6677444d2c8101b122fe650bbbfb2cd39682d4026303e531609":{"translations":{"python":{"source":"namespace = dsf.consumption.RedshiftServerlessNamespace(self, \"DefaultServerlessNamespace\",\n    db_name=\"defaultdb\",\n    name=\"default\"\n)","version":"2"},"csharp":{"source":"var namespace = new Consumption.RedshiftServerlessNamespace(this, \"DefaultServerlessNamespace\", new RedshiftServerlessNamespaceProps {\n    DbName = \"defaultdb\",\n    Name = \"default\"\n});","version":"1"},"java":{"source":"RedshiftServerlessNamespace namespace = RedshiftServerlessNamespace.Builder.create(this, \"DefaultServerlessNamespace\")\n        .dbName(\"defaultdb\")\n        .name(\"default\")\n        .build();","version":"1"},"go":{"source":"namespace := consumption.NewRedshiftServerlessNamespace(this, jsii.String(\"DefaultServerlessNamespace\"), &RedshiftServerlessNamespaceProps{\n\tDbName: jsii.String(\"defaultdb\"),\n\tName: jsii.String(\"default\"),\n})","version":"1"},"$":{"source":"const namespace = new dsf.consumption.RedshiftServerlessNamespace(this, 'DefaultServerlessNamespace', {\n   dbName: 'defaultdb',\n   name: 'default'\n});","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessNamespace"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessNamespace","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessNamespaceProps","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\nconst namespace = new dsf.consumption.RedshiftServerlessNamespace(this, 'DefaultServerlessNamespace', {\n   dbName: 'defaultdb',\n   name: 'default'\n});\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":3,"80":6,"110":1,"210":1,"211":2,"214":1,"243":1,"260":1,"261":1,"303":2},"fqnsFingerprint":"f119a2f0471eb873ed4b70f70acff4a35d624f84797bb9403840206467db90e9"},"d2fc5ea97471732a7e21a07e6057f3230777ea30de9d990edde6543f1178b6d9":{"translations":{"python":{"source":"workgroup = dsf.consumption.RedshiftServerlessWorkgroup(self, \"RedshiftWorkgroup\",\n    name=\"example-workgroup\",\n    namespace=dsf.consumption.RedshiftServerlessNamespace(self, \"RedshiftNamespace\",\n        name=\"example-namespace\",\n        db_name=\"defaultdb\"\n    )\n)","version":"2"},"csharp":{"source":"var workgroup = new Consumption.RedshiftServerlessWorkgroup(this, \"RedshiftWorkgroup\", new RedshiftServerlessWorkgroupProps {\n    Name = \"example-workgroup\",\n    Namespace = new Consumption.RedshiftServerlessNamespace(this, \"RedshiftNamespace\", new RedshiftServerlessNamespaceProps {\n        Name = \"example-namespace\",\n        DbName = \"defaultdb\"\n    })\n});","version":"1"},"java":{"source":"RedshiftServerlessWorkgroup workgroup = RedshiftServerlessWorkgroup.Builder.create(this, \"RedshiftWorkgroup\")\n        .name(\"example-workgroup\")\n        .namespace(RedshiftServerlessNamespace.Builder.create(this, \"RedshiftNamespace\")\n                .name(\"example-namespace\")\n                .dbName(\"defaultdb\")\n                .build())\n        .build();","version":"1"},"go":{"source":"workgroup := consumption.NewRedshiftServerlessWorkgroup(this, jsii.String(\"RedshiftWorkgroup\"), &RedshiftServerlessWorkgroupProps{\n\tName: jsii.String(\"example-workgroup\"),\n\tNamespace: consumption.NewRedshiftServerlessNamespace(this, jsii.String(\"RedshiftNamespace\"), &RedshiftServerlessNamespaceProps{\n\t\tName: jsii.String(\"example-namespace\"),\n\t\tDbName: jsii.String(\"defaultdb\"),\n\t}),\n})","version":"1"},"$":{"source":"const workgroup = new dsf.consumption.RedshiftServerlessWorkgroup(this, \"RedshiftWorkgroup\", {\n   name: \"example-workgroup\",\n   namespace: new dsf.consumption.RedshiftServerlessNamespace(this, \"RedshiftNamespace\", {\n     name: 'example-namespace',\n     dbName: 'defaultdb',\n   })\n});","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroup"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.consumption","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessNamespace","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessNamespaceProps","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroup","@cdklabs/aws-data-solutions-framework.consumption.RedshiftServerlessWorkgroupProps","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\nconst workgroup = new dsf.consumption.RedshiftServerlessWorkgroup(this, \"RedshiftWorkgroup\", {\n   name: \"example-workgroup\",\n   namespace: new dsf.consumption.RedshiftServerlessNamespace(this, \"RedshiftNamespace\", {\n     name: 'example-namespace',\n     dbName: 'defaultdb',\n   })\n});\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":5,"80":11,"110":2,"210":2,"211":4,"214":2,"243":1,"260":1,"261":1,"303":4},"fqnsFingerprint":"633c01f918466d72e14b55cc3b29a111862ed629f45c091492e21808de062805"},"3b25d076e9c27fcf377fe7a749aa75bbe599171542e4abb534244a6a2cfd7e80":{"translations":{"python":{"source":"from aws_cdk.aws_s3 import Bucket\n\n\ndsf.governance.DataCatalogDatabase(self, \"ExampleDatabase\",\n    location_bucket=Bucket(scope, \"LocationBucket\"),\n    location_prefix=\"/databasePath\",\n    name=\"example-db\"\n)","version":"2"},"csharp":{"source":"using Amazon.CDK.AWS.S3;\n\n\nnew Governance.DataCatalogDatabase(this, \"ExampleDatabase\", new DataCatalogDatabaseProps {\n    LocationBucket = new Bucket(scope, \"LocationBucket\"),\n    LocationPrefix = \"/databasePath\",\n    Name = \"example-db\"\n});","version":"1"},"java":{"source":"import software.amazon.awscdk.services.s3.Bucket;\n\n\nDataCatalogDatabase.Builder.create(this, \"ExampleDatabase\")\n        .locationBucket(new Bucket(scope, \"LocationBucket\"))\n        .locationPrefix(\"/databasePath\")\n        .name(\"example-db\")\n        .build();","version":"1"},"go":{"source":"import \"github.com/aws/aws-cdk-go/awscdk\"\n\n\ngovernance.NewDataCatalogDatabase(this, jsii.String(\"ExampleDatabase\"), &DataCatalogDatabaseProps{\n\tLocationBucket: awscdk.NewBucket(scope, jsii.String(\"LocationBucket\")),\n\tLocationPrefix: jsii.String(\"/databasePath\"),\n\tName: jsii.String(\"example-db\"),\n})","version":"1"},"$":{"source":"import { Bucket } from 'aws-cdk-lib/aws-s3';\n\nnew dsf.governance.DataCatalogDatabase(this, 'ExampleDatabase', {\n   locationBucket: new Bucket(scope, 'LocationBucket'),\n   locationPrefix: '/databasePath',\n   name: 'example-db'\n});","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.governance.DataCatalogDatabase"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataCatalogDatabase","@cdklabs/aws-data-solutions-framework.governance.DataCatalogDatabaseProps","aws-cdk-lib.aws_s3.Bucket","aws-cdk-lib.aws_s3.IBucket","constructs.Construct"],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\nimport { Bucket } from 'aws-cdk-lib/aws-s3';\n/// !hide\n// Hoisted imports ended before !hide marker above\nimport { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\n\n\nnew dsf.governance.DataCatalogDatabase(this, 'ExampleDatabase', {\n   locationBucket: new Bucket(scope, 'LocationBucket'),\n   locationPrefix: '/databasePath',\n   name: 'example-db'\n});\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":5,"80":9,"110":1,"210":1,"211":2,"214":2,"244":1,"272":1,"273":1,"275":1,"276":1,"303":3,"307":1},"fqnsFingerprint":"682553bff76bb17e47d7a46d77808c6420bf0efebb6db6869bbcd1de81fdad30"},"424ea0ba3f750d998aa88d7d59c035af08bd0503ac1cd31036d5d263a68ac063":{"translations":{"python":{"source":"from aws_cdk.aws_kms import Key\n\n\nlog_encryption_key = Key(self, \"ExampleLogKey\")\nstorage = dsf.storage.DataLakeStorage(self, \"ExampleStorage\")\ndata_lake_catalog = dsf.governance.DataLakeCatalog(self, \"ExampleDataLakeCatalog\",\n    data_lake_storage=storage,\n    database_name=\"exampledb\",\n    crawler_log_encryption_key=log_encryption_key\n)","version":"2"},"csharp":{"source":"using Amazon.CDK.AWS.KMS;\n\n\nvar logEncryptionKey = new Key(this, \"ExampleLogKey\");\nvar storage = new Storage.DataLakeStorage(this, \"ExampleStorage\");\nvar dataLakeCatalog = new Governance.DataLakeCatalog(this, \"ExampleDataLakeCatalog\", new DataLakeCatalogProps {\n    DataLakeStorage = storage,\n    DatabaseName = \"exampledb\",\n    CrawlerLogEncryptionKey = logEncryptionKey\n});","version":"1"},"java":{"source":"import software.amazon.awscdk.services.kms.Key;\n\n\nKey logEncryptionKey = new Key(this, \"ExampleLogKey\");\nDataLakeStorage storage = new DataLakeStorage(this, \"ExampleStorage\");\nDataLakeCatalog dataLakeCatalog = DataLakeCatalog.Builder.create(this, \"ExampleDataLakeCatalog\")\n        .dataLakeStorage(storage)\n        .databaseName(\"exampledb\")\n        .crawlerLogEncryptionKey(logEncryptionKey)\n        .build();","version":"1"},"go":{"source":"import \"github.com/aws/aws-cdk-go/awscdk\"\n\n\nlogEncryptionKey := awscdk.NewKey(this, jsii.String(\"ExampleLogKey\"))\nstorage := storage.NewDataLakeStorage(this, jsii.String(\"ExampleStorage\"))\ndataLakeCatalog := governance.NewDataLakeCatalog(this, jsii.String(\"ExampleDataLakeCatalog\"), &DataLakeCatalogProps{\n\tDataLakeStorage: storage,\n\tDatabaseName: jsii.String(\"exampledb\"),\n\tCrawlerLogEncryptionKey: logEncryptionKey,\n})","version":"1"},"$":{"source":"import { Key } from 'aws-cdk-lib/aws-kms';\n\nconst logEncryptionKey = new Key(this, 'ExampleLogKey');\nconst storage = new dsf.storage.DataLakeStorage(this, \"ExampleStorage\");\nconst dataLakeCatalog = new dsf.governance.DataLakeCatalog(this, \"ExampleDataLakeCatalog\", {\n  dataLakeStorage: storage,\n  databaseName: \"exampledb\",\n  crawlerLogEncryptionKey: logEncryptionKey\n})","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.governance.DataLakeCatalog"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataLakeCatalog","@cdklabs/aws-data-solutions-framework.governance.DataLakeCatalogProps","@cdklabs/aws-data-solutions-framework.storage","@cdklabs/aws-data-solutions-framework.storage.DataLakeStorage","aws-cdk-lib.aws_kms.IKey","aws-cdk-lib.aws_kms.Key","constructs.Construct"],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\nimport { Key } from 'aws-cdk-lib/aws-kms';\n/// !hide\n// Hoisted imports ended before !hide marker above\nimport { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\n\n\nconst logEncryptionKey = new Key(this, 'ExampleLogKey');\nconst storage = new dsf.storage.DataLakeStorage(this, \"ExampleStorage\");\nconst dataLakeCatalog = new dsf.governance.DataLakeCatalog(this, \"ExampleDataLakeCatalog\", {\n  dataLakeStorage: storage,\n  databaseName: \"exampledb\",\n  crawlerLogEncryptionKey: logEncryptionKey\n})\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":5,"80":16,"110":3,"210":1,"211":4,"214":3,"243":3,"260":3,"261":3,"272":1,"273":1,"275":1,"276":1,"303":3,"307":1},"fqnsFingerprint":"3a9ad1e2821dda2685970a7ee7a879e1468d625a84665bc1eae44df55fd5e398"},"0df9ed0f95fd56f8759100d60cb551a11a4ddd1e857aa566446fdf2609ee15be":{"translations":{"python":{"source":"dsf.governance.DataZoneCustomAssetTypeFactory(self, \"CustomAssetTypeFactory\",\n    domain_id=\"aba_dc999t9ime9sss\"\n)","version":"2"},"csharp":{"source":"new Governance.DataZoneCustomAssetTypeFactory(this, \"CustomAssetTypeFactory\", new DataZoneCustomAssetTypeFactoryProps {\n    DomainId = \"aba_dc999t9ime9sss\"\n});","version":"1"},"java":{"source":"DataZoneCustomAssetTypeFactory.Builder.create(this, \"CustomAssetTypeFactory\")\n        .domainId(\"aba_dc999t9ime9sss\")\n        .build();","version":"1"},"go":{"source":"governance.NewDataZoneCustomAssetTypeFactory(this, jsii.String(\"CustomAssetTypeFactory\"), &DataZoneCustomAssetTypeFactoryProps{\n\tDomainId: jsii.String(\"aba_dc999t9ime9sss\"),\n})","version":"1"},"$":{"source":"new dsf.governance.DataZoneCustomAssetTypeFactory(this, 'CustomAssetTypeFactory', {\n domainId: 'aba_dc999t9ime9sss',\n});","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.governance.DataZoneCustomAssetTypeFactory"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataZoneCustomAssetTypeFactory","@cdklabs/aws-data-solutions-framework.governance.DataZoneCustomAssetTypeFactoryProps","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\nnew dsf.governance.DataZoneCustomAssetTypeFactory(this, 'CustomAssetTypeFactory', {\n domainId: 'aba_dc999t9ime9sss',\n});\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":2,"80":4,"110":1,"210":1,"211":2,"214":1,"244":1,"303":1},"fqnsFingerprint":"a296c0a4621023ed4a3f74899cbdb59dcbce8ee389b7a6ddf2a0b6c410c58dd8"},"b5d85564bcc4787aa475067a58822e24b96c277bd7a39e06c7be959a6ad6fbaa":{"translations":{"python":{"source":"[{\"name\": \"userForm\", \"model\": [{\"name\": \"firstName\", \"type\": \"String\", \"required\": True}]}]","version":"2"},"csharp":{"source":"new [] { new Struct { Name = \"userForm\", Model = new [] { new Struct { Name = \"firstName\", Type = \"String\", Required = true } } } };","version":"1"},"java":{"source":"List.of(Map.of(\"name\", \"userForm\", \"model\", List.of(Map.of(\"name\", \"firstName\", \"type\", \"String\", \"required\", true))));","version":"1"},"go":{"source":"[]map[string]interface{}{\n\tmap[string]interface{}{\n\t\t\"name\": jsii.String(\"userForm\"),\n\t\t\"model\": []map[string]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"name\": jsii.String(\"firstName\"),\n\t\t\t\t\"type\": jsii.String(\"String\"),\n\t\t\t\t\"required\": jsii.Boolean(true),\n\t\t\t},\n\t\t},\n\t},\n}","version":"1"},"$":{"source":"[{ name: 'userForm', model: [{ name: 'firstName', type: 'String', required: true }] }]","version":"0"}},"location":{"api":{"api":"member","fqn":"@cdklabs/aws-data-solutions-framework.governance.DataZoneCustomAssetTypeProps","memberName":"formTypes"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":[],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\n[{ name: 'userForm', model: [{ name: 'firstName', type: 'String', required: true }] }]\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":3,"80":5,"112":1,"209":2,"210":2,"244":1,"303":5},"fqnsFingerprint":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"aa24a376e52b5bc3330b9d9e3862f95b2b44c7651772ea809ce241733c24fb57":{"translations":{"python":{"source":"[{\"name\": \"firstName\", \"type\": \"String\", \"required\": True}]","version":"2"},"csharp":{"source":"new [] { new Struct { Name = \"firstName\", Type = \"String\", Required = true } };","version":"1"},"java":{"source":"List.of(Map.of(\"name\", \"firstName\", \"type\", \"String\", \"required\", true));","version":"1"},"go":{"source":"[]map[string]interface{}{\n\tmap[string]interface{}{\n\t\t\"name\": jsii.String(\"firstName\"),\n\t\t\"type\": jsii.String(\"String\"),\n\t\t\"required\": jsii.Boolean(true),\n\t},\n}","version":"1"},"$":{"source":"[{ name: 'firstName', type: 'String', required: true }]","version":"0"}},"location":{"api":{"api":"member","fqn":"@cdklabs/aws-data-solutions-framework.governance.DataZoneFormType","memberName":"model"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":[],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\n[{ name: 'firstName', type: 'String', required: true }]\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":2,"80":3,"112":1,"209":1,"210":1,"244":1,"303":3},"fqnsFingerprint":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"797fa311619e054aee0f299ee407ddb50319ee9eecbcfadd58b725c964be5087":{"translations":{"python":{"source":"from aws_cdk.aws_events import Schedule\n\n\ndsf.governance.DataZoneGsrMskDataSource(self, \"MskDatasource\",\n    domain_id=\"aba_dc999t9ime9sss\",\n    project_id=\"999999b3m5cpz\",\n    registry_name=\"MyRegistry\",\n    cluster_name=\"MyCluster\",\n    run_schedule=Schedule.cron(minute=\"0\", hour=\"12\"),  # Trigger daily at noon\n    enable_schema_registry_event=True\n)","version":"2"},"csharp":{"source":"using Amazon.CDK.AWS.Events;\n\n\nnew Governance.DataZoneGsrMskDataSource(this, \"MskDatasource\", new DataZoneGsrMskDataSourceProps {\n    DomainId = \"aba_dc999t9ime9sss\",\n    ProjectId = \"999999b3m5cpz\",\n    RegistryName = \"MyRegistry\",\n    ClusterName = \"MyCluster\",\n    RunSchedule = Schedule.Cron(new CronOptions { Minute = \"0\", Hour = \"12\" }),  // Trigger daily at noon\n    EnableSchemaRegistryEvent = true\n});","version":"1"},"java":{"source":"import software.amazon.awscdk.services.events.Schedule;\n\n\nDataZoneGsrMskDataSource.Builder.create(this, \"MskDatasource\")\n        .domainId(\"aba_dc999t9ime9sss\")\n        .projectId(\"999999b3m5cpz\")\n        .registryName(\"MyRegistry\")\n        .clusterName(\"MyCluster\")\n        .runSchedule(Schedule.cron(CronOptions.builder().minute(\"0\").hour(\"12\").build())) // Trigger daily at noon\n        .enableSchemaRegistryEvent(true)\n        .build();","version":"1"},"go":{"source":"import \"github.com/aws/aws-cdk-go/awscdk\"\n\n\ngovernance.NewDataZoneGsrMskDataSource(this, jsii.String(\"MskDatasource\"), &DataZoneGsrMskDataSourceProps{\n\tDomainId: jsii.String(\"aba_dc999t9ime9sss\"),\n\tProjectId: jsii.String(\"999999b3m5cpz\"),\n\tRegistryName: jsii.String(\"MyRegistry\"),\n\tClusterName: jsii.String(\"MyCluster\"),\n\tRunSchedule: awscdk.Schedule_Cron(&CronOptions{\n\t\tMinute: jsii.String(\"0\"),\n\t\tHour: jsii.String(\"12\"),\n\t}),\n\t // Trigger daily at noon\n\tEnableSchemaRegistryEvent: jsii.Boolean(true),\n})","version":"1"},"$":{"source":"import { Schedule } from 'aws-cdk-lib/aws-events';\n\nnew dsf.governance.DataZoneGsrMskDataSource(this, 'MskDatasource', {\n  domainId: 'aba_dc999t9ime9sss',\n  projectId: '999999b3m5cpz',\n  registryName: 'MyRegistry',\n  clusterName: 'MyCluster',\n  runSchedule: Schedule.cron({ minute: '0', hour: '12' }), // Trigger daily at noon\n  enableSchemaRegistryEvent: true, // Enable events for Glue Schema Registry changes\n});","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.governance.DataZoneGsrMskDataSource"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataZoneGsrMskDataSource","@cdklabs/aws-data-solutions-framework.governance.DataZoneGsrMskDataSourceProps","aws-cdk-lib.aws_events.CronOptions","aws-cdk-lib.aws_events.Schedule","aws-cdk-lib.aws_events.Schedule#cron","constructs.Construct"],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\nimport { Schedule } from 'aws-cdk-lib/aws-events';\n/// !hide\n// Hoisted imports ended before !hide marker above\nimport { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\n\n\nnew dsf.governance.DataZoneGsrMskDataSource(this, 'MskDatasource', {\n  domainId: 'aba_dc999t9ime9sss',\n  projectId: '999999b3m5cpz',\n  registryName: 'MyRegistry',\n  clusterName: 'MyCluster',\n  runSchedule: Schedule.cron({ minute: '0', hour: '12' }), // Trigger daily at noon\n  enableSchemaRegistryEvent: true, // Enable events for Glue Schema Registry changes\n});\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":8,"80":14,"110":1,"112":1,"210":2,"211":3,"213":1,"214":1,"244":1,"272":1,"273":1,"275":1,"276":1,"303":8,"307":1},"fqnsFingerprint":"634297fe1d71a6b3d16c9f5691bdba8dee6b96ee491342bfd354a25995b755dd"},"68ebc61d1cb264a71e8dff0fe067b25a3cc1a67429bf8501984b60bb8ba1e7cf":{"translations":{"python":{"source":"dsf.governance.DataZoneMskAssetType(self, \"MskAssetType\",\n    domain_id=\"aba_dc999t9ime9sss\",\n    project_id=\"999999b3m5cpz\"\n)","version":"2"},"csharp":{"source":"new Governance.DataZoneMskAssetType(this, \"MskAssetType\", new DataZoneMskAssetTypeProps {\n    DomainId = \"aba_dc999t9ime9sss\",\n    ProjectId = \"999999b3m5cpz\"\n});","version":"1"},"java":{"source":"DataZoneMskAssetType.Builder.create(this, \"MskAssetType\")\n        .domainId(\"aba_dc999t9ime9sss\")\n        .projectId(\"999999b3m5cpz\")\n        .build();","version":"1"},"go":{"source":"governance.NewDataZoneMskAssetType(this, jsii.String(\"MskAssetType\"), &DataZoneMskAssetTypeProps{\n\tDomainId: jsii.String(\"aba_dc999t9ime9sss\"),\n\tProjectId: jsii.String(\"999999b3m5cpz\"),\n})","version":"1"},"$":{"source":"new dsf.governance.DataZoneMskAssetType(this, 'MskAssetType', {\n  domainId: 'aba_dc999t9ime9sss',\n  projectId: '999999b3m5cpz',\n});","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.governance.DataZoneMskAssetType"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskAssetType","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskAssetTypeProps","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\nnew dsf.governance.DataZoneMskAssetType(this, 'MskAssetType', {\n  domainId: 'aba_dc999t9ime9sss',\n  projectId: '999999b3m5cpz',\n});\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":3,"80":5,"110":1,"210":1,"211":2,"214":1,"244":1,"303":2},"fqnsFingerprint":"2ae10875cdad8033152be4e1acefc7a0e3dbae1b62b24f5fb70e1ed336a38d29"},"939ef047ff65dcee609eea28e11dd8439ff73a36f74badca0b752db87f54c331":{"translations":{"python":{"source":"dsf.governance.DataZoneMskCentralAuthorizer(self, \"MskAuthorizer\",\n    domain_id=\"aba_dc999t9ime9sss\"\n)","version":"2"},"csharp":{"source":"new Governance.DataZoneMskCentralAuthorizer(this, \"MskAuthorizer\", new DataZoneMskCentralAuthorizerProps {\n    DomainId = \"aba_dc999t9ime9sss\"\n});","version":"1"},"java":{"source":"DataZoneMskCentralAuthorizer.Builder.create(this, \"MskAuthorizer\")\n        .domainId(\"aba_dc999t9ime9sss\")\n        .build();","version":"1"},"go":{"source":"governance.NewDataZoneMskCentralAuthorizer(this, jsii.String(\"MskAuthorizer\"), &DataZoneMskCentralAuthorizerProps{\n\tDomainId: jsii.String(\"aba_dc999t9ime9sss\"),\n})","version":"1"},"$":{"source":"new dsf.governance.DataZoneMskCentralAuthorizer(this, 'MskAuthorizer', {\n  domainId: 'aba_dc999t9ime9sss',\n});","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.governance.DataZoneMskCentralAuthorizer"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskCentralAuthorizer","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskCentralAuthorizerProps","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\nnew dsf.governance.DataZoneMskCentralAuthorizer(this, 'MskAuthorizer', {\n  domainId: 'aba_dc999t9ime9sss',\n});\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":2,"80":4,"110":1,"210":1,"211":2,"214":1,"244":1,"303":1},"fqnsFingerprint":"f77188236e1dafa8a99a2ce65f05a220d98289907f7f9b3b0314dfbe8713180a"},"0f5e7884db56074ad8af28891006cb579f07716d99bbc28dc85e45d109baead0":{"translations":{"python":{"source":"dsf.governance.DataZoneMskEnvironmentAuthorizer(self, \"MskAuthorizer\",\n    domain_id=\"aba_dc999t9ime9sss\"\n)","version":"2"},"csharp":{"source":"new Governance.DataZoneMskEnvironmentAuthorizer(this, \"MskAuthorizer\", new DataZoneMskEnvironmentAuthorizerProps {\n    DomainId = \"aba_dc999t9ime9sss\"\n});","version":"1"},"java":{"source":"DataZoneMskEnvironmentAuthorizer.Builder.create(this, \"MskAuthorizer\")\n        .domainId(\"aba_dc999t9ime9sss\")\n        .build();","version":"1"},"go":{"source":"governance.NewDataZoneMskEnvironmentAuthorizer(this, jsii.String(\"MskAuthorizer\"), &DataZoneMskEnvironmentAuthorizerProps{\n\tDomainId: jsii.String(\"aba_dc999t9ime9sss\"),\n})","version":"1"},"$":{"source":"new dsf.governance.DataZoneMskEnvironmentAuthorizer(this, 'MskAuthorizer', {\n  domainId: 'aba_dc999t9ime9sss',\n});","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.governance.DataZoneMskEnvironmentAuthorizer"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.governance","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskEnvironmentAuthorizer","@cdklabs/aws-data-solutions-framework.governance.DataZoneMskEnvironmentAuthorizerProps","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\nnew dsf.governance.DataZoneMskEnvironmentAuthorizer(this, 'MskAuthorizer', {\n  domainId: 'aba_dc999t9ime9sss',\n});\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":2,"80":4,"110":1,"210":1,"211":2,"214":1,"244":1,"303":1},"fqnsFingerprint":"375dae748c2e5d76160d3b9106013206dab27ccebc985951b7db2aaba73b5b51"},"2b2d964ab5b4e0e4ac2da39722069ab04aaab57f695138fd9b6a89a948bca275":{"translations":{"python":{"source":"pyspark_packer = dsf.processing.PySparkApplicationPackage(self, \"pysparkPacker\",\n    application_name=\"my-pyspark\",\n    entrypoint_path=\"/Users/my-user/my-spark-job/app/app-pyspark.py\",\n    dependencies_folder=\"/Users/my-user/my-spark-job/app\",\n    removal_policy=cdk.RemovalPolicy.DESTROY\n)","version":"2"},"csharp":{"source":"var pysparkPacker = new Processing.PySparkApplicationPackage(this, \"pysparkPacker\", new PySparkApplicationPackageProps {\n    ApplicationName = \"my-pyspark\",\n    EntrypointPath = \"/Users/my-user/my-spark-job/app/app-pyspark.py\",\n    DependenciesFolder = \"/Users/my-user/my-spark-job/app\",\n    RemovalPolicy = RemovalPolicy.DESTROY\n});","version":"1"},"java":{"source":"PySparkApplicationPackage pysparkPacker = PySparkApplicationPackage.Builder.create(this, \"pysparkPacker\")\n        .applicationName(\"my-pyspark\")\n        .entrypointPath(\"/Users/my-user/my-spark-job/app/app-pyspark.py\")\n        .dependenciesFolder(\"/Users/my-user/my-spark-job/app\")\n        .removalPolicy(RemovalPolicy.DESTROY)\n        .build();","version":"1"},"go":{"source":"pysparkPacker := processing.NewPySparkApplicationPackage(this, jsii.String(\"pysparkPacker\"), &PySparkApplicationPackageProps{\n\tApplicationName: jsii.String(\"my-pyspark\"),\n\tEntrypointPath: jsii.String(\"/Users/my-user/my-spark-job/app/app-pyspark.py\"),\n\tDependenciesFolder: jsii.String(\"/Users/my-user/my-spark-job/app\"),\n\tRemovalPolicy: cdk.RemovalPolicy_DESTROY,\n})","version":"1"},"$":{"source":"let pysparkPacker = new dsf.processing.PySparkApplicationPackage (this, 'pysparkPacker', {\n  applicationName: 'my-pyspark',\n  entrypointPath: '/Users/my-user/my-spark-job/app/app-pyspark.py',\n  dependenciesFolder: '/Users/my-user/my-spark-job/app',\n  removalPolicy: cdk.RemovalPolicy.DESTROY,\n});","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.processing.PySparkApplicationPackage"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.processing","@cdklabs/aws-data-solutions-framework.processing.PySparkApplicationPackage","@cdklabs/aws-data-solutions-framework.processing.PySparkApplicationPackageProps","aws-cdk-lib.RemovalPolicy","aws-cdk-lib.RemovalPolicy#DESTROY","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\nlet pysparkPacker = new dsf.processing.PySparkApplicationPackage (this, 'pysparkPacker', {\n  applicationName: 'my-pyspark',\n  entrypointPath: '/Users/my-user/my-spark-job/app/app-pyspark.py',\n  dependenciesFolder: '/Users/my-user/my-spark-job/app',\n  removalPolicy: cdk.RemovalPolicy.DESTROY,\n});\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":4,"80":11,"110":1,"210":1,"211":4,"214":1,"243":1,"260":1,"261":1,"303":4},"fqnsFingerprint":"dde2e13c0077401f98fcccc09d35df1918151ccdb73fc3a2c103d936bbcc8adc"},"fe0ca625f487cb8fa28bdcaa292a523804e570c2c7a2cd6bf92cda5550efb558":{"translations":{"python":{"source":"from aws_cdk.aws_s3 import Bucket\nfrom aws_cdk.pipelines import CodePipelineSource\n\n\nclass MyApplicationStack(cdk.Stack):\n    def __init__(self, scope, *, stage, description=None, env=None, stackName=None, tags=None, notificationArns=None, synthesizer=None, terminationProtection=None, analyticsReporting=None, crossRegionReferences=None, permissionsBoundary=None, suppressTemplateIndentation=None):\n        super().__init__(scope, \"MyApplicationStack\")\n        bucket = Bucket(self, \"TestBucket\",\n            auto_delete_objects=True,\n            removal_policy=cdk.RemovalPolicy.DESTROY\n        )\n        cdk.CfnOutput(self, \"BucketName\", value=bucket.bucket_name)\n\nclass MyStackFactory(dsf.utils.ApplicationStackFactory):\n    def create_stack(self, scope, stage):\n        return MyApplicationStack(scope, stage=stage)\n\nclass MyCICDStack(cdk.Stack):\n    def __init__(self, scope, id):\n        super().__init__(scope, id)\n\n        dsf.processing.SparkEmrCICDPipeline(self, \"TestConstruct\",\n            spark_application_name=\"test\",\n            application_stack_factory=MyStackFactory(),\n            cdk_application_path=\"cdk/\",\n            spark_application_path=\"spark/\",\n            spark_image=dsf.processing.SparkImage.EMR_6_12,\n            integ_test_script=\"cdk/integ-test.sh\",\n            integ_test_env={\n                \"TEST_BUCKET\": \"BucketName\"\n            },\n            source=CodePipelineSource.connection(\"owner/weekly-job\", \"mainline\",\n                connection_arn=\"arn:aws:codeconnections:eu-west-1:123456789012:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f\"\n            )\n        )","version":"2"},"csharp":{"source":"using Amazon.CDK.AWS.S3;\nusing Amazon.CDK.Pipelines;\n\n\nclass MyApplicationStackProps : StackProps\n{\n    public CICDStage Stage { get; set; }\n}\n\nclass MyApplicationStack : Stack\n{\n    public MyApplicationStack(Stack scope, MyApplicationStackProps? props=null) : base(scope, \"MyApplicationStack\")\n    {\n        var bucket = new Bucket(this, \"TestBucket\", new BucketProps {\n            AutoDeleteObjects = true,\n            RemovalPolicy = RemovalPolicy.DESTROY\n        });\n        new CfnOutput(this, \"BucketName\", new CfnOutputProps { Value = bucket.BucketName });\n    }\n}\n\nclass MyStackFactory : Utils.ApplicationStackFactory\n{\n    public Stack CreateStack(Stack scope, CICDStage stage)\n    {\n        return new MyApplicationStack(scope, new MyApplicationStackProps { Stage = stage });\n    }\n}\n\nclass MyCICDStack : Stack\n{\n    public MyCICDStack(Construct scope, string id) : base(scope, id)\n    {\n\n        new Processing.SparkEmrCICDPipeline(this, \"TestConstruct\", new SparkEmrCICDPipelineProps {\n            SparkApplicationName = \"test\",\n            ApplicationStackFactory = new MyStackFactory(),\n            CdkApplicationPath = \"cdk/\",\n            SparkApplicationPath = \"spark/\",\n            SparkImage = Processing.SparkImage.EMR_6_12,\n            IntegTestScript = \"cdk/integ-test.sh\",\n            IntegTestEnv = new Dictionary<string, string> {\n                { \"TEST_BUCKET\", \"BucketName\" }\n            },\n            Source = CodePipelineSource.Connection(\"owner/weekly-job\", \"mainline\", new ConnectionSourceOptions {\n                ConnectionArn = \"arn:aws:codeconnections:eu-west-1:123456789012:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f\"\n            })\n        });\n    }\n}","version":"1"},"java":{"source":"import software.amazon.awscdk.services.s3.Bucket;\nimport software.amazon.awscdk.pipelines.CodePipelineSource;\n\n\npublic class MyApplicationStackProps extends StackProps {\n    private CICDStage stage;\n    public CICDStage getStage() {\n        return this.stage;\n    }\n    public MyApplicationStackProps stage(CICDStage stage) {\n        this.stage = stage;\n        return this;\n    }\n}\n\npublic class MyApplicationStack extends Stack {\n    public MyApplicationStack(Stack scope) {\n        this(scope, null);\n    }\n\n    public MyApplicationStack(Stack scope, MyApplicationStackProps props) {\n        super(scope, \"MyApplicationStack\");\n        Bucket bucket = Bucket.Builder.create(this, \"TestBucket\")\n                .autoDeleteObjects(true)\n                .removalPolicy(RemovalPolicy.DESTROY)\n                .build();\n        CfnOutput.Builder.create(this, \"BucketName\").value(bucket.getBucketName()).build();\n    }\n}\n\npublic class MyStackFactory implements ApplicationStackFactory {\n    public Stack createStack(Stack scope, CICDStage stage) {\n        return new MyApplicationStack(scope, new MyApplicationStackProps().stage(stage));\n    }\n}\n\npublic class MyCICDStack extends Stack {\n    public MyCICDStack(Construct scope, String id) {\n        super(scope, id);\n\n        SparkEmrCICDPipeline.Builder.create(this, \"TestConstruct\")\n                .sparkApplicationName(\"test\")\n                .applicationStackFactory(new MyStackFactory())\n                .cdkApplicationPath(\"cdk/\")\n                .sparkApplicationPath(\"spark/\")\n                .sparkImage(SparkImage.EMR_6_12)\n                .integTestScript(\"cdk/integ-test.sh\")\n                .integTestEnv(Map.of(\n                        \"TEST_BUCKET\", \"BucketName\"))\n                .source(CodePipelineSource.connection(\"owner/weekly-job\", \"mainline\", ConnectionSourceOptions.builder()\n                        .connectionArn(\"arn:aws:codeconnections:eu-west-1:123456789012:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f\")\n                        .build()))\n                .build();\n    }\n}","version":"1"},"go":{"source":"import \"github.com/aws/aws-cdk-go/awscdk\"\nimport \"github.com/aws/aws-cdk-go/awscdk\"\n\n\ntype myApplicationStackProps struct {\n\tstackProps\n\tstage cICDStage\n}\n\ntype myApplicationStack struct {\n\tstack\n}\n\nfunc newMyApplicationStack(scope stack, props myApplicationStackProps) *myApplicationStack {\n\tthis := &myApplicationStack{}\n\tcdk.NewStack_Override(this, scope, jsii.String(\"MyApplicationStack\"))\n\tbucket := awscdk.NewBucket(this, jsii.String(\"TestBucket\"), &BucketProps{\n\t\tAutoDeleteObjects: jsii.Boolean(true),\n\t\tRemovalPolicy: cdk.RemovalPolicy_DESTROY,\n\t})\n\tcdk.NewCfnOutput(this, jsii.String(\"BucketName\"), &CfnOutputProps{\n\t\tValue: bucket.BucketName,\n\t})\n\treturn this\n}\n\ntype myStackFactory struct {\n}\n\nfunc (this *myStackFactory) createStack(scope stack, stage cICDStage) stack {\n\treturn NewMyApplicationStack(*scope, &myApplicationStackProps{\n\t\tstage: stage,\n\t})\n}\n\ntype myCICDStack struct {\n\tstack\n}\n\nfunc newMyCICDStack(scope construct, id *string) *myCICDStack {\n\tthis := &myCICDStack{}\n\tcdk.NewStack_Override(this, scope, id)\n\n\tprocessing.NewSparkEmrCICDPipeline(this, jsii.String(\"TestConstruct\"), &SparkEmrCICDPipelineProps{\n\t\tSparkApplicationName: jsii.String(\"test\"),\n\t\tApplicationStackFactory: NewMyStackFactory(),\n\t\tCdkApplicationPath: jsii.String(\"cdk/\"),\n\t\tSparkApplicationPath: jsii.String(\"spark/\"),\n\t\tSparkImage: processing.SparkImage_EMR_6_12,\n\t\tIntegTestScript: jsii.String(\"cdk/integ-test.sh\"),\n\t\tIntegTestEnv: map[string]*string{\n\t\t\t\"TEST_BUCKET\": jsii.String(\"BucketName\"),\n\t\t},\n\t\tSource: awscdk.CodePipelineSource_Connection(jsii.String(\"owner/weekly-job\"), jsii.String(\"mainline\"), &ConnectionSourceOptions{\n\t\t\tConnectionArn: jsii.String(\"arn:aws:codeconnections:eu-west-1:123456789012:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f\"),\n\t\t}),\n\t})\n\treturn this\n}","version":"1"},"$":{"source":"import { Bucket } from 'aws-cdk-lib/aws-s3';\nimport { CodePipelineSource } from 'aws-cdk-lib/pipelines';\n\ninterface MyApplicationStackProps extends cdk.StackProps {\n  readonly stage: dsf.utils.CICDStage;\n}\n\nclass MyApplicationStack extends cdk.Stack {\n  constructor(scope: cdk.Stack, props?: MyApplicationStackProps) {\n    super(scope, 'MyApplicationStack');\n    const bucket = new Bucket(this, 'TestBucket', {\n      autoDeleteObjects: true,\n      removalPolicy: cdk.RemovalPolicy.DESTROY,\n    });\n    new cdk.CfnOutput(this, 'BucketName', { value: bucket.bucketName });\n  }\n}\n\nclass MyStackFactory implements dsf.utils.ApplicationStackFactory {\n  createStack(scope: cdk.Stack, stage: dsf.utils.CICDStage): cdk.Stack {\n    return new MyApplicationStack(scope, { stage });\n  }\n}\n\nclass MyCICDStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    new dsf.processing.SparkEmrCICDPipeline(this, 'TestConstruct', {\n       sparkApplicationName: 'test',\n       applicationStackFactory: new MyStackFactory(),\n       cdkApplicationPath: 'cdk/',\n       sparkApplicationPath: 'spark/',\n       sparkImage: dsf.processing.SparkImage.EMR_6_12,\n       integTestScript: 'cdk/integ-test.sh',\n       integTestEnv: {\n         TEST_BUCKET: 'BucketName',\n       },\n       source: CodePipelineSource.connection('owner/weekly-job', 'mainline', {\n             connectionArn: 'arn:aws:codeconnections:eu-west-1:123456789012:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f'\n       }),\n  });\n}\n}","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.processing.SparkEmrCICDPipeline"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.processing","@cdklabs/aws-data-solutions-framework.processing.SparkEmrCICDPipeline","@cdklabs/aws-data-solutions-framework.processing.SparkEmrCICDPipelineProps","@cdklabs/aws-data-solutions-framework.processing.SparkImage","@cdklabs/aws-data-solutions-framework.processing.SparkImage#EMR_6_12","@cdklabs/aws-data-solutions-framework.utils.ApplicationStackFactory","@cdklabs/aws-data-solutions-framework.utils.CICDStage","aws-cdk-lib.CfnOutput","aws-cdk-lib.CfnOutputProps","aws-cdk-lib.RemovalPolicy","aws-cdk-lib.RemovalPolicy#DESTROY","aws-cdk-lib.Stack","aws-cdk-lib.aws_s3.Bucket","aws-cdk-lib.aws_s3.Bucket#bucketName","aws-cdk-lib.aws_s3.BucketProps","aws-cdk-lib.pipelines.CodePipelineSource","aws-cdk-lib.pipelines.CodePipelineSource#connection","aws-cdk-lib.pipelines.ConnectionSourceOptions","constructs.Construct"],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\nimport { Bucket } from 'aws-cdk-lib/aws-s3';\nimport { CodePipelineSource } from 'aws-cdk-lib/pipelines';\n/// !hide\n// Hoisted imports ended before !hide marker above\nimport { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\n// Code snippet begins after !show marker below\n/// !show\n\n\ninterface MyApplicationStackProps extends cdk.StackProps {\n  readonly stage: dsf.utils.CICDStage;\n}\n\nclass MyApplicationStack extends cdk.Stack {\n  constructor(scope: cdk.Stack, props?: MyApplicationStackProps) {\n    super(scope, 'MyApplicationStack');\n    const bucket = new Bucket(this, 'TestBucket', {\n      autoDeleteObjects: true,\n      removalPolicy: cdk.RemovalPolicy.DESTROY,\n    });\n    new cdk.CfnOutput(this, 'BucketName', { value: bucket.bucketName });\n  }\n}\n\nclass MyStackFactory implements dsf.utils.ApplicationStackFactory {\n  createStack(scope: cdk.Stack, stage: dsf.utils.CICDStage): cdk.Stack {\n    return new MyApplicationStack(scope, { stage });\n  }\n}\n\nclass MyCICDStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    new dsf.processing.SparkEmrCICDPipeline(this, 'TestConstruct', {\n       sparkApplicationName: 'test',\n       applicationStackFactory: new MyStackFactory(),\n       cdkApplicationPath: 'cdk/',\n       sparkApplicationPath: 'spark/',\n       sparkImage: dsf.processing.SparkImage.EMR_6_12,\n       integTestScript: 'cdk/integ-test.sh',\n       integTestEnv: {\n         TEST_BUCKET: 'BucketName',\n       },\n       source: CodePipelineSource.connection('owner/weekly-job', 'mainline', {\n             connectionArn: 'arn:aws:codeconnections:eu-west-1:123456789012:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f'\n       }),\n  });\n}\n}\n/// !hide\n// Code snippet ended before !hide marker above","syntaxKindCounter":{"11":14,"58":1,"80":75,"108":2,"110":3,"112":1,"148":1,"154":1,"166":7,"169":6,"171":1,"174":1,"176":2,"183":7,"210":6,"211":15,"213":3,"214":5,"233":4,"241":3,"243":1,"244":4,"253":1,"260":1,"261":1,"263":3,"264":1,"272":2,"273":2,"275":2,"276":2,"298":4,"303":13,"304":1,"307":1},"fqnsFingerprint":"406b5b4347d84b7cf7112b8ee9376c3251f9d12c76ea724e93252861df7a6979"},"ec829c38b787262aa7c2d8264cc75f8034a8002110ca60036cb1cee3b6dd3111":{"translations":{"python":{"source":"from aws_cdk.aws_stepfunctions import JsonPath\n\n\njob = dsf.processing.SparkEmrContainersJob(self, \"SparkJob\",\n    job_config={\n        \"Name\": JsonPath.format(\"ge_profile-{}\", JsonPath.uuid()),\n        \"VirtualClusterId\": \"virtualClusterId\",\n        \"ExecutionRoleArn\": \"ROLE-ARN\",\n        \"JobDriver\": {\n            \"SparkSubmit\": {\n                \"EntryPoint\": \"s3://S3-BUCKET/pi.py\",\n                \"EntryPointArguments\": [],\n                \"SparkSubmitParameters\": \"--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.driver.memory=2G --conf spark.executor.cores=4\"\n            }\n        }\n    }\n)\n\ncdk.CfnOutput(self, \"SparkJobStateMachine\",\n    value=job.state_machine.state_machine_arn\n)","version":"2"},"csharp":{"source":"using Amazon.CDK.AWS.StepFunctions;\n\n\nvar job = new Processing.SparkEmrContainersJob(this, \"SparkJob\", (SparkEmrContainersJobApiProps)new SparkEmrContainersJobApiProps {\n    JobConfig = new Dictionary<string, object> {\n        { \"Name\", JsonPath.Format(\"ge_profile-{}\", JsonPath.Uuid()) },\n        { \"VirtualClusterId\", \"virtualClusterId\" },\n        { \"ExecutionRoleArn\", \"ROLE-ARN\" },\n        { \"JobDriver\", new Dictionary<string, IDictionary<string, object>> {\n            { \"SparkSubmit\", new Struct {\n                EntryPoint = \"s3://S3-BUCKET/pi.py\",\n                EntryPointArguments = new [] {  },\n                SparkSubmitParameters = \"--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.driver.memory=2G --conf spark.executor.cores=4\"\n            } }\n        } }\n    }\n});\n\nnew CfnOutput(this, \"SparkJobStateMachine\", new CfnOutputProps {\n    Value = job.StateMachine.StateMachineArn\n});","version":"1"},"java":{"source":"import software.amazon.awscdk.services.stepfunctions.JsonPath;\n\n\nSparkEmrContainersJob job = new SparkEmrContainersJob(this, \"SparkJob\", (SparkEmrContainersJobApiProps)SparkEmrContainersJobApiProps.builder()\n        .jobConfig(Map.of(\n                \"Name\", JsonPath.format(\"ge_profile-{}\", JsonPath.uuid()),\n                \"VirtualClusterId\", \"virtualClusterId\",\n                \"ExecutionRoleArn\", \"ROLE-ARN\",\n                \"JobDriver\", Map.of(\n                        \"SparkSubmit\", Map.of(\n                                \"EntryPoint\", \"s3://S3-BUCKET/pi.py\",\n                                \"EntryPointArguments\", List.of(),\n                                \"SparkSubmitParameters\", \"--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.driver.memory=2G --conf spark.executor.cores=4\"))))\n        .build());\n\nCfnOutput.Builder.create(this, \"SparkJobStateMachine\")\n        .value(job.getStateMachine().getStateMachineArn())\n        .build();","version":"1"},"go":{"source":"import \"github.com/aws/aws-cdk-go/awscdk\"\n\n\njob := processing.NewSparkEmrContainersJob(this, jsii.String(\"SparkJob\"), &SparkEmrContainersJobApiProps{\n\tJobConfig: map[string]interface{}{\n\t\t\"Name\": awscdk.JsonPath_format(jsii.String(\"ge_profile-{}\"), awscdk.JsonPath_uuid()),\n\t\t\"VirtualClusterId\": jsii.String(\"virtualClusterId\"),\n\t\t\"ExecutionRoleArn\": jsii.String(\"ROLE-ARN\"),\n\t\t\"JobDriver\": map[string]map[string]interface{}{\n\t\t\t\"SparkSubmit\": map[string]interface{}{\n\t\t\t\t\"EntryPoint\": jsii.String(\"s3://S3-BUCKET/pi.py\"),\n\t\t\t\t\"EntryPointArguments\": []interface{}{\n\t\t\t\t},\n\t\t\t\t\"SparkSubmitParameters\": jsii.String(\"--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.driver.memory=2G --conf spark.executor.cores=4\"),\n\t\t\t},\n\t\t},\n\t},\n}.(sparkEmrContainersJobApiProps))\n\ncdk.NewCfnOutput(this, jsii.String(\"SparkJobStateMachine\"), &CfnOutputProps{\n\tValue: job.StateMachine.StateMachineArn,\n})","version":"1"},"$":{"source":"import { JsonPath } from 'aws-cdk-lib/aws-stepfunctions';\n\nconst job = new dsf.processing.SparkEmrContainersJob(this, 'SparkJob', {\n  jobConfig:{\n    \"Name\": JsonPath.format('ge_profile-{}', JsonPath.uuid()),\n    \"VirtualClusterId\": \"virtualClusterId\",\n    \"ExecutionRoleArn\": \"ROLE-ARN\",\n    \"JobDriver\": {\n      \"SparkSubmit\": {\n          \"EntryPoint\": \"s3://S3-BUCKET/pi.py\",\n          \"EntryPointArguments\": [],\n          \"SparkSubmitParameters\": \"--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.driver.memory=2G --conf spark.executor.cores=4\"\n      },\n    }\n  }\n} as dsf.processing.SparkEmrContainersJobApiProps);\n\nnew cdk.CfnOutput(this, 'SparkJobStateMachine', {\n  value: job.stateMachine!.stateMachineArn,\n});","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersJob"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.processing","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersJob","@cdklabs/aws-data-solutions-framework.processing.SparkJob#stateMachine","aws-cdk-lib.CfnOutput","aws-cdk-lib.CfnOutputProps","aws-cdk-lib.aws_stepfunctions.JsonPath#format","aws-cdk-lib.aws_stepfunctions.JsonPath#uuid","aws-cdk-lib.aws_stepfunctions.StateMachine#stateMachineArn","constructs.Construct"],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\nimport { JsonPath } from 'aws-cdk-lib/aws-stepfunctions';\n/// !hide\n// Hoisted imports ended before !hide marker above\nimport { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\n\n\nconst job = new dsf.processing.SparkEmrContainersJob(this, 'SparkJob', {\n  jobConfig:{\n    \"Name\": JsonPath.format('ge_profile-{}', JsonPath.uuid()),\n    \"VirtualClusterId\": \"virtualClusterId\",\n    \"ExecutionRoleArn\": \"ROLE-ARN\",\n    \"JobDriver\": {\n      \"SparkSubmit\": {\n          \"EntryPoint\": \"s3://S3-BUCKET/pi.py\",\n          \"EntryPointArguments\": [],\n          \"SparkSubmitParameters\": \"--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.driver.memory=2G --conf spark.executor.cores=4\"\n      },\n    }\n  }\n} as dsf.processing.SparkEmrContainersJobApiProps);\n\nnew cdk.CfnOutput(this, 'SparkJobStateMachine', {\n  value: job.stateMachine!.stateMachineArn,\n});\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":16,"80":19,"110":2,"166":2,"183":1,"209":1,"210":5,"211":7,"213":2,"214":2,"234":1,"235":1,"243":1,"244":1,"260":1,"261":1,"272":1,"273":1,"275":1,"276":1,"303":10,"307":1},"fqnsFingerprint":"4be616c2eb6f558a70e08864d10dfa32e56d39d92962d15ddd78fc90fc2e20da"},"0125f8db144c1057c98ea4ef1e3ffae9edab384cb6e0112979f023ca817ddcfe":{"translations":{"python":{"source":"from aws_cdk.aws_iam import ManagedPolicy, PolicyDocument, PolicyStatement\nfrom aws_cdk.lambda_layer_kubectl_v30 import KubectlV30Layer\n\n\nkubectl_layer = KubectlV30Layer(self, \"kubectlLayer\")\n\nemr_eks_cluster = dsf.processing.SparkEmrContainersRuntime.get_or_create(self,\n    public_access_cIDRs=[\"10.0.0.0/16\"],\n    kubectl_lambda_layer=kubectl_layer\n)\n\nvirtual_cluster = emr_eks_cluster.add_emr_virtual_cluster(self,\n    name=\"example\",\n    create_namespace=True,\n    eks_namespace=\"example\"\n)\n\ns3_read = PolicyDocument(\n    statements=[PolicyStatement(\n        actions=[\"s3:GetObject\"\n        ],\n        resources=[\"arn:aws:s3:::aws-data-analytics-workshops\"]\n    )]\n)\n\ns3_read_policy = ManagedPolicy(self, \"s3ReadPolicy\",\n    document=s3_read\n)\n\nexec_role = emr_eks_cluster.create_execution_role(self, \"ExecRole\", s3_read_policy, \"example\", \"s3ReadExecRole\")","version":"2"},"csharp":{"source":"using Amazon.CDK.AWS.IAM;\nusing Amazon.CDK.LambdaLayer.KubectlV30;\n\n\nvar kubectlLayer = new KubectlV30Layer(this, \"kubectlLayer\");\n\nvar emrEksCluster = Processing.SparkEmrContainersRuntime.GetOrCreate(this, new SparkEmrContainersRuntimeProps {\n    PublicAccessCIDRs = new [] { \"10.0.0.0/16\" },\n    KubectlLambdaLayer = kubectlLayer\n});\n\nvar virtualCluster = emrEksCluster.AddEmrVirtualCluster(this, new EmrVirtualClusterProps {\n    Name = \"example\",\n    CreateNamespace = true,\n    EksNamespace = \"example\"\n});\n\nvar s3Read = new PolicyDocument(new PolicyDocumentProps {\n    Statements = new [] { new PolicyStatement(new PolicyStatementProps {\n        Actions = new [] { \"s3:GetObject\" },\n        Resources = new [] { \"arn:aws:s3:::aws-data-analytics-workshops\" }\n    }) }\n});\n\nvar s3ReadPolicy = new ManagedPolicy(this, \"s3ReadPolicy\", new ManagedPolicyProps {\n    Document = s3Read\n});\n\nvar execRole = emrEksCluster.CreateExecutionRole(this, \"ExecRole\", s3ReadPolicy, \"example\", \"s3ReadExecRole\");","version":"1"},"java":{"source":"import software.amazon.awscdk.services.iam.ManagedPolicy;\nimport software.amazon.awscdk.services.iam.PolicyDocument;\nimport software.amazon.awscdk.services.iam.PolicyStatement;\nimport software.amazon.awscdk.cdk.lambdalayer.kubectl.v30.KubectlV30Layer;\n\n\nKubectlV30Layer kubectlLayer = new KubectlV30Layer(this, \"kubectlLayer\");\n\nSparkEmrContainersRuntime emrEksCluster = SparkEmrContainersRuntime.getOrCreate(this, SparkEmrContainersRuntimeProps.builder()\n        .publicAccessCIDRs(List.of(\"10.0.0.0/16\"))\n        .kubectlLambdaLayer(kubectlLayer)\n        .build());\n\nCfnVirtualCluster virtualCluster = emrEksCluster.addEmrVirtualCluster(this, EmrVirtualClusterProps.builder()\n        .name(\"example\")\n        .createNamespace(true)\n        .eksNamespace(\"example\")\n        .build());\n\nPolicyDocument s3Read = PolicyDocument.Builder.create()\n        .statements(List.of(PolicyStatement.Builder.create()\n                .actions(List.of(\"s3:GetObject\"))\n                .resources(List.of(\"arn:aws:s3:::aws-data-analytics-workshops\"))\n                .build()))\n        .build();\n\nManagedPolicy s3ReadPolicy = ManagedPolicy.Builder.create(this, \"s3ReadPolicy\")\n        .document(s3Read)\n        .build();\n\nRole execRole = emrEksCluster.createExecutionRole(this, \"ExecRole\", s3ReadPolicy, \"example\", \"s3ReadExecRole\");","version":"1"},"go":{"source":"import \"github.com/aws/aws-cdk-go/awscdk\"\nimport \"github.com/cdklabs/awscdk-kubectl-go/kubectlv30\"\n\n\nkubectlLayer := kubectlv30.NewKubectlV30Layer(this, jsii.String(\"kubectlLayer\"))\n\nemrEksCluster := processing.SparkEmrContainersRuntime_GetOrCreate(this, &SparkEmrContainersRuntimeProps{\n\tPublicAccessCIDRs: []*string{\n\t\tjsii.String(\"10.0.0.0/16\"),\n\t},\n\tKubectlLambdaLayer: kubectlLayer,\n})\n\nvirtualCluster := emrEksCluster.AddEmrVirtualCluster(this, &EmrVirtualClusterProps{\n\tName: jsii.String(\"example\"),\n\tCreateNamespace: jsii.Boolean(true),\n\tEksNamespace: jsii.String(\"example\"),\n})\n\ns3Read := awscdk.NewPolicyDocument(&PolicyDocumentProps{\n\tStatements: []policyStatement{\n\t\tawscdk.NewPolicyStatement(&PolicyStatementProps{\n\t\t\tActions: []*string{\n\t\t\t\tjsii.String(\"s3:GetObject\"),\n\t\t\t},\n\t\t\tResources: []*string{\n\t\t\t\tjsii.String(\"arn:aws:s3:::aws-data-analytics-workshops\"),\n\t\t\t},\n\t\t}),\n\t},\n})\n\ns3ReadPolicy := awscdk.NewManagedPolicy(this, jsii.String(\"s3ReadPolicy\"), &ManagedPolicyProps{\n\tDocument: s3Read,\n})\n\nexecRole := emrEksCluster.CreateExecutionRole(this, jsii.String(\"ExecRole\"), s3ReadPolicy, jsii.String(\"example\"), jsii.String(\"s3ReadExecRole\"))","version":"1"},"$":{"source":"import { ManagedPolicy, PolicyDocument, PolicyStatement } from 'aws-cdk-lib/aws-iam';\nimport { KubectlV30Layer } from '@aws-cdk/lambda-layer-kubectl-v30';\n\nconst kubectlLayer = new KubectlV30Layer(this, 'kubectlLayer');\n\nconst emrEksCluster = dsf.processing.SparkEmrContainersRuntime.getOrCreate(this, {\n  publicAccessCIDRs: ['10.0.0.0/16'],\n  kubectlLambdaLayer: kubectlLayer,\n});\n\nconst virtualCluster = emrEksCluster.addEmrVirtualCluster(this, {\n  name: 'example',\n  createNamespace: true,\n  eksNamespace: 'example',\n});\n\nconst s3Read = new PolicyDocument({\n  statements: [new PolicyStatement({\n    actions: [\n      's3:GetObject',\n    ],\n    resources: ['arn:aws:s3:::aws-data-analytics-workshops'],\n  })],\n});\n\nconst s3ReadPolicy = new ManagedPolicy(this, 's3ReadPolicy', {\n  document: s3Read,\n});\n\nconst execRole = emrEksCluster.createExecutionRole(this, 'ExecRole', s3ReadPolicy, 'example', 's3ReadExecRole');","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntime"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@aws-cdk/lambda-layer-kubectl-v30.KubectlV30Layer","@cdklabs/aws-data-solutions-framework.processing","@cdklabs/aws-data-solutions-framework.processing.EmrVirtualClusterProps","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntime","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntime#addEmrVirtualCluster","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntime#createExecutionRole","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntime#getOrCreate","@cdklabs/aws-data-solutions-framework.processing.SparkEmrContainersRuntimeProps","aws-cdk-lib.aws_emrcontainers.CfnVirtualCluster","aws-cdk-lib.aws_iam.IManagedPolicy","aws-cdk-lib.aws_iam.ManagedPolicy","aws-cdk-lib.aws_iam.ManagedPolicyProps","aws-cdk-lib.aws_iam.PolicyDocument","aws-cdk-lib.aws_iam.PolicyDocumentProps","aws-cdk-lib.aws_iam.PolicyStatement","aws-cdk-lib.aws_iam.PolicyStatementProps","aws-cdk-lib.aws_iam.Role","aws-cdk-lib.aws_lambda.ILayerVersion","constructs.Construct"],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\nimport { ManagedPolicy, PolicyDocument, PolicyStatement } from 'aws-cdk-lib/aws-iam';\nimport { KubectlV30Layer } from '@aws-cdk/lambda-layer-kubectl-v30';\n/// !hide\n// Hoisted imports ended before !hide marker above\nimport { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\n\n\nconst kubectlLayer = new KubectlV30Layer(this, 'kubectlLayer');\n\nconst emrEksCluster = dsf.processing.SparkEmrContainersRuntime.getOrCreate(this, {\n  publicAccessCIDRs: ['10.0.0.0/16'],\n  kubectlLambdaLayer: kubectlLayer,\n});\n\nconst virtualCluster = emrEksCluster.addEmrVirtualCluster(this, {\n  name: 'example',\n  createNamespace: true,\n  eksNamespace: 'example',\n});\n\nconst s3Read = new PolicyDocument({\n  statements: [new PolicyStatement({\n    actions: [\n      's3:GetObject',\n    ],\n    resources: ['arn:aws:s3:::aws-data-analytics-workshops'],\n  })],\n});\n\nconst s3ReadPolicy = new ManagedPolicy(this, 's3ReadPolicy', {\n  document: s3Read,\n});\n\nconst execRole = emrEksCluster.createExecutionRole(this, 'ExecRole', s3ReadPolicy, 'example', 's3ReadExecRole');\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":12,"80":34,"110":5,"112":1,"209":4,"210":5,"211":5,"213":3,"214":4,"243":6,"260":6,"261":6,"272":2,"273":2,"275":2,"276":4,"303":9,"307":1},"fqnsFingerprint":"f0ceaf717123a0c3d260534eae2cb3e59de05e24f5a670465be6ca2a76fae749"},"9e4b283b0fb092b83e5fda1e2c8df7f62c09ff971959e5dbaad05525a5b37f56":{"translations":{"python":{"source":"from aws_cdk.aws_iam import PolicyDocument, PolicyStatement\nfrom aws_cdk.aws_stepfunctions import JsonPath\n\n\nmy_execution_role = dsf.processing.SparkEmrServerlessRuntime.create_execution_role(self, \"execRole1\")\njob = dsf.processing.SparkEmrServerlessJob(self, \"SparkJob\",\n    job_config={\n        \"Name\": JsonPath.format(\"ge_profile-{}\", JsonPath.uuid()),\n        \"ApplicationId\": \"APPLICATION_ID\",\n        \"ExecutionRoleArn\": my_execution_role.role_arn,\n        \"JobDriver\": {\n            \"SparkSubmit\": {\n                \"EntryPoint\": \"s3://S3-BUCKET/pi.py\",\n                \"EntryPointArguments\": [],\n                \"SparkSubmitParameters\": \"--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.driver.memory=2G --conf spark.executor.cores=4\"\n            }\n        }\n    }\n)","version":"2"},"csharp":{"source":"using Amazon.CDK.AWS.IAM;\nusing Amazon.CDK.AWS.StepFunctions;\n\n\nvar myExecutionRole = Processing.SparkEmrServerlessRuntime.CreateExecutionRole(this, \"execRole1\");\nvar job = new Processing.SparkEmrServerlessJob(this, \"SparkJob\", (SparkEmrServerlessJobApiProps)new SparkEmrServerlessJobApiProps {\n    JobConfig = new Dictionary<string, object> {\n        { \"Name\", JsonPath.Format(\"ge_profile-{}\", JsonPath.Uuid()) },\n        { \"ApplicationId\", \"APPLICATION_ID\" },\n        { \"ExecutionRoleArn\", myExecutionRole.RoleArn },\n        { \"JobDriver\", new Dictionary<string, IDictionary<string, object>> {\n            { \"SparkSubmit\", new Struct {\n                EntryPoint = \"s3://S3-BUCKET/pi.py\",\n                EntryPointArguments = new [] {  },\n                SparkSubmitParameters = \"--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.driver.memory=2G --conf spark.executor.cores=4\"\n            } }\n        } }\n    }\n});","version":"1"},"java":{"source":"import software.amazon.awscdk.services.iam.PolicyDocument;\nimport software.amazon.awscdk.services.iam.PolicyStatement;\nimport software.amazon.awscdk.services.stepfunctions.JsonPath;\n\n\nIRole myExecutionRole = SparkEmrServerlessRuntime.createExecutionRole(this, \"execRole1\");\nSparkEmrServerlessJob job = new SparkEmrServerlessJob(this, \"SparkJob\", (SparkEmrServerlessJobApiProps)SparkEmrServerlessJobApiProps.builder()\n        .jobConfig(Map.of(\n                \"Name\", JsonPath.format(\"ge_profile-{}\", JsonPath.uuid()),\n                \"ApplicationId\", \"APPLICATION_ID\",\n                \"ExecutionRoleArn\", myExecutionRole.getRoleArn(),\n                \"JobDriver\", Map.of(\n                        \"SparkSubmit\", Map.of(\n                                \"EntryPoint\", \"s3://S3-BUCKET/pi.py\",\n                                \"EntryPointArguments\", List.of(),\n                                \"SparkSubmitParameters\", \"--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.driver.memory=2G --conf spark.executor.cores=4\"))))\n        .build());","version":"1"},"go":{"source":"import \"github.com/aws/aws-cdk-go/awscdk\"\nimport \"github.com/aws/aws-cdk-go/awscdk\"\n\n\nmyExecutionRole := processing.SparkEmrServerlessRuntime_CreateExecutionRole(this, jsii.String(\"execRole1\"))\njob := processing.NewSparkEmrServerlessJob(this, jsii.String(\"SparkJob\"), &SparkEmrServerlessJobApiProps{\n\tJobConfig: map[string]interface{}{\n\t\t\"Name\": awscdk.JsonPath_format(jsii.String(\"ge_profile-{}\"), awscdk.JsonPath_uuid()),\n\t\t\"ApplicationId\": jsii.String(\"APPLICATION_ID\"),\n\t\t\"ExecutionRoleArn\": myExecutionRole.roleArn,\n\t\t\"JobDriver\": map[string]map[string]interface{}{\n\t\t\t\"SparkSubmit\": map[string]interface{}{\n\t\t\t\t\"EntryPoint\": jsii.String(\"s3://S3-BUCKET/pi.py\"),\n\t\t\t\t\"EntryPointArguments\": []interface{}{\n\t\t\t\t},\n\t\t\t\t\"SparkSubmitParameters\": jsii.String(\"--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.driver.memory=2G --conf spark.executor.cores=4\"),\n\t\t\t},\n\t\t},\n\t},\n}.(sparkEmrServerlessJobApiProps))","version":"1"},"$":{"source":"import { PolicyDocument, PolicyStatement } from 'aws-cdk-lib/aws-iam';\nimport { JsonPath } from 'aws-cdk-lib/aws-stepfunctions';\n\nconst myExecutionRole = dsf.processing.SparkEmrServerlessRuntime.createExecutionRole(this, 'execRole1');\nconst job = new dsf.processing.SparkEmrServerlessJob(this, 'SparkJob', {\n  jobConfig:{\n    \"Name\": JsonPath.format('ge_profile-{}', JsonPath.uuid()),\n    \"ApplicationId\": \"APPLICATION_ID\",\n    \"ExecutionRoleArn\": myExecutionRole.roleArn,\n    \"JobDriver\": {\n      \"SparkSubmit\": {\n          \"EntryPoint\": \"s3://S3-BUCKET/pi.py\",\n          \"EntryPointArguments\": [],\n          \"SparkSubmitParameters\": \"--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.driver.memory=2G --conf spark.executor.cores=4\"\n      },\n    }\n  }\n} as dsf.processing.SparkEmrServerlessJobApiProps);","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.processing.SparkEmrServerlessJob"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.processing","@cdklabs/aws-data-solutions-framework.processing.SparkEmrServerlessJob","@cdklabs/aws-data-solutions-framework.processing.SparkEmrServerlessRuntime","@cdklabs/aws-data-solutions-framework.processing.SparkEmrServerlessRuntime#createExecutionRole","aws-cdk-lib.aws_iam.IRole","aws-cdk-lib.aws_iam.IRole#roleArn","aws-cdk-lib.aws_stepfunctions.JsonPath#format","aws-cdk-lib.aws_stepfunctions.JsonPath#uuid","constructs.Construct"],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\nimport { PolicyDocument, PolicyStatement } from 'aws-cdk-lib/aws-iam';\nimport { JsonPath } from 'aws-cdk-lib/aws-stepfunctions';\n/// !hide\n// Hoisted imports ended before !hide marker above\nimport { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\n\n\nconst myExecutionRole = dsf.processing.SparkEmrServerlessRuntime.createExecutionRole(this, 'execRole1');\nconst job = new dsf.processing.SparkEmrServerlessJob(this, 'SparkJob', {\n  jobConfig:{\n    \"Name\": JsonPath.format('ge_profile-{}', JsonPath.uuid()),\n    \"ApplicationId\": \"APPLICATION_ID\",\n    \"ExecutionRoleArn\": myExecutionRole.roleArn,\n    \"JobDriver\": {\n      \"SparkSubmit\": {\n          \"EntryPoint\": \"s3://S3-BUCKET/pi.py\",\n          \"EntryPointArguments\": [],\n          \"SparkSubmitParameters\": \"--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.driver.memory=2G --conf spark.executor.cores=4\"\n      },\n    }\n  }\n} as dsf.processing.SparkEmrServerlessJobApiProps);\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":16,"80":22,"110":2,"166":2,"183":1,"209":1,"210":4,"211":8,"213":3,"214":1,"234":1,"243":2,"260":2,"261":2,"272":2,"273":2,"275":2,"276":3,"303":9,"307":1},"fqnsFingerprint":"72bff183f47a15b92f562aeb6189b348649136323c9079633a156ce0957318ee"},"a169b3f53424a8c265c99434156e203bb8b02d8600406e92e8cf217252051168":{"translations":{"python":{"source":"from aws_cdk.aws_iam import Role, AccountRootPrincipal\n\n\nserverless_runtime = dsf.processing.SparkEmrServerlessRuntime(self, \"EmrApp\",\n    name=\"SparkRuntimeServerless\"\n)\n\nexecution_role = dsf.processing.SparkEmrServerlessRuntime.create_execution_role(self, \"ExecutionRole\")\n\nsubmitter_role = Role(self, \"SubmitterRole\",\n    assumed_by=AccountRootPrincipal()\n)\n\ndsf.processing.SparkEmrServerlessRuntime.grant_start_job_execution(submitter_role, [execution_role.role_arn], [\"EMR-serverless-app-ID\"])","version":"2"},"csharp":{"source":"using Amazon.CDK.AWS.IAM;\n\n\nvar serverlessRuntime = new Processing.SparkEmrServerlessRuntime(this, \"EmrApp\", new SparkEmrServerlessRuntimeProps {\n    Name = \"SparkRuntimeServerless\"\n});\n\nvar executionRole = Processing.SparkEmrServerlessRuntime.CreateExecutionRole(this, \"ExecutionRole\");\n\nvar submitterRole = new Role(this, \"SubmitterRole\", new RoleProps {\n    AssumedBy = new AccountRootPrincipal()\n});\n\nProcessing.SparkEmrServerlessRuntime.GrantStartJobExecution(submitterRole, new [] { executionRole.RoleArn }, new [] { \"EMR-serverless-app-ID\" });","version":"1"},"java":{"source":"import software.amazon.awscdk.services.iam.Role;\nimport software.amazon.awscdk.services.iam.AccountRootPrincipal;\n\n\nSparkEmrServerlessRuntime serverlessRuntime = SparkEmrServerlessRuntime.Builder.create(this, \"EmrApp\")\n        .name(\"SparkRuntimeServerless\")\n        .build();\n\nIRole executionRole = SparkEmrServerlessRuntime.createExecutionRole(this, \"ExecutionRole\");\n\nRole submitterRole = Role.Builder.create(this, \"SubmitterRole\")\n        .assumedBy(new AccountRootPrincipal())\n        .build();\n\nSparkEmrServerlessRuntime.grantStartJobExecution(submitterRole, List.of(executionRole.getRoleArn()), List.of(\"EMR-serverless-app-ID\"));","version":"1"},"go":{"source":"import \"github.com/aws/aws-cdk-go/awscdk\"\n\n\nserverlessRuntime := processing.NewSparkEmrServerlessRuntime(this, jsii.String(\"EmrApp\"), &SparkEmrServerlessRuntimeProps{\n\tName: jsii.String(\"SparkRuntimeServerless\"),\n})\n\nexecutionRole := processing.SparkEmrServerlessRuntime_CreateExecutionRole(this, jsii.String(\"ExecutionRole\"))\n\nsubmitterRole := awscdk.NewRole(this, jsii.String(\"SubmitterRole\"), &RoleProps{\n\tAssumedBy: awscdk.NewAccountRootPrincipal(),\n})\n\nprocessing.SparkEmrServerlessRuntime_GrantStartJobExecution(submitterRole, []*string{\n\texecutionRole.RoleArn,\n}, []*string{\n\tjsii.String(\"EMR-serverless-app-ID\"),\n})","version":"1"},"$":{"source":"import { Role, AccountRootPrincipal } from 'aws-cdk-lib/aws-iam';\n\nconst serverlessRuntime = new dsf.processing.SparkEmrServerlessRuntime(this, 'EmrApp', {\n  name: 'SparkRuntimeServerless',\n});\n\nconst executionRole = dsf.processing.SparkEmrServerlessRuntime.createExecutionRole(this, 'ExecutionRole')\n\nconst submitterRole = new Role (this, 'SubmitterRole', {\n  assumedBy: new AccountRootPrincipal(),\n});\n\ndsf.processing.SparkEmrServerlessRuntime.grantStartJobExecution(submitterRole, [executionRole.roleArn], ['EMR-serverless-app-ID']);","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.processing.SparkEmrServerlessRuntime"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.processing","@cdklabs/aws-data-solutions-framework.processing.SparkEmrServerlessRuntime","@cdklabs/aws-data-solutions-framework.processing.SparkEmrServerlessRuntime#createExecutionRole","@cdklabs/aws-data-solutions-framework.processing.SparkEmrServerlessRuntime#grantStartJobExecution","@cdklabs/aws-data-solutions-framework.processing.SparkEmrServerlessRuntimeProps","aws-cdk-lib.aws_iam.AccountRootPrincipal","aws-cdk-lib.aws_iam.IPrincipal","aws-cdk-lib.aws_iam.IRole","aws-cdk-lib.aws_iam.IRole#roleArn","aws-cdk-lib.aws_iam.Role","aws-cdk-lib.aws_iam.RoleProps","constructs.Construct"],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\nimport { Role, AccountRootPrincipal } from 'aws-cdk-lib/aws-iam';\n/// !hide\n// Hoisted imports ended before !hide marker above\nimport { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\n\n\nconst serverlessRuntime = new dsf.processing.SparkEmrServerlessRuntime(this, 'EmrApp', {\n  name: 'SparkRuntimeServerless',\n});\n\nconst executionRole = dsf.processing.SparkEmrServerlessRuntime.createExecutionRole(this, 'ExecutionRole')\n\nconst submitterRole = new Role (this, 'SubmitterRole', {\n  assumedBy: new AccountRootPrincipal(),\n});\n\ndsf.processing.SparkEmrServerlessRuntime.grantStartJobExecution(submitterRole, [executionRole.roleArn], ['EMR-serverless-app-ID']);\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":6,"80":23,"110":3,"209":2,"210":2,"211":9,"213":2,"214":3,"243":3,"244":1,"260":3,"261":3,"272":1,"273":1,"275":1,"276":2,"303":2,"307":1},"fqnsFingerprint":"18f223c50c89fcdcdc1f21fd88007748aff6ab5d4e9ab2ace653dc746bcf11f8"},"7de6e0afce90750d79022a8dcc34451b9a1488e57d5265366ce3ad35ffb3f363":{"translations":{"python":{"source":"bucket = dsf.storage.AccessLogsBucket(self, \"AccessLogsBucket\")","version":"2"},"csharp":{"source":"var bucket = new Storage.AccessLogsBucket(this, \"AccessLogsBucket\");","version":"1"},"java":{"source":"AccessLogsBucket bucket = new AccessLogsBucket(this, \"AccessLogsBucket\");","version":"1"},"go":{"source":"bucket := storage.NewAccessLogsBucket(this, jsii.String(\"AccessLogsBucket\"))","version":"1"},"$":{"source":"const bucket = new dsf.storage.AccessLogsBucket(this, 'AccessLogsBucket')","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.storage.AccessLogsBucket"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.storage","@cdklabs/aws-data-solutions-framework.storage.AccessLogsBucket","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\nconst bucket = new dsf.storage.AccessLogsBucket(this, 'AccessLogsBucket')\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":1,"80":4,"110":1,"211":2,"214":1,"243":1,"260":1,"261":1},"fqnsFingerprint":"8475c2437d700e12628d69ae4af81bc03e0e63e2991992fa5c8a105ad449bbcc"},"99895b20046fa3be8b580478c05d78b0ce8e8b79fff201089bf734742ab886d0":{"translations":{"python":{"source":"from aws_cdk.aws_kms import Key\n\n\n# Set context value for global data removal policy (or set in cdk.json).\nself.node.set_context(\"@data-solutions-framework-on-aws/removeDataOnDestroy\", True)\n\nencryption_key = Key(self, \"DataKey\",\n    removal_policy=cdk.RemovalPolicy.DESTROY,\n    enable_key_rotation=True\n)\n\ndsf.storage.AnalyticsBucket(self, \"MyAnalyticsBucket\",\n    encryption_key=encryption_key,\n    removal_policy=cdk.RemovalPolicy.DESTROY\n)","version":"2"},"csharp":{"source":"using Amazon.CDK.AWS.KMS;\n\n\n// Set context value for global data removal policy (or set in cdk.json).\nNode.SetContext(\"@data-solutions-framework-on-aws/removeDataOnDestroy\", true);\n\nvar encryptionKey = new Key(this, \"DataKey\", new KeyProps {\n    RemovalPolicy = RemovalPolicy.DESTROY,\n    EnableKeyRotation = true\n});\n\nnew Storage.AnalyticsBucket(this, \"MyAnalyticsBucket\", new AnalyticsBucketProps {\n    EncryptionKey = encryptionKey,\n    RemovalPolicy = RemovalPolicy.DESTROY\n});","version":"1"},"java":{"source":"import software.amazon.awscdk.services.kms.Key;\n\n\n// Set context value for global data removal policy (or set in cdk.json).\nthis.node.setContext(\"@data-solutions-framework-on-aws/removeDataOnDestroy\", true);\n\nKey encryptionKey = Key.Builder.create(this, \"DataKey\")\n        .removalPolicy(RemovalPolicy.DESTROY)\n        .enableKeyRotation(true)\n        .build();\n\nAnalyticsBucket.Builder.create(this, \"MyAnalyticsBucket\")\n        .encryptionKey(encryptionKey)\n        .removalPolicy(RemovalPolicy.DESTROY)\n        .build();","version":"1"},"go":{"source":"import \"github.com/aws/aws-cdk-go/awscdk\"\n\n\n// Set context value for global data removal policy (or set in cdk.json).\nthis.Node.SetContext(jsii.String(\"@data-solutions-framework-on-aws/removeDataOnDestroy\"), jsii.Boolean(true))\n\nencryptionKey := awscdk.NewKey(this, jsii.String(\"DataKey\"), &KeyProps{\n\tRemovalPolicy: cdk.RemovalPolicy_DESTROY,\n\tEnableKeyRotation: jsii.Boolean(true),\n})\n\nstorage.NewAnalyticsBucket(this, jsii.String(\"MyAnalyticsBucket\"), &AnalyticsBucketProps{\n\tEncryptionKey: EncryptionKey,\n\tRemovalPolicy: cdk.RemovalPolicy_DESTROY,\n})","version":"1"},"$":{"source":"import { Key } from 'aws-cdk-lib/aws-kms';\n\n// Set context value for global data removal policy (or set in cdk.json).\nthis.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\nconst encryptionKey = new Key(this, 'DataKey', {\n removalPolicy: cdk.RemovalPolicy.DESTROY,\n enableKeyRotation: true,\n});\n\nnew dsf.storage.AnalyticsBucket(this, 'MyAnalyticsBucket', {\n encryptionKey,\n removalPolicy: cdk.RemovalPolicy.DESTROY,\n});","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.storage.AnalyticsBucket"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.storage","@cdklabs/aws-data-solutions-framework.storage.AnalyticsBucket","@cdklabs/aws-data-solutions-framework.storage.AnalyticsBucketProps","aws-cdk-lib.RemovalPolicy","aws-cdk-lib.RemovalPolicy#DESTROY","aws-cdk-lib.aws_kms.IKey","aws-cdk-lib.aws_kms.Key","aws-cdk-lib.aws_kms.KeyProps","constructs.Construct","constructs.Construct#node","constructs.Node#setContext"],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\nimport { Key } from 'aws-cdk-lib/aws-kms';\n/// !hide\n// Hoisted imports ended before !hide marker above\nimport { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\n\n\n// Set context value for global data removal policy (or set in cdk.json).\nthis.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\nconst encryptionKey = new Key(this, 'DataKey', {\n removalPolicy: cdk.RemovalPolicy.DESTROY,\n enableKeyRotation: true,\n});\n\nnew dsf.storage.AnalyticsBucket(this, 'MyAnalyticsBucket', {\n encryptionKey,\n removalPolicy: cdk.RemovalPolicy.DESTROY,\n});\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":4,"80":18,"110":3,"112":2,"210":2,"211":8,"213":1,"214":2,"243":1,"244":2,"260":1,"261":1,"272":1,"273":1,"275":1,"276":1,"303":3,"304":1,"307":1},"fqnsFingerprint":"f8e7b6a049ef3dac720e56919dff7618f68b7acb23741455868f8f5b32d48eda"},"32ba069edc49ba8e5d977470c4e1c0e5957154f1a037ebcb0f77768b316ea061":{"translations":{"python":{"source":"# Set the context value for global data removal policy\nself.node.set_context(\"@data-solutions-framework-on-aws/removeDataOnDestroy\", True)\n\ndsf.storage.DataLakeStorage(self, \"MyDataLakeStorage\",\n    bronze_bucket_name=\"my-bronze\",\n    bronze_bucket_infrequent_access_delay=90,\n    bronze_bucket_archive_delay=180,\n    silver_bucket_name=\"my-silver\",\n    silver_bucket_infrequent_access_delay=180,\n    silver_bucket_archive_delay=360,\n    gold_bucket_name=\"my-gold\",\n    gold_bucket_infrequent_access_delay=180,\n    gold_bucket_archive_delay=360,\n    removal_policy=cdk.RemovalPolicy.DESTROY\n)","version":"2"},"csharp":{"source":"// Set the context value for global data removal policy\nNode.SetContext(\"@data-solutions-framework-on-aws/removeDataOnDestroy\", true);\n\nnew Storage.DataLakeStorage(this, \"MyDataLakeStorage\", new DataLakeStorageProps {\n    BronzeBucketName = \"my-bronze\",\n    BronzeBucketInfrequentAccessDelay = 90,\n    BronzeBucketArchiveDelay = 180,\n    SilverBucketName = \"my-silver\",\n    SilverBucketInfrequentAccessDelay = 180,\n    SilverBucketArchiveDelay = 360,\n    GoldBucketName = \"my-gold\",\n    GoldBucketInfrequentAccessDelay = 180,\n    GoldBucketArchiveDelay = 360,\n    RemovalPolicy = RemovalPolicy.DESTROY\n});","version":"1"},"java":{"source":"// Set the context value for global data removal policy\nthis.node.setContext(\"@data-solutions-framework-on-aws/removeDataOnDestroy\", true);\n\nDataLakeStorage.Builder.create(this, \"MyDataLakeStorage\")\n        .bronzeBucketName(\"my-bronze\")\n        .bronzeBucketInfrequentAccessDelay(90)\n        .bronzeBucketArchiveDelay(180)\n        .silverBucketName(\"my-silver\")\n        .silverBucketInfrequentAccessDelay(180)\n        .silverBucketArchiveDelay(360)\n        .goldBucketName(\"my-gold\")\n        .goldBucketInfrequentAccessDelay(180)\n        .goldBucketArchiveDelay(360)\n        .removalPolicy(RemovalPolicy.DESTROY)\n        .build();","version":"1"},"go":{"source":"// Set the context value for global data removal policy\nthis.Node.SetContext(jsii.String(\"@data-solutions-framework-on-aws/removeDataOnDestroy\"), jsii.Boolean(true))\n\nstorage.NewDataLakeStorage(this, jsii.String(\"MyDataLakeStorage\"), &DataLakeStorageProps{\n\tBronzeBucketName: jsii.String(\"my-bronze\"),\n\tBronzeBucketInfrequentAccessDelay: jsii.Number(90),\n\tBronzeBucketArchiveDelay: jsii.Number(180),\n\tSilverBucketName: jsii.String(\"my-silver\"),\n\tSilverBucketInfrequentAccessDelay: jsii.Number(180),\n\tSilverBucketArchiveDelay: jsii.Number(360),\n\tGoldBucketName: jsii.String(\"my-gold\"),\n\tGoldBucketInfrequentAccessDelay: jsii.Number(180),\n\tGoldBucketArchiveDelay: jsii.Number(360),\n\tRemovalPolicy: cdk.RemovalPolicy_DESTROY,\n})","version":"1"},"$":{"source":"// Set the context value for global data removal policy\nthis.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\nnew dsf.storage.DataLakeStorage(this, 'MyDataLakeStorage', {\n bronzeBucketName: 'my-bronze',\n bronzeBucketInfrequentAccessDelay: 90,\n bronzeBucketArchiveDelay: 180,\n silverBucketName: 'my-silver',\n silverBucketInfrequentAccessDelay: 180,\n silverBucketArchiveDelay: 360,\n goldBucketName: 'my-gold',\n goldBucketInfrequentAccessDelay: 180,\n goldBucketArchiveDelay: 360,\n removalPolicy: cdk.RemovalPolicy.DESTROY,\n});","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.storage.DataLakeStorage"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.storage","@cdklabs/aws-data-solutions-framework.storage.DataLakeStorage","@cdklabs/aws-data-solutions-framework.storage.DataLakeStorageProps","aws-cdk-lib.RemovalPolicy","aws-cdk-lib.RemovalPolicy#DESTROY","constructs.Construct","constructs.Construct#node","constructs.Node#setContext"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\n// Set the context value for global data removal policy\nthis.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true);\n\nnew dsf.storage.DataLakeStorage(this, 'MyDataLakeStorage', {\n bronzeBucketName: 'my-bronze',\n bronzeBucketInfrequentAccessDelay: 90,\n bronzeBucketArchiveDelay: 180,\n silverBucketName: 'my-silver',\n silverBucketInfrequentAccessDelay: 180,\n silverBucketArchiveDelay: 360,\n goldBucketName: 'my-gold',\n goldBucketInfrequentAccessDelay: 180,\n goldBucketArchiveDelay: 360,\n removalPolicy: cdk.RemovalPolicy.DESTROY,\n});\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"9":6,"11":5,"80":18,"110":2,"112":1,"210":1,"211":6,"213":1,"214":1,"244":2,"303":10},"fqnsFingerprint":"c9013bdfd36e210bbaf4f1b0a647e9362ee6196bc1e62ae0e3761d6ff841d48e"},"d2ff49c2b7d7bf1ee06acadfbf6ae0e9a89387f8e4b46a2a83fd99a51fcb6d22":{"translations":{"python":{"source":"msk = dsf.streaming.MskProvisioned(self, \"cluster\")","version":"2"},"csharp":{"source":"var msk = new Streaming.MskProvisioned(this, \"cluster\");","version":"1"},"java":{"source":"MskProvisioned msk = new MskProvisioned(this, \"cluster\");","version":"1"},"go":{"source":"msk := streaming.NewMskProvisioned(this, jsii.String(\"cluster\"))","version":"1"},"$":{"source":"const msk = new dsf.streaming.MskProvisioned(this, 'cluster');","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.streaming.MskProvisioned"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.streaming","@cdklabs/aws-data-solutions-framework.streaming.MskProvisioned","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\nconst msk = new dsf.streaming.MskProvisioned(this, 'cluster');\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":1,"80":4,"110":1,"211":2,"214":1,"243":1,"260":1,"261":1},"fqnsFingerprint":"e307e84ae245f41ed91a963f91c49620cca5868cfbaf75b531daea7776db60b6"},"eea61ed07b2d463ae495a9bc1768ba274da1fc24eb1421bc4dc8c3f96e837800":{"translations":{"python":{"source":"msk = dsf.streaming.MskServerless(self, \"cluster\")","version":"2"},"csharp":{"source":"var msk = new Streaming.MskServerless(this, \"cluster\");","version":"1"},"java":{"source":"MskServerless msk = new MskServerless(this, \"cluster\");","version":"1"},"go":{"source":"msk := streaming.NewMskServerless(this, jsii.String(\"cluster\"))","version":"1"},"$":{"source":"const msk = new dsf.streaming.MskServerless(this, 'cluster');","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.streaming.MskServerless"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.streaming","@cdklabs/aws-data-solutions-framework.streaming.MskServerless","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\nconst msk = new dsf.streaming.MskServerless(this, 'cluster');\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":1,"80":4,"110":1,"211":2,"214":1,"243":1,"260":1,"261":1},"fqnsFingerprint":"9fc089fb31ca428508f380397cd82aef668913105758e85ab56984760f53e900"},"56f34ee0364b7b99cbe90e9f6922da5acb507d4dc7a200d2b8a3638865bd421a":{"translations":{"python":{"source":"class MyApplicationStack(cdk.Stack):\n    def __init__(self, scope, id, *, stage, description=None, env=None, stackName=None, tags=None, notificationArns=None, synthesizer=None, terminationProtection=None, analyticsReporting=None, crossRegionReferences=None, permissionsBoundary=None, suppressTemplateIndentation=None):\n        super().__init__(scope, id, stage=stage, description=description, env=env, stackName=stackName, tags=tags, notificationArns=notificationArns, synthesizer=synthesizer, terminationProtection=terminationProtection, analyticsReporting=analyticsReporting, crossRegionReferences=crossRegionReferences, permissionsBoundary=permissionsBoundary, suppressTemplateIndentation=suppressTemplateIndentation)\n\nclass MyApplicationStackFactory(dsf.utils.ApplicationStackFactory):\n    def create_stack(self, scope, stage):\n        return MyApplicationStack(scope, \"MyApplication\",\n            stage=stage\n        )","version":"2"},"csharp":{"source":"class MyApplicationStackProps : StackProps\n{\n    public CICDStage Stage { get; set; }\n}\n\nclass MyApplicationStack : Stack\n{\n    public MyApplicationStack(Construct scope, string id, MyApplicationStackProps? props=null) : base(scope, id, props)\n    {\n    }\n}\n\nclass MyApplicationStackFactory : Utils.ApplicationStackFactory\n{\n    public Stack CreateStack(Construct scope, CICDStage stage)\n    {\n        return new MyApplicationStack(scope, \"MyApplication\", (MyApplicationStackProps)new MyApplicationStackProps {\n            Stage = stage\n        });\n    }\n}","version":"1"},"java":{"source":"public class MyApplicationStackProps extends StackProps {\n    private CICDStage stage;\n    public CICDStage getStage() {\n        return this.stage;\n    }\n    public MyApplicationStackProps stage(CICDStage stage) {\n        this.stage = stage;\n        return this;\n    }\n}\n\npublic class MyApplicationStack extends Stack {\n    public MyApplicationStack(Construct scope, String id) {\n        this(scope, id, null);\n    }\n\n    public MyApplicationStack(Construct scope, String id, MyApplicationStackProps props) {\n        super(scope, id, props);\n    }\n}\n\npublic class MyApplicationStackFactory extends ApplicationStackFactory {\n    public Stack createStack(Construct scope, CICDStage stage) {\n        return new MyApplicationStack(scope, \"MyApplication\", (MyApplicationStackProps)new MyApplicationStackProps()\n                .stage(stage)\n                );\n    }\n}","version":"1"},"go":{"source":"type myApplicationStackProps struct {\n\tstackProps\n\tstage cICDStage\n}\n\ntype myApplicationStack struct {\n\tstack\n}\n\nfunc newMyApplicationStack(scope construct, id *string, props myApplicationStackProps) *myApplicationStack {\n\tthis := &myApplicationStack{}\n\tcdk.NewStack_Override(this, scope, id, props)\n\treturn this\n}\n\ntype myApplicationStackFactory struct {\n\tapplicationStackFactory\n}\n\nfunc (this *myApplicationStackFactory) createStack(scope construct, stage cICDStage) stack {\n\treturn NewMyApplicationStack(*scope, jsii.String(\"MyApplication\"), &myApplicationStackProps{\n\t\tstage: stage,\n\t}.(myApplicationStackProps))\n}","version":"1"},"$":{"source":"interface MyApplicationStackProps extends cdk.StackProps {\n  readonly stage: dsf.utils.CICDStage;\n}\n\nclass MyApplicationStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, props?: MyApplicationStackProps) {\n    super(scope, id, props);\n    // stack logic goes here... and can be customized using props.stage\n  }\n}\n\nclass MyApplicationStackFactory extends dsf.utils.ApplicationStackFactory {\n  createStack(scope: Construct, stage: dsf.utils.CICDStage): cdk.Stack {\n    return new MyApplicationStack(scope, 'MyApplication', {\n      stage: stage\n    } as MyApplicationStackProps);\n  }\n}","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.utils.ApplicationStackFactory"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.utils.CICDStage","aws-cdk-lib.Stack","aws-cdk-lib.StackProps","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\n// Code snippet begins after !show marker below\n/// !show\ninterface MyApplicationStackProps extends cdk.StackProps {\n  readonly stage: dsf.utils.CICDStage;\n}\n\nclass MyApplicationStack extends cdk.Stack {\n  constructor(scope: Construct, id: string, props?: MyApplicationStackProps) {\n    super(scope, id, props);\n    // stack logic goes here... and can be customized using props.stage\n  }\n}\n\nclass MyApplicationStackFactory extends dsf.utils.ApplicationStackFactory {\n  createStack(scope: Construct, stage: dsf.utils.CICDStage): cdk.Stack {\n    return new MyApplicationStack(scope, 'MyApplication', {\n      stage: stage\n    } as MyApplicationStackProps);\n  }\n}\n/// !hide\n// Code snippet ended before !hide marker above","syntaxKindCounter":{"11":1,"58":1,"80":36,"108":1,"148":1,"154":1,"166":5,"169":5,"171":1,"174":1,"176":1,"183":7,"210":1,"211":4,"213":1,"214":1,"233":3,"234":1,"241":2,"244":1,"253":1,"263":2,"264":1,"298":3,"303":1},"fqnsFingerprint":"288dd1ae0d8bd6bf81ea759a70606806791445fd837b7bdefaa892bb9f897567"},"98df1167f23e0c1053bbdf8ae561bd3a530534c7225003e685580702069b5e29":{"translations":{"python":{"source":"slr = dsf.utils.CreateServiceLinkedRole(self, \"CreateSLR\")\nslr.create(dsf.utils.ServiceLinkedRoleService.REDSHIFT)","version":"2"},"csharp":{"source":"var slr = new Utils.CreateServiceLinkedRole(this, \"CreateSLR\");\nslr.Create(Utils.ServiceLinkedRoleService.REDSHIFT);","version":"1"},"java":{"source":"CreateServiceLinkedRole slr = new CreateServiceLinkedRole(this, \"CreateSLR\");\nslr.create(ServiceLinkedRoleService.REDSHIFT);","version":"1"},"go":{"source":"slr := utils.NewCreateServiceLinkedRole(this, jsii.String(\"CreateSLR\"))\nslr.Create(utils.ServiceLinkedRoleService_REDSHIFT())","version":"1"},"$":{"source":"const slr = new dsf.utils.CreateServiceLinkedRole(this, 'CreateSLR')\nslr.create(dsf.utils.ServiceLinkedRoleService.REDSHIFT)","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.utils.CreateServiceLinkedRole"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.utils","@cdklabs/aws-data-solutions-framework.utils.CreateServiceLinkedRole","@cdklabs/aws-data-solutions-framework.utils.CreateServiceLinkedRole#create","@cdklabs/aws-data-solutions-framework.utils.ServiceLinkedRoleService","@cdklabs/aws-data-solutions-framework.utils.ServiceLinkedRoleService#REDSHIFT","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\nconst slr = new dsf.utils.CreateServiceLinkedRole(this, 'CreateSLR')\nslr.create(dsf.utils.ServiceLinkedRoleService.REDSHIFT)\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":1,"80":10,"110":1,"211":6,"213":1,"214":1,"243":1,"244":1,"260":1,"261":1},"fqnsFingerprint":"c670f14ac7793717b7042d818b3aec9ae3e71d1b622abca249804a8f9b3a5215"},"0d7261e6f3e4bb53c29183d967c71586a898e63f4b9a07aea02bbe47cf025dce":{"translations":{"python":{"source":"vpc = dsf.utils.DataVpc(self, \"DataVpc\",\n    vpc_cidr=\"10.0.0.0/16\"\n)\n\nvpc.tag_vpc(\"Name\", \"My VPC\")","version":"2"},"csharp":{"source":"var vpc = new Utils.DataVpc(this, \"DataVpc\", new DataVpcProps {\n    VpcCidr = \"10.0.0.0/16\"\n});\n\nvpc.TagVpc(\"Name\", \"My VPC\");","version":"1"},"java":{"source":"DataVpc vpc = DataVpc.Builder.create(this, \"DataVpc\")\n        .vpcCidr(\"10.0.0.0/16\")\n        .build();\n\nvpc.tagVpc(\"Name\", \"My VPC\");","version":"1"},"go":{"source":"vpc := utils.NewDataVpc(this, jsii.String(\"DataVpc\"), &DataVpcProps{\n\tVpcCidr: jsii.String(\"10.0.0.0/16\"),\n})\n\nvpc.TagVpc(jsii.String(\"Name\"), jsii.String(\"My VPC\"))","version":"1"},"$":{"source":"const vpc = new dsf.utils.DataVpc(this, 'DataVpc', {\n  vpcCidr: '10.0.0.0/16',\n});\n\nvpc.tagVpc('Name', 'My VPC');","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.utils.DataVpc"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.utils","@cdklabs/aws-data-solutions-framework.utils.DataVpc","@cdklabs/aws-data-solutions-framework.utils.DataVpc#tagVpc","@cdklabs/aws-data-solutions-framework.utils.DataVpcProps","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\nconst vpc = new dsf.utils.DataVpc(this, 'DataVpc', {\n  vpcCidr: '10.0.0.0/16',\n});\n\nvpc.tagVpc('Name', 'My VPC');\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":4,"80":7,"110":1,"210":1,"211":3,"213":1,"214":1,"243":1,"244":1,"260":1,"261":1,"303":1},"fqnsFingerprint":"8a57493b346ce0f1d27667df8fa7f90d1b655d474d3dc52e10beb9e3e1070596"},"ad6f14e4abf68d9936acddda226f7189d5a363c42afe828e90312199798decb9":{"translations":{"python":{"source":"from aws_cdk.aws_s3 import Bucket\n\n\nsource_bucket = Bucket.from_bucket_name(self, \"SourceBucket\", \"nyc-tlc\")\nbucket_name = f\"test-{this.region}-{this.account}-{dsf.utils.Utils.generateUniqueHash(this, 'TargetBucket')}\"\n\ntarget_bucket = Bucket(self, \"TargetBucket\")\n\ndsf.utils.S3DataCopy(self, \"S3DataCopy\",\n    source_bucket=source_bucket,\n    source_bucket_prefix=\"trip data/\",\n    source_bucket_region=\"us-east-1\",\n    target_bucket=target_bucket\n)","version":"2"},"csharp":{"source":"using Amazon.CDK.AWS.S3;\n\n\nvar sourceBucket = Bucket.FromBucketName(this, \"SourceBucket\", \"nyc-tlc\");\nvar bucketName = $\"test-{this.region}-{this.account}-{dsf.utils.Utils.generateUniqueHash(this, 'TargetBucket')}\";\n\nvar targetBucket = new Bucket(this, \"TargetBucket\");\n\nnew Utils.S3DataCopy(this, \"S3DataCopy\", new S3DataCopyProps {\n    SourceBucket = sourceBucket,\n    SourceBucketPrefix = \"trip data/\",\n    SourceBucketRegion = \"us-east-1\",\n    TargetBucket = targetBucket\n});","version":"1"},"java":{"source":"import software.amazon.awscdk.services.s3.Bucket;\n\n\nIBucket sourceBucket = Bucket.fromBucketName(this, \"SourceBucket\", \"nyc-tlc\");\nString bucketName = String.format(\"test-%s-%s-%s\", this.region, this.account, Utils.generateUniqueHash(this, \"TargetBucket\"));\n\nBucket targetBucket = new Bucket(this, \"TargetBucket\");\n\nS3DataCopy.Builder.create(this, \"S3DataCopy\")\n        .sourceBucket(sourceBucket)\n        .sourceBucketPrefix(\"trip data/\")\n        .sourceBucketRegion(\"us-east-1\")\n        .targetBucket(targetBucket)\n        .build();","version":"1"},"go":{"source":"import \"github.com/aws/aws-cdk-go/awscdk\"\n\n\nsourceBucket := awscdk.Bucket_FromBucketName(this, jsii.String(\"SourceBucket\"), jsii.String(\"nyc-tlc\"))\nbucketName := fmt.Sprintf(\"test-%v-%v-%v\", this.Region, this.Account, utils.Utils_GenerateUniqueHash(this, jsii.String(\"TargetBucket\")))\n\ntargetBucket := awscdk.NewBucket(this, jsii.String(\"TargetBucket\"))\n\nutils.NewS3DataCopy(this, jsii.String(\"S3DataCopy\"), &S3DataCopyProps{\n\tSourceBucket: SourceBucket,\n\tSourceBucketPrefix: jsii.String(\"trip data/\"),\n\tSourceBucketRegion: jsii.String(\"us-east-1\"),\n\tTargetBucket: TargetBucket,\n})","version":"1"},"$":{"source":"import { Bucket } from 'aws-cdk-lib/aws-s3';\n\nconst sourceBucket = Bucket.fromBucketName(this, 'SourceBucket', 'nyc-tlc');\nconst bucketName = `test-${this.region}-${this.account}-${dsf.utils.Utils.generateUniqueHash(this, 'TargetBucket')}`;\n\nconst targetBucket = new Bucket(this, 'TargetBucket');\n\nnew dsf.utils.S3DataCopy(this, 'S3DataCopy', {\n  sourceBucket,\n  sourceBucketPrefix: 'trip data/',\n  sourceBucketRegion: 'us-east-1',\n  targetBucket,\n});","version":"0"}},"location":{"api":{"api":"type","fqn":"@cdklabs/aws-data-solutions-framework.utils.S3DataCopy"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@cdklabs/aws-data-solutions-framework.utils","@cdklabs/aws-data-solutions-framework.utils.S3DataCopy","@cdklabs/aws-data-solutions-framework.utils.S3DataCopyProps","aws-cdk-lib.aws_s3.Bucket","aws-cdk-lib.aws_s3.Bucket#fromBucketName","aws-cdk-lib.aws_s3.IBucket","constructs.Construct"],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\nimport { Bucket } from 'aws-cdk-lib/aws-s3';\n/// !hide\n// Hoisted imports ended before !hide marker above\nimport { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from '@cdklabs/aws-data-solutions-framework';\n\nclass MyStack extends cdk.Stack {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    // Code snippet begins after !show marker below\n/// !show\n\n\nconst sourceBucket = Bucket.fromBucketName(this, 'SourceBucket', 'nyc-tlc');\nconst bucketName = `test-${this.region}-${this.account}-${dsf.utils.Utils.generateUniqueHash(this, 'TargetBucket')}`;\n\nconst targetBucket = new Bucket(this, 'TargetBucket');\n\nnew dsf.utils.S3DataCopy(this, 'S3DataCopy', {\n  sourceBucket,\n  sourceBucketPrefix: 'trip data/',\n  sourceBucketRegion: 'us-east-1',\n  targetBucket,\n});\n/// !hide\n// Code snippet ended before !hide marker above\n  }\n}","syntaxKindCounter":{"11":8,"16":1,"17":2,"18":1,"80":20,"110":6,"210":1,"211":8,"213":2,"214":2,"228":1,"239":3,"243":3,"244":1,"260":3,"261":3,"272":1,"273":1,"275":1,"276":1,"303":2,"304":2,"307":1},"fqnsFingerprint":"d723ad60f873ceddfe183e6855503cb2b5b20d9ca45c1a6578fbe4b240d22674"}}}