{"version":"2","toolVersion":"5.3.4","snippets":{"727d79511377f9b805f33bf606097292d44439d2ec914fae717a42fb77c3f21e":{"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":"aws-dsf.consumption"},"field":{"field":"markdown","line":16}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.Stack","aws-dsf.consumption","aws-dsf.consumption.RedshiftServerlessNamespace","aws-dsf.consumption.RedshiftServerlessNamespaceProps","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":"7b42915089791a62796bb08c01067e3b7133592dee36d0c7eda3f45a1056330a"},"ad7d48233a44d3f1a0ee7b43f1642132b22ef0e11ac68007faa6411c97fa6e9d":{"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":"aws-dsf.consumption"},"field":{"field":"markdown","line":37}},"didCompile":true,"fqnsReferenced":["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","aws-dsf.consumption","aws-dsf.consumption.RedshiftServerlessNamespace","aws-dsf.consumption.RedshiftServerlessNamespaceProps","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":"34ed05bc77ee9c78deee6b7b4eb6281da87abb94f6ad620d7e7713132b2ab5e5"},"fbe62c6ed5b2d91f9f3ebf5101a8ed9d5dd1e1aaa09d88c3f7d6ec82e7226dd1":{"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":"aws-dsf.consumption"},"field":{"field":"markdown","line":75}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.Stack","aws-dsf.consumption","aws-dsf.consumption.RedshiftServerlessNamespace","aws-dsf.consumption.RedshiftServerlessNamespaceProps","aws-dsf.consumption.RedshiftServerlessWorkgroup","aws-dsf.consumption.RedshiftServerlessWorkgroupProps","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":"0aba5543a016133aa4a35b98072fc2def705a763137a963f8a3710695567cc20"},"74fbff0c21580e7f88d577a5639fbbd5a4fa7344187bf2ea417dc5ed25588eb4":{"translations":{"python":{"source":"workgroup = dsf.consumption.RedshiftServerlessWorkgroup(self, \"DefaultRedshiftServerlessWorkgroup\",\n name=\"default\",\n namespace=namespace\n)\n\n# Initialize the Redshift Data API\ndata_access = workgroup.access_data(\"DataApi\", True)\n\n# Run a custom SQL to create a customer table\ncreate_table = data_access.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 = data_access.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 = data_access.create_db_role(\"EngineeringRole\", \"defaultdb\", \"engineering\")\n\n# Grant the engineering role full access to the public schema in the defaultdb\ndb_schema = data_access.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// Initialize the Redshift Data API\nvar dataAccess = workgroup.AccessData(\"DataApi\", true);\n\n// Run a custom SQL to create a customer table\nvar createTable = dataAccess.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 = dataAccess.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 = dataAccess.CreateDbRole(\"EngineeringRole\", \"defaultdb\", \"engineering\");\n\n// Grant the engineering role full access to the public schema in the defaultdb\nvar dbSchema = dataAccess.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// Initialize the Redshift Data API\nRedshiftData dataAccess = workgroup.accessData(\"DataApi\", true);\n\n// Run a custom SQL to create a customer table\nCustomResource createTable = dataAccess.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 = dataAccess.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 = dataAccess.createDbRole(\"EngineeringRole\", \"defaultdb\", \"engineering\");\n\n// Grant the engineering role full access to the public schema in the defaultdb\nCustomResource dbSchema = dataAccess.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// Initialize the Redshift Data API\ndataAccess := workgroup.AccessData(jsii.String(\"DataApi\"), jsii.Boolean(true))\n\n// Run a custom SQL to create a customer table\ncreateTable := dataAccess.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 := dataAccess.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 := dataAccess.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 := dataAccess.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 // Initialize the Redshift Data API\n const dataAccess = workgroup.accessData('DataApi', true)\n\n // Run a custom SQL to create a customer table\n const createTable = dataAccess.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 = dataAccess.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 = dataAccess.createDbRole('EngineeringRole', 'defaultdb', 'engineering');\n\n // Grant the engineering role full access to the public schema in the defaultdb\n const dbSchema = dataAccess.grantDbSchemaToRole('EngineeringGrant', 'defaultdb', 'public', 'engineering');\n\n // Enforce dependencies\n dbSchema.node.addDependency(dbRole);","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"aws-dsf.consumption"},"field":{"field":"markdown","line":104}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.CustomResource","aws-cdk-lib.aws_iam.IPrincipal","aws-cdk-lib.aws_s3.IBucket","aws-dsf.consumption","aws-dsf.consumption.RedshiftData","aws-dsf.consumption.RedshiftData#createDbRole","aws-dsf.consumption.RedshiftData#grantDbSchemaToRole","aws-dsf.consumption.RedshiftData#ingestData","aws-dsf.consumption.RedshiftData#runCustomSQL","aws-dsf.consumption.RedshiftServerlessNamespace","aws-dsf.consumption.RedshiftServerlessWorkgroup","aws-dsf.consumption.RedshiftServerlessWorkgroup#accessData","aws-dsf.consumption.RedshiftServerlessWorkgroupProps","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 // Initialize the Redshift Data API\n const dataAccess = workgroup.accessData('DataApi', true)\n\n // Run a custom SQL to create a customer table\n const createTable = dataAccess.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 = dataAccess.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 = dataAccess.createDbRole('EngineeringRole', 'defaultdb', 'engineering');\n\n // Grant the engineering role full access to the public schema in the defaultdb\n const dbSchema = dataAccess.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":18,"15":1,"80":31,"110":1,"112":1,"210":1,"211":11,"213":7,"214":1,"243":6,"244":2,"260":6,"261":6,"303":2},"fqnsFingerprint":"205998d9a82108fcc96bba6cc928522fed42bbf3f1bc71026c5e0ea92640ff31"},"2a14abebaa7ca0154562ca224e2d05223572865157034fde8d4aea2945c2316c":{"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":"aws-dsf.consumption"},"field":{"field":"markdown","line":150}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.Stack","aws-dsf.consumption","aws-dsf.consumption.RedshiftServerlessNamespace","aws-dsf.consumption.RedshiftServerlessNamespaceProps","aws-dsf.consumption.RedshiftServerlessWorkgroup","aws-dsf.consumption.RedshiftServerlessWorkgroup#catalogTables","aws-dsf.consumption.RedshiftServerlessWorkgroupProps","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":"57663e1040e8ae34743a4da408aca35a1dc6e46dafa086976540d7d6f823b8cf"},"44a7454486ad84adb441a3133cbd1adb719adfcb79be7c0db350c12f88c9ebf2":{"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":"aws-dsf.consumption"},"field":{"field":"markdown","line":183}},"didCompile":true,"fqnsReferenced":["aws-dsf.consumption","aws-dsf.consumption.AthenaWorkGroup","aws-dsf.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":"90bf3fcf95bd062dee55dd1c85ebb9dd4d194f8093a6636e8bcaef3c9dc6cf22"},"605cb528732f844c0ced683caaf56556735e906c9177e8aaae55a4a476694eab":{"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":"aws-dsf.consumption"},"field":{"field":"markdown","line":202}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.aws_kms.IKey","aws-cdk-lib.aws_s3.IBucket","aws-dsf.consumption","aws-dsf.consumption.AthenaWorkGroup","aws-dsf.consumption.AthenaWorkgroupProps","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":"58549457f6eae3ab60e5e821029a302ce359a409c4d4838e8c66db07402ac1bd"},"e4043a3b580ad4a2352c32d83910970543954bab181f20bf553a51c53644849d":{"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":"aws-dsf.consumption"},"field":{"field":"markdown","line":222}},"didCompile":true,"fqnsReferenced":["aws-dsf.consumption","aws-dsf.consumption.AthenaWorkGroup","aws-dsf.consumption.AthenaWorkgroupProps","aws-dsf.consumption.EngineVersion","aws-dsf.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":"30aa5c418f62493685a7012336425b60d71ca2d414e813a58c7c8546fb36b7bc"},"68139984573b27dd18c43e923fe48dfbb2ac0d516543dfa4c4aedc2e09a432f3":{"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":"aws-dsf.consumption"},"field":{"field":"markdown","line":236}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.Duration","aws-cdk-lib.Duration#days","aws-cdk-lib.aws_kms.IKey","aws-dsf.consumption","aws-dsf.consumption.AthenaWorkGroup","aws-dsf.consumption.AthenaWorkgroupProps","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":"94cc0d704771ce77900ef0ccc817923f47695e55356e13e20e0f3b3b3d5b52a0"},"65b271e0fe608bb3e582c6f66401c554c56dc907bf95042935394d63f7cfd817":{"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":"aws-dsf.consumption"},"field":{"field":"markdown","line":250}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.aws_iam.IPrincipal","aws-dsf.consumption","aws-dsf.consumption.AthenaWorkGroup","aws-dsf.consumption.AthenaWorkGroup#grantRunQueries","aws-dsf.consumption.AthenaWorkgroupProps","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":"98e334215d36d59be5a534639f717b34badd36735b12e66c8017a640dab6e803"},"de75f2d5f9d40992bbb4a5fd484130b29eb8bddee8c5a2fe2d7c2ff7b5fe64e6":{"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":"aws-dsf.governance"},"field":{"field":"markdown","line":21}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.Stack","aws-cdk-lib.aws_s3.Bucket","aws-cdk-lib.aws_s3.IBucket","aws-dsf.governance","aws-dsf.governance.DataCatalogDatabase","aws-dsf.governance.DataCatalogDatabaseProps","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":"db888e5ad6b0e9d43a4d659153f55108e0e58844aede786a844ab5663181d908"},"08b8ba89d37b0d5622dc5c76f99ee5b20e9e542fecc8388343986a7d52e9fe85":{"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":"aws-dsf.governance"},"field":{"field":"markdown","line":43}},"didCompile":true,"fqnsReferenced":["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","aws-dsf.governance","aws-dsf.governance.DataCatalogDatabase","aws-dsf.governance.DataCatalogDatabaseProps","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":"0760f637a7556d77d45bbca45dc270163a529736242dee25d530705e9e32d9b8"},"121dd011476dec6e9afdeb31af0ae5d59fd14660ddc3113f38f05ac86da28aee":{"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":"aws-dsf.governance"},"field":{"field":"markdown","line":79}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.Stack","aws-dsf.governance","aws-dsf.governance.DataLakeCatalog","aws-dsf.governance.DataLakeCatalogProps","aws-dsf.storage","aws-dsf.storage.DataLakeStorage","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":"c7d549fef418d92b71e2ce393ccbdea9dc9b361bace458b2955e796862303baa"},"dd580dd65daad40c299db20a201295d1009f9fc170cc2124a5548639cc2399eb":{"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":"aws-dsf.governance"},"field":{"field":"markdown","line":101}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.aws_glue.CfnCrawler.ScheduleProperty","aws-cdk-lib.aws_kms.IKey","aws-cdk-lib.aws_kms.Key","aws-dsf.governance","aws-dsf.governance.DataLakeCatalog","aws-dsf.governance.DataLakeCatalogProps","aws-dsf.storage.DataLakeStorage","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":"42e20d6acd2969827db0e14d10c5eca5c10ca77f0dbb7ac051635263f3a1b8f7"},"ab520305d2898d1ba9e3e543b0affd80018b4669c8470c5c4e8f6f5ee367a7dc":{"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 {\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":"aws-dsf.processing"},"field":{"field":"markdown","line":36}},"didCompile":true,"fqnsReferenced":["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","aws-dsf.processing","aws-dsf.processing.SparkEmrServerlessRuntime","aws-dsf.processing.SparkEmrServerlessRuntime#application","aws-dsf.processing.SparkEmrServerlessRuntime#createExecutionRole","aws-dsf.processing.SparkEmrServerlessRuntime#grantStartExecution","aws-dsf.processing.SparkEmrServerlessRuntimeProps","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":"80802bda58ed73bb22f202d2a19bd1f4cbef69c35a96f868e2bdbeed5ba3765f"},"b4c48466512d751184050a4b743178261ccdb57aa01e46ba47b05d37155cc6d7":{"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":"aws-dsf.processing"},"field":{"field":"markdown","line":86}},"didCompile":true,"fqnsReferenced":["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","aws-dsf.processing","aws-dsf.processing.SparkEmrServerlessJob","aws-dsf.processing.SparkEmrServerlessRuntime#application","aws-dsf.processing.SparkJob#stateMachine","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":"339075f9b38eb02da57d211eaa044da889f26d832f3535ed399b510d52f1cb46"},"633c956b91a0df84f3ccf53f72d08be4b0b3a2bbc56ae69a126755dc170f3a4c":{"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":"aws-dsf.processing"},"field":{"field":"markdown","line":179}},"didCompile":true,"fqnsReferenced":["aws-dsf.processing","aws-dsf.processing.PySparkApplicationPackage","aws-dsf.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":"56ba9ce7ef3538fc895fc9bf8f9128b1644325ed9d4767b51d1926217435f4b7"},"b71c50d7f471b51cfffec54ed25492f661fd8a915a39413ca074425df70e87dc":{"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":"aws-dsf.processing"},"field":{"field":"markdown","line":219}},"didCompile":true,"fqnsReferenced":["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","aws-dsf.processing","aws-dsf.processing.PySparkApplicationPackage","aws-dsf.processing.PySparkApplicationPackage#entrypointUri","aws-dsf.processing.PySparkApplicationPackageProps","aws-dsf.processing.SparkEmrServerlessJob","aws-dsf.processing.SparkEmrServerlessRuntime","aws-dsf.processing.SparkEmrServerlessRuntime#application","aws-dsf.processing.SparkEmrServerlessRuntimeProps","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":"6320fb910d2069fe92c0d7846ba1984fd28f4db724a999f8c580bf9bc69c840a"},"cad1fa6edecdbc869c380cc23ddb740764ff20f142e6e84f943557a5fd1984cf":{"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":"aws-dsf.processing"},"field":{"field":"markdown","line":304}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.Stack","aws-dsf.utils","aws-dsf.utils.CICDStage","aws-dsf.utils.CICDStage#PROD","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":"83f0e027bd57fdd36c4f76491f89291427a8dd7986e15c34ea1361b5c028a7bd"},"35c55a0810959e531cf7a8818d076c2e2bcd5d632eea7d77f29b70c0f1fa2bce":{"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 )","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 });\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 .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})\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 });\n }\n}","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"aws-dsf.processing"},"field":{"field":"markdown","line":327}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.Stack","aws-dsf.processing","aws-dsf.processing.SparkEmrCICDPipeline","aws-dsf.processing.SparkEmrCICDPipelineProps","aws-dsf.utils.ApplicationStackFactory","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';\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 });\n }\n}\n/// !hide\n\nconst app = new cdk.App();\nnew CICDPipelineStack(app, 'CICDPipelineStack');","syntaxKindCounter":{"11":2,"80":14,"95":1,"108":1,"110":1,"154":1,"169":2,"176":1,"183":1,"210":1,"211":3,"213":1,"214":2,"233":1,"241":1,"244":2,"263":1,"298":1,"303":2},"fqnsFingerprint":"b3ae2b89de82d95c7866a8e06793c2b85261b077d328ff92a30c3716ae4c8218"},"109565786a30abd02068d7150eb9e919be96764caa014a1b924dafd599233020":{"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":"aws-dsf.processing"},"field":{"field":"markdown","line":390}},"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"},"61e8fd304b1f8e2921d5fbc8da8a2c930d708313591e390a8176086385691a5b":{"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)","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 {\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});","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 .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})","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});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"aws-dsf.processing"},"field":{"field":"markdown","line":411}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.aws_iam.PolicyStatement","aws-cdk-lib.aws_iam.PolicyStatementProps","aws-dsf.processing","aws-dsf.processing.SparkEmrCICDPipeline","aws-dsf.processing.SparkEmrCICDPipelineProps","aws-dsf.utils.ApplicationStackFactory","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';\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 });\n /// !hide\n }\n}\n\nconst app = new cdk.App();\nnew CICDPipelineStack(app, 'CICDPipelineStack');\n","syntaxKindCounter":{"11":7,"80":13,"110":1,"209":3,"210":3,"211":2,"214":3,"244":1,"303":8},"fqnsFingerprint":"14c5b3d1b7ae489c5be2fd2ff0ff33c6586f892d2e4db82c044038a8ac4f92c5"},"4dccdf92902b63024da962fe95c4b75dfb61ac9327fd5d1d41255c3c26f9fcb3":{"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 = KubectlV27Layer(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-workshop\", \"arn:aws:s3:::aws-data-analytics-workshop/*\"\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 KubectlV27Layer(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-workshop\", \"arn:aws:s3:::aws-data-analytics-workshop/*\" }\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 KubectlV27Layer kubectlLayer = new KubectlV27Layer(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-workshop\", \"arn:aws:s3:::aws-data-analytics-workshop/*\"))\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 := kubectlv27.NewKubectlV27Layer(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-workshop\"),\n\t\t\t\t\tjsii.String(\"arn:aws:s3:::aws-data-analytics-workshop/*\"),\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 KubectlV27Layer(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-workshop',\n 'arn:aws:s3:::aws-data-analytics-workshop/*'],\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":"aws-dsf.processing"},"field":{"field":"markdown","line":454}},"didCompile":true,"fqnsReferenced":["@aws-cdk/lambda-layer-kubectl-v27.KubectlV27Layer","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","aws-dsf.processing.EmrVirtualClusterProps","aws-dsf.processing.SparkEmrContainersRuntime","aws-dsf.processing.SparkEmrContainersRuntime#addEmrVirtualCluster","aws-dsf.processing.SparkEmrContainersRuntime#createExecutionRole","aws-dsf.processing.SparkEmrContainersRuntime#getOrCreate","aws-dsf.processing.SparkEmrContainersRuntime#podTemplateS3LocationCriticalDriver","aws-dsf.processing.SparkEmrContainersRuntime#podTemplateS3LocationCriticalExecutor","aws-dsf.processing.SparkEmrContainersRuntimeProps","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 { KubectlV27Layer } from '@aws-cdk/lambda-layer-kubectl-v27';\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 KubectlV27Layer(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-workshop',\n 'arn:aws:s3:::aws-data-analytics-workshop/*'],\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');","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":"bd9f66e4712379a0bd5d854d0a0322f6ea52a157f0f2d61a3a29c87fabc0ecf5"},"8bec7cdf2860b199e652d7c79f12aa5ed669320cd0970e584204ed24c3a50b68":{"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":"aws-dsf.processing"},"field":{"field":"markdown","line":552}},"didCompile":true,"fqnsReferenced":["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","aws-dsf.processing.EmrVirtualClusterProps","aws-dsf.processing.SparkEmrContainersRuntime#addEmrVirtualCluster","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 { KubectlV27Layer } from '@aws-cdk/lambda-layer-kubectl-v27';\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 KubectlV27Layer(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":"b92e0175d23885efab25838a50299213a425215462440c04bed4e43a7a382a3f"},"5f5bbc7482f69c9aafe6e8a5b348b63caa5485a57fea5929211aa8ef67f7c2cd":{"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":"aws-dsf.processing"},"field":{"field":"markdown","line":577}},"didCompile":true,"fqnsReferenced":["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","aws-dsf.processing.SparkEmrContainersRuntime","aws-dsf.processing.SparkEmrContainersRuntime#getOrCreate","aws-dsf.processing.SparkEmrContainersRuntime#podTemplateS3LocationCriticalDriver","aws-dsf.processing.SparkEmrContainersRuntime#podTemplateS3LocationCriticalExecutor","aws-dsf.processing.SparkEmrContainersRuntimeProps","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 { KubectlV27Layer } from '@aws-cdk/lambda-layer-kubectl-v27';\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 KubectlV27Layer(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":"0bf30fdc8f8407e07ba18ade7038d0a4f155ba4e4adacab555a770dbc295c794"},"eb4f36896a3b1b6437d5442901836434da6a50554079fd6dced4d314da8875fd":{"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":"aws-dsf.processing"},"field":{"field":"markdown","line":604}},"didCompile":true,"fqnsReferenced":["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","aws-dsf.processing.EmrVirtualClusterProps","aws-dsf.processing.SparkEmrContainersRuntime#addEmrVirtualCluster","aws-dsf.processing.SparkEmrContainersRuntime#createExecutionRole","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 { KubectlV27Layer } from '@aws-cdk/lambda-layer-kubectl-v27';\n\n\nclass ExampleSparkEmrContainersStack extends cdk.Stack {\n constructor(scope: Construct, id: string) {\n super(scope, id);\n \n const kubectlLayer = new KubectlV27Layer(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-workshop',\n 'arn:aws:s3:::aws-data-analytics-workshop/*'],\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');","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":"9598be7489045447cbaf33ec6b6cc551104f21c81e2750a69e7a57c4aa038d1e"},"58c9ff537e69a474da48888805acb8ed5aec1fb1bdffabfae2efc1a48500e4cc":{"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":"aws-dsf.processing"},"field":{"field":"markdown","line":629}},"didCompile":true,"fqnsReferenced":["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","aws-dsf.processing.EmrVirtualClusterProps","aws-dsf.processing.SparkEmrContainersRuntime#addEmrVirtualCluster","aws-dsf.processing.SparkEmrContainersRuntime#addInteractiveEndpoint","aws-dsf.processing.SparkEmrContainersRuntime#createExecutionRole","aws-dsf.processing.SparkEmrContainersRuntimeInteractiveSessionProps","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 { KubectlV27Layer } from '@aws-cdk/lambda-layer-kubectl-v27';\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 KubectlV27Layer(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-workshop'],\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');","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":"2d6312b5d8527bb617a9c8aa437c6eb079858e78b2ea68705fe1ca321fd80b29"},"c2fd03ffc81042e6d8445d87b695c4f7041f40ec95656ec043a9485878479bf5":{"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":"aws-dsf.processing"},"field":{"field":"markdown","line":692}},"didCompile":true,"fqnsReferenced":["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","aws-dsf.processing.SparkEmrContainersRuntime#grantStartJobExecution","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 { KubectlV27Layer } from '@aws-cdk/lambda-layer-kubectl-v27';\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 KubectlV27Layer(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-workshop'],\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');","syntaxKindCounter":{"11":2,"80":11,"110":1,"183":1,"209":1,"211":4,"213":2,"243":1,"244":1,"260":1,"261":1},"fqnsFingerprint":"271103c43b6ab11269330a17a5b13211c89af23aa7917dab937a8184471536d1"},"d6552307fccf45c1ef74c5a7b34059e7d24669c73a150ee4f5aad172a32f1ac3":{"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":"aws-dsf.storage"},"field":{"field":"markdown","line":19}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.Stack","aws-dsf.storage","aws-dsf.storage.AccessLogsBucket","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":"46c285d69917c80ad690dfa3e74b7a9229c73ce1395d224005ee6f01906128cc"},"56ff0a51b48bf1dd54e8fa69bb8c7d8dc2205a9521de96be9db27dab9353786f":{"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":"aws-dsf.storage"},"field":{"field":"markdown","line":41}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.aws_s3.BucketProps","aws-dsf.storage","aws-dsf.storage.AccessLogsBucket","aws-dsf.utils","aws-dsf.utils.BucketUtils","aws-dsf.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 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":"bc087f4f141ea30ae75502c146cca4b0b16247783ba9e987fc25ebe6fd1c4b98"},"d32638388d8946c2c7dcb7151ed11d2c822a4208af124a4df3c497a4a8ac7998":{"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":"aws-dsf.storage"},"field":{"field":"markdown","line":67}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.Stack","aws-cdk-lib.aws_kms.IKey","aws-cdk-lib.aws_kms.Key","aws-cdk-lib.aws_kms.KeyProps","aws-dsf.storage","aws-dsf.storage.AnalyticsBucket","aws-dsf.storage.AnalyticsBucketProps","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":"26331bdc63d5631fbca840888c7141440ab8ca3dde2d03728b143958bf5f237f"},"c1df07a5f06c84d5ad71e72e41cf94a56e4ff1d13e17f71594341a31de6ea1cc":{"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":"aws-dsf.storage"},"field":{"field":"markdown","line":104}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.aws_kms.IKey","aws-dsf.storage","aws-dsf.storage.AnalyticsBucket","aws-dsf.storage.AnalyticsBucketProps","aws-dsf.utils","aws-dsf.utils.BucketUtils","aws-dsf.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 { 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":"1f55f498d215a79aff71072d878329d687fcd086be5690581fdb990348e0d667"},"effe8c9d4865f1c0420e866edd8ae2ae1fbf12496268ffe2e7f7b3cde298fe42":{"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":"aws-dsf.storage"},"field":{"field":"markdown","line":133}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.Stack","aws-dsf.storage","aws-dsf.storage.DataLakeStorage","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":"979356d6e1d7f61ad0b6f1f76fd7adbca44861a75ba6d08b82a055940cd6a0e5"},"0d6c19c482115d29534fe4b34fbd0742da1c104a736914cf45b67b366aaddac2":{"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":"aws-dsf.storage"},"field":{"field":"markdown","line":156}},"didCompile":true,"fqnsReferenced":["aws-dsf.storage","aws-dsf.storage.DataLakeStorage","aws-dsf.storage.DataLakeStorageProps","aws-dsf.utils","aws-dsf.utils.BucketUtils","aws-dsf.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":"a358b5ce4bf441af481304c03c1c3225da6cc96fcec404f9d90517028f5dac1d"},"2bc8645bec5e4d6c76f29f9a8e416b29fd40e4b5baa32ee693e162d838a0bdc4":{"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":"aws-dsf.storage"},"field":{"field":"markdown","line":180}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.RemovalPolicy","aws-cdk-lib.RemovalPolicy#DESTROY","aws-dsf.storage","aws-dsf.storage.DataLakeStorage","aws-dsf.storage.DataLakeStorageProps","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":"16ae034ce83c884ec866194098e14528d652997ed66e0ff260da48e8c5c662a4"},"a585dd493f2dbbebaae2488df430ca102e459c7352aecdf94509be49af6f8a9d":{"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":"aws-dsf.storage"},"field":{"field":"markdown","line":197}},"didCompile":true,"fqnsReferenced":["aws-dsf.storage","aws-dsf.storage.DataLakeStorage","aws-dsf.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":"a6a0dab6936ba760d274c11d16e10bab6649f22330b98261dca1fa4449646a48"},"2f4527310bb0f7735c0edc5de0966cac8c181fce3b0c2201ce251b1897a08b04":{"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":"aws-dsf.utils"},"field":{"field":"markdown","line":19}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.Stack","aws-cdk-lib.aws_s3.Bucket#fromBucketName","aws-cdk-lib.aws_s3.IBucket","aws-dsf.utils","aws-dsf.utils.S3DataCopy","aws-dsf.utils.S3DataCopyProps","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":"603af550b961e0e13ebc0ac0868cf5fac85d89c3e7ab825901d31efa1314a127"},"c1ca7ca353974ea706b8c1050fa308aaba6c952f8271166c1a24b41b8781ac98":{"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":"aws-dsf.utils"},"field":{"field":"markdown","line":44}},"didCompile":true,"fqnsReferenced":["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","aws-dsf.utils","aws-dsf.utils.S3DataCopy","aws-dsf.utils.S3DataCopyProps","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":"ec97e99fd13a151558b2f3e0a74cf0e9b50afa115f9c344a19bcca066364de14"},"838dd310b6f6cdc562651c67fb9cef76b6accf3ec8e8380d15c2bf8408fa27cd":{"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":"aws-dsf.utils"},"field":{"field":"markdown","line":75}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.Stack","aws-dsf.utils","aws-dsf.utils.DataVpc","aws-dsf.utils.DataVpcProps","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":"fb8ec8bb5697fb46e98c6b5b3588ad7f70dbd63f627b0e79bd57a30d4a7a6a75"},"1a7ddb631e5d2b9882e9752d02e887e2acfa781a3e7732e1f2b7eafbee91934b":{"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":"aws-dsf.utils"},"field":{"field":"markdown","line":96}},"didCompile":true,"fqnsReferenced":["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","aws-dsf.utils","aws-dsf.utils.DataVpc","aws-dsf.utils.DataVpcProps","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":"5886d74ba0b88a12ef631cf028d6e23beb327d4b6c991275e9b0c3543e9f560a"},"baf0e5b9527b0e5f4a9ce49a76fc5ac44462181911d19aef389e8f4eb02f537d":{"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":"aws-dsf.utils"},"field":{"field":"markdown","line":129}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.RemovalPolicy","aws-cdk-lib.RemovalPolicy#DESTROY","aws-dsf.utils","aws-dsf.utils.DataVpc","aws-dsf.utils.DataVpcProps","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":"1a811f4ba615546cc547ba9203371fd94bd489d4e34ef5e2364662d25365b530"},"0697ca0496914d78bfadcc68e4c29ea335b3e028d400127448e6c23c79815e71":{"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":"aws-dsf.utils"},"field":{"field":"markdown","line":161}},"didCompile":true,"fqnsReferenced":["aws-dsf.storage","aws-dsf.storage.DataLakeStorage","aws-dsf.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":"a6a0dab6936ba760d274c11d16e10bab6649f22330b98261dca1fa4449646a48"},"2f008b287eb139740e8ae47a0cc4fb2b0cdb9e831d5dc21cb6a47a60316916d8":{"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":"aws-dsf.utils"},"field":{"field":"markdown","line":184}},"didCompile":true,"fqnsReferenced":["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","aws-dsf.storage","aws-dsf.storage.AnalyticsBucket","aws-dsf.storage.DataLakeStorage","aws-dsf.storage.DataLakeStorage#goldBucket","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":"c69fb970103c95e6ffbadbd438009fb4e0d8becab637a2bd815c28d8448ad249"},"6691dc6f8db0a76155c95747c9b9584d928a556735bc35c25e0edfefd05ec100":{"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":"aws-dsf.utils"},"field":{"field":"markdown","line":211}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.aws_s3.CfnBucket","aws-cdk-lib.aws_s3.CfnBucket#accelerateConfiguration","aws-dsf.storage","aws-dsf.storage.DataLakeStorage","aws-dsf.storage.DataLakeStorage#goldBucket","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":"eed2d8e732ecf3c64184632ca0e6d39e29d6e14a9e2e5d4c6a636906cb4f4b55"},"5507288d933bf3799b731ac3ba4b894170426e6b36ec3e78bd2cdad843dded21":{"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":"aws-dsf.utils"},"field":{"field":"markdown","line":227}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.CfnResource#addOverride","aws-cdk-lib.aws_s3.CfnBucket","aws-dsf.storage","aws-dsf.storage.DataLakeStorage","aws-dsf.storage.DataLakeStorage#goldBucket","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":"bad2e9d83ca14b865f881a284f33219e4f5eeecddadfa15381686b11a2ce0b2d"},"b604caa54b473bdea5108d80ff5c54340d502da2c1fe586fcd3b7ba890c63544":{"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":"aws-dsf.utils"},"field":{"field":"markdown","line":271}},"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"},"75a70d1540a15f8d839bc7d7153fab8add0a57c4092c44f07827dc2707a556b1":{"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 {\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":"aws-dsf.utils"},"field":{"field":"markdown","line":306}},"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"},"812958ab17d98520f81f65b04fcf3a4749e5713d4e065d9d7d5f19910f9a4575":{"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":"aws-dsf.utils"},"field":{"field":"markdown","line":343}},"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"},"ac18f24ba83502fc03dabfc6afa5222d6350e8e8f9d1c1f1761fec196573e879":{"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 {\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":"aws-dsf.utils"},"field":{"field":"markdown","line":368}},"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"},"2e3479655a3d848b9681b9fe9d834b8509f8aab6da1ccde86d60df758d32643c":{"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":"aws-dsf.utils"},"field":{"field":"markdown","line":401}},"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"},"fe45307ff41d370aae1a1446afdf3b55f16f6bcc9f6243a9f539709c03728661":{"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":"aws-dsf.consumption.AthenaWorkGroup"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["aws-dsf.consumption","aws-dsf.consumption.AthenaWorkGroup","aws-dsf.consumption.AthenaWorkgroupProps","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from 'aws-dsf';\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":"90bf3fcf95bd062dee55dd1c85ebb9dd4d194f8093a6636e8bcaef3c9dc6cf22"},"669ce3c3c20db179d7031bff464922dd19a78c5ee23887e5d969f3fc1dec49b3":{"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":"aws-dsf.consumption.RedshiftData"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["aws-dsf.consumption","aws-dsf.consumption.RedshiftData","aws-dsf.consumption.RedshiftData#createDbRole","aws-dsf.consumption.RedshiftServerlessNamespace","aws-dsf.consumption.RedshiftServerlessNamespaceProps","aws-dsf.consumption.RedshiftServerlessWorkgroup","aws-dsf.consumption.RedshiftServerlessWorkgroup#accessData","aws-dsf.consumption.RedshiftServerlessWorkgroupProps","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from 'aws-dsf';\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":"823618e5afae3e66d84a44cdb1d8a36fd3ca535bd63a7f9721206677529fb56a"},"c6bb1311e2ccf3bb96384195f0caa4297d550b48d44e08c60f483867290b0088":{"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":"aws-dsf.consumption.RedshiftServerlessNamespace"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["aws-dsf.consumption","aws-dsf.consumption.RedshiftServerlessNamespace","aws-dsf.consumption.RedshiftServerlessNamespaceProps","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from 'aws-dsf';\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":"44c65442c5302ac807e409144eddebb8d640da095d60d1c85491fe25798835a4"},"edd301cb019fa3dfc6e26820e7e4b9d2f499f9e9a3d5f8448eca7b57a608f56e":{"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":"aws-dsf.consumption.RedshiftServerlessWorkgroup"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["aws-dsf.consumption","aws-dsf.consumption.RedshiftServerlessNamespace","aws-dsf.consumption.RedshiftServerlessNamespaceProps","aws-dsf.consumption.RedshiftServerlessWorkgroup","aws-dsf.consumption.RedshiftServerlessWorkgroupProps","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from 'aws-dsf';\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":"de80ef4c6136b52708fedc158eab94d68f08aa9c411ed1ce417a5723c990f779"},"c6f3776c5baba33bb5fdbd0216b604e4c75fc59fe5c59f8dab08731d6baca035":{"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":"aws-dsf.governance.DataCatalogDatabase"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.aws_s3.Bucket","aws-cdk-lib.aws_s3.IBucket","aws-dsf.governance","aws-dsf.governance.DataCatalogDatabase","aws-dsf.governance.DataCatalogDatabaseProps","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 'aws-dsf';\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,"312":1},"fqnsFingerprint":"bcda044c7de419a71bb875558c5a13223b7ce53a65fb0e42e3ab0560270b98ee"},"6dbc9cfdeebc98f0a18594c77dae748d4d3c6c0377e906ae6c3de76c048faa92":{"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":"aws-dsf.governance.DataLakeCatalog"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.aws_kms.IKey","aws-cdk-lib.aws_kms.Key","aws-dsf.governance","aws-dsf.governance.DataLakeCatalog","aws-dsf.governance.DataLakeCatalogProps","aws-dsf.storage","aws-dsf.storage.DataLakeStorage","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 'aws-dsf';\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,"312":1},"fqnsFingerprint":"495470af9a6769ba7ec695ba614652762f59f97be5dc3d9e5f41435779f77e4f"},"a08691018fc9447843a876fc5daae726d95861c33981906cb21df2d1e68e8102":{"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":"aws-dsf.processing.PySparkApplicationPackage"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.RemovalPolicy","aws-cdk-lib.RemovalPolicy#DESTROY","aws-dsf.processing","aws-dsf.processing.PySparkApplicationPackage","aws-dsf.processing.PySparkApplicationPackageProps","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from 'aws-dsf';\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":"7f267daef9dc195c7bdd5f49426fd47699c3952a026c1e825314e4b7971cf756"},"cf78d22bc041c5ecadafa3ba27275e882ca89a5553a343ca2c8837e78e49ebeb":{"translations":{"python":{"source":"from aws_cdk.aws_s3 import Bucket\n\n\nclass MyApplicationStack(cdk.Stack):\n def __init__(self, scope, *, stage, description=None, env=None, stackName=None, tags=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 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 )","version":"2"},"csharp":{"source":"using Amazon.CDK.AWS.S3;\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 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 {\n { \"TEST_BUCKET\", \"BucketName\" }\n }\n });\n }\n}","version":"1"},"java":{"source":"import software.amazon.awscdk.services.s3.Bucket;\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 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 .build();\n }\n}","version":"1"},"go":{"source":"import \"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\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})\n\treturn this\n}","version":"1"},"$":{"source":"import { Bucket } from 'aws-cdk-lib/aws-s3';\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 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 });\n }\n}","version":"0"}},"location":{"api":{"api":"type","fqn":"aws-dsf.processing.SparkEmrCICDPipeline"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["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-dsf.processing","aws-dsf.processing.SparkEmrCICDPipeline","aws-dsf.processing.SparkEmrCICDPipelineProps","aws-dsf.processing.SparkImage","aws-dsf.processing.SparkImage#EMR_6_12","aws-dsf.utils.ApplicationStackFactory","aws-dsf.utils.CICDStage","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 'aws-dsf';\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 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 });\n }\n}\n/// !hide\n// Code snippet ended before !hide marker above","syntaxKindCounter":{"11":10,"58":1,"80":70,"108":2,"110":3,"112":1,"148":1,"154":1,"166":7,"169":6,"171":1,"174":1,"176":2,"183":7,"210":5,"211":14,"213":2,"214":5,"233":4,"241":3,"243":1,"244":4,"253":1,"260":1,"261":1,"263":3,"264":1,"272":1,"273":1,"275":1,"276":1,"298":4,"303":11,"304":1,"312":1},"fqnsFingerprint":"4ecfb218118826f601c5183b0399fe0762a3914f573055f9b22964c906a15fb4"},"3c3299d7d2038c8059154a670ca3f2da7a5bfc7a84e0ff41a572ced68b8b8ca0":{"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 {\n { \"Name\", JsonPath.Format(\"ge_profile-{}\", JsonPath.Uuid()) },\n { \"VirtualClusterId\", \"virtualClusterId\" },\n { \"ExecutionRoleArn\", \"ROLE-ARN\" },\n { \"JobDriver\", new Dictionary> {\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":"aws-dsf.processing.SparkEmrContainersJob"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["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","aws-dsf.processing","aws-dsf.processing.SparkEmrContainersJob","aws-dsf.processing.SparkJob#stateMachine","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 'aws-dsf';\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,"312":1},"fqnsFingerprint":"95951dd510526603355df5edd51c672b54a87bc756f4f90eec81c7bde574c2e1"},"90ac6e583e55cbf0c6742633c583edf24ae7ad1faeb7d0ec3ab24cf2e74ce733":{"translations":{"python":{"source":"from aws_cdk.aws_iam import ManagedPolicy, PolicyDocument, PolicyStatement\nfrom aws_cdk.lambda_layer_kubectl_v27 import KubectlV27Layer\n\n\nkubectl_layer = KubectlV27Layer(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-workshop\"]\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.KubectlV27;\n\n\nvar kubectlLayer = new KubectlV27Layer(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-workshop\" }\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.v27.KubectlV27Layer;\n\n\nKubectlV27Layer kubectlLayer = new KubectlV27Layer(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-workshop\"))\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/kubectlv27\"\n\n\nkubectlLayer := kubectlv27.NewKubectlV27Layer(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-workshop\"),\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 { KubectlV27Layer } from '@aws-cdk/lambda-layer-kubectl-v27';\n\nconst kubectlLayer = new KubectlV27Layer(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-workshop'],\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":"aws-dsf.processing.SparkEmrContainersRuntime"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@aws-cdk/lambda-layer-kubectl-v27.KubectlV27Layer","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","aws-dsf.processing","aws-dsf.processing.EmrVirtualClusterProps","aws-dsf.processing.SparkEmrContainersRuntime","aws-dsf.processing.SparkEmrContainersRuntime#addEmrVirtualCluster","aws-dsf.processing.SparkEmrContainersRuntime#createExecutionRole","aws-dsf.processing.SparkEmrContainersRuntime#getOrCreate","aws-dsf.processing.SparkEmrContainersRuntimeProps","constructs.Construct"],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\nimport { ManagedPolicy, PolicyDocument, PolicyStatement } from 'aws-cdk-lib/aws-iam';\nimport { KubectlV27Layer } from '@aws-cdk/lambda-layer-kubectl-v27';\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 'aws-dsf';\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 KubectlV27Layer(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-workshop'],\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,"312":1},"fqnsFingerprint":"42ccdc39b817426748330f07413c8e2cc1e169b815f855dc6f966a91b194caf7"},"8b4853e2e73b54eed748906b855f61336b07a4f5e0e280b96b8e97a8326886d1":{"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 {\n { \"Name\", JsonPath.Format(\"ge_profile-{}\", JsonPath.Uuid()) },\n { \"ApplicationId\", \"APPLICATION_ID\" },\n { \"ExecutionRoleArn\", myExecutionRole.RoleArn },\n { \"JobDriver\", new Dictionary> {\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":"aws-dsf.processing.SparkEmrServerlessJob"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["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","aws-dsf.processing","aws-dsf.processing.SparkEmrServerlessJob","aws-dsf.processing.SparkEmrServerlessRuntime","aws-dsf.processing.SparkEmrServerlessRuntime#createExecutionRole","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 'aws-dsf';\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,"312":1},"fqnsFingerprint":"0a99c7244b9c64efe2ee5ce7c46d1ebe3da227c42f8f156fc5a0bdc8363431f6"},"71d8b5c0ebe339591224bb88ab241e34e480ce93f02c1be193e30c5b23d37b87":{"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":"aws-dsf.processing.SparkEmrServerlessRuntime"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["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","aws-dsf.processing","aws-dsf.processing.SparkEmrServerlessRuntime","aws-dsf.processing.SparkEmrServerlessRuntime#createExecutionRole","aws-dsf.processing.SparkEmrServerlessRuntime#grantStartJobExecution","aws-dsf.processing.SparkEmrServerlessRuntimeProps","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 'aws-dsf';\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,"312":1},"fqnsFingerprint":"3cf0f6aa97cf81132d85e14fa559d3cc5109d888b56fdee28216315d45e4677a"},"ec0ac924b4f1d790f430b2a1d2f58f5c2271541efd284ebb0a9ed4c49052fcae":{"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":"aws-dsf.storage.AccessLogsBucket"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["aws-dsf.storage","aws-dsf.storage.AccessLogsBucket","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from 'aws-dsf';\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":"63454dd816b2af69e86deb7bfa4e69be3873d1222e6a0b9160142f01eda5fcd0"},"3c18fe2f03f1bf034bbde8d884ae4d352cd55e725399effda520f3ec5c4a1901":{"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":"aws-dsf.storage.AnalyticsBucket"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["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","aws-dsf.storage","aws-dsf.storage.AnalyticsBucket","aws-dsf.storage.AnalyticsBucketProps","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 'aws-dsf';\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,"312":1},"fqnsFingerprint":"471228e1adc5eafbd7e8f1961bd74bc0c6888689d639b80623f5a412108887b6"},"5f3974a43028a46d72776f5d8ece6a1cf53619d5f99e012d873cd3f4c6ee7ed5":{"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":"aws-dsf.storage.DataLakeStorage"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.RemovalPolicy","aws-cdk-lib.RemovalPolicy#DESTROY","aws-dsf.storage","aws-dsf.storage.DataLakeStorage","aws-dsf.storage.DataLakeStorageProps","constructs.Construct","constructs.Construct#node","constructs.Node#setContext"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from 'aws-dsf';\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":"16ae034ce83c884ec866194098e14528d652997ed66e0ff260da48e8c5c662a4"},"742f2072030df46d52b3ccd11f60155ef16b75a564023ecf39f6e52b19b14fb7":{"translations":{"python":{"source":"class MyApplicationStack(cdk.Stack):\n def __init__(self, scope, id, *, stage, description=None, env=None, stackName=None, tags=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, 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":"aws-dsf.utils.ApplicationStackFactory"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.Stack","aws-cdk-lib.StackProps","aws-dsf.utils.CICDStage","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from 'aws-dsf';\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":"57878e6487f1440a3407a50762ba5bb6b1346e7801e3b086615c71e3ed508b7e"},"6b30636dfba46d153e79a6770491aa322226db78e1e1260b25c6bb4c1022a8f8":{"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":"aws-dsf.utils.DataVpc"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["aws-dsf.utils","aws-dsf.utils.DataVpc","aws-dsf.utils.DataVpc#tagVpc","aws-dsf.utils.DataVpcProps","constructs.Construct"],"fullSource":"import { Construct } from 'constructs';\nimport * as cdk from 'aws-cdk-lib';\nimport * as dsf from 'aws-dsf';\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":"06d3b7b9f2e0b54607a61dd39aa0a8214719bf1a2a5fd451917ad1a49641e8a8"},"12bc09c82a2f4f73dc8f276c7c5b1684a58f0ef7fa56b1339a8022af2e23750e":{"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":"aws-dsf.utils.S3DataCopy"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.aws_s3.Bucket","aws-cdk-lib.aws_s3.Bucket#fromBucketName","aws-cdk-lib.aws_s3.IBucket","aws-dsf.utils","aws-dsf.utils.S3DataCopy","aws-dsf.utils.S3DataCopyProps","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 'aws-dsf';\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,"312":1},"fqnsFingerprint":"f4ebc096f73e8ab49982e82f23e108c295b7c782e0c605d6ece221842557bab3"}}}