@aws-cdk/aws-glue-alpha 2.95.1-alpha.0 → 2.96.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.jsii CHANGED
@@ -8,7 +8,7 @@
8
8
  "url": "https://aws.amazon.com"
9
9
  },
10
10
  "dependencies": {
11
- "aws-cdk-lib": "2.95.1",
11
+ "aws-cdk-lib": "2.96.1",
12
12
  "constructs": "^10.0.0"
13
13
  },
14
14
  "dependencyClosure": {
@@ -3513,7 +3513,7 @@
3513
3513
  },
3514
3514
  "name": "@aws-cdk/aws-glue-alpha",
3515
3515
  "readme": {
3516
- "markdown": "# AWS Glue Construct Library\n<!--BEGIN STABILITY BANNER-->\n\n---\n\n![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge)\n\n> The APIs of higher level constructs in this module are experimental and under active development.\n> They are subject to non-backward compatible changes or removal in any future version. These are\n> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be\n> announced in the release notes. This means that while you may use them, you may need to update\n> your source code when upgrading to a newer version of this package.\n\n---\n\n<!--END STABILITY BANNER-->\n\nThis module is part of the [AWS Cloud Development Kit](https://github.com/aws/aws-cdk) project.\n\n## Job\n\nA `Job` encapsulates a script that connects to data sources, processes them, and then writes output to a data target.\n\nThere are 3 types of jobs supported by AWS Glue: Spark ETL, Spark Streaming, and Python Shell jobs.\n\nThe `glue.JobExecutable` allows you to specify the type of job, the language to use and the code assets required by the job.\n\n`glue.Code` allows you to refer to the different code assets required by the job, either from an existing S3 location or from a local file path.\n\n`glue.ExecutionClass` allows you to specify `FLEX` or `STANDARD`. `FLEX` is appropriate for non-urgent jobs such as pre-production jobs, testing, and one-time data loads.\n\n### Spark Jobs\n\nThese jobs run in an Apache Spark environment managed by AWS Glue.\n\n#### ETL Jobs\n\nAn ETL job processes data in batches using Apache Spark.\n\n```ts\ndeclare const bucket: s3.Bucket;\nnew glue.Job(this, 'ScalaSparkEtlJob', {\n executable: glue.JobExecutable.scalaEtl({\n glueVersion: glue.GlueVersion.V4_0,\n script: glue.Code.fromBucket(bucket, 'src/com/example/HelloWorld.scala'),\n className: 'com.example.HelloWorld',\n extraJars: [glue.Code.fromBucket(bucket, 'jars/HelloWorld.jar')],\n }),\n workerType: glue.WorkerType.G_8X,\n description: 'an example Scala ETL job',\n});\n```\n\n#### Streaming Jobs\n\nA Streaming job is similar to an ETL job, except that it performs ETL on data streams. It uses the Apache Spark Structured Streaming framework. Some Spark job features are not available to streaming ETL jobs.\n\n```ts\nnew glue.Job(this, 'PythonSparkStreamingJob', {\n executable: glue.JobExecutable.pythonStreaming({\n glueVersion: glue.GlueVersion.V4_0,\n pythonVersion: glue.PythonVersion.THREE,\n script: glue.Code.fromAsset(path.join(__dirname, 'job-script/hello_world.py')),\n }),\n description: 'an example Python Streaming job',\n});\n```\n\n### Python Shell Jobs\n\nA Python shell job runs Python scripts as a shell and supports a Python version that depends on the AWS Glue version you are using.\nThis can be used to schedule and run tasks that don't require an Apache Spark environment. Currently, three flavors are supported:\n\n* PythonVersion.TWO (2.7; EOL)\n* PythonVersion.THREE (3.6)\n* PythonVersion.THREE_NINE (3.9)\n\n```ts\ndeclare const bucket: s3.Bucket;\nnew glue.Job(this, 'PythonShellJob', {\n executable: glue.JobExecutable.pythonShell({\n glueVersion: glue.GlueVersion.V1_0,\n pythonVersion: glue.PythonVersion.THREE,\n script: glue.Code.fromBucket(bucket, 'script.py'),\n }),\n description: 'an example Python Shell job',\n});\n```\n\n### Ray Jobs\n\nThese jobs run in a Ray environment managed by AWS Glue.\n\n```ts\nnew glue.Job(this, 'RayJob', {\n executable: glue.JobExecutable.pythonRay({\n glueVersion: glue.GlueVersion.V4_0,\n pythonVersion: glue.PythonVersion.THREE_NINE,\n runtime: glue.Runtime.RAY_TWO_FOUR,\n script: glue.Code.fromAsset(path.join(__dirname, 'job-script/hello_world.py')),\n }),\n workerType: glue.WorkerType.Z_2X,\n workerCount: 2,\n description: 'an example Ray job'\n});\n```\n\n### Enable Spark UI\n\nEnable Spark UI setting the `sparkUI` property.\n\n```ts\nnew glue.Job(this, 'EnableSparkUI', {\n jobName: 'EtlJobWithSparkUIPrefix',\n sparkUI: {\n enabled: true,\n },\n executable: glue.JobExecutable.pythonEtl({\n glueVersion: glue.GlueVersion.V3_0,\n pythonVersion: glue.PythonVersion.THREE,\n script: glue.Code.fromAsset(path.join(__dirname, 'job-script/hello_world.py')),\n }),\n});\n```\n\nThe `sparkUI` property also allows the specification of an s3 bucket and a bucket prefix.\n\nSee [documentation](https://docs.aws.amazon.com/glue/latest/dg/add-job.html) for more information on adding jobs in Glue.\n\n## Connection\n\nA `Connection` allows Glue jobs, crawlers and development endpoints to access certain types of data stores. For example, to create a network connection to connect to a data source within a VPC:\n\n```ts\ndeclare const securityGroup: ec2.SecurityGroup;\ndeclare const subnet: ec2.Subnet;\nnew glue.Connection(this, 'MyConnection', {\n type: glue.ConnectionType.NETWORK,\n // The security groups granting AWS Glue inbound access to the data source within the VPC\n securityGroups: [securityGroup],\n // The VPC subnet which contains the data source\n subnet,\n});\n```\n\nFor RDS `Connection` by JDBC, it is recommended to manage credentials using AWS Secrets Manager. To use Secret, specify `SECRET_ID` in `properties` like the following code. Note that in this case, the subnet must have a route to the AWS Secrets Manager VPC endpoint or to the AWS Secrets Manager endpoint through a NAT gateway.\n\n```ts\ndeclare const securityGroup: ec2.SecurityGroup;\ndeclare const subnet: ec2.Subnet;\ndeclare const db: rds.DatabaseCluster;\nnew glue.Connection(this, \"RdsConnection\", {\n type: glue.ConnectionType.JDBC,\n securityGroups: [securityGroup],\n subnet,\n properties: {\n JDBC_CONNECTION_URL: `jdbc:mysql://${db.clusterEndpoint.socketAddress}/databasename`,\n JDBC_ENFORCE_SSL: \"false\",\n SECRET_ID: db.secret!.secretName,\n },\n});\n```\n\nIf you need to use a connection type that doesn't exist as a static member on `ConnectionType`, you can instantiate a `ConnectionType` object, e.g: `new glue.ConnectionType('NEW_TYPE')`.\n\nSee [Adding a Connection to Your Data Store](https://docs.aws.amazon.com/glue/latest/dg/populate-add-connection.html) and [Connection Structure](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-connections.html#aws-glue-api-catalog-connections-Connection) documentation for more information on the supported data stores and their configurations.\n\n## SecurityConfiguration\n\nA `SecurityConfiguration` is a set of security properties that can be used by AWS Glue to encrypt data at rest.\n\n```ts\nnew glue.SecurityConfiguration(this, 'MySecurityConfiguration', {\n cloudWatchEncryption: {\n mode: glue.CloudWatchEncryptionMode.KMS,\n },\n jobBookmarksEncryption: {\n mode: glue.JobBookmarksEncryptionMode.CLIENT_SIDE_KMS,\n },\n s3Encryption: {\n mode: glue.S3EncryptionMode.KMS,\n },\n});\n```\n\nBy default, a shared KMS key is created for use with the encryption configurations that require one. You can also supply your own key for each encryption config, for example, for CloudWatch encryption:\n\n```ts\ndeclare const key: kms.Key;\nnew glue.SecurityConfiguration(this, 'MySecurityConfiguration', {\n cloudWatchEncryption: {\n mode: glue.CloudWatchEncryptionMode.KMS,\n kmsKey: key,\n },\n});\n```\n\nSee [documentation](https://docs.aws.amazon.com/glue/latest/dg/encryption-security-configuration.html) for more info for Glue encrypting data written by Crawlers, Jobs, and Development Endpoints.\n\n## Database\n\nA `Database` is a logical grouping of `Tables` in the Glue Catalog.\n\n```ts\nnew glue.Database(this, 'MyDatabase');\n```\n\n## Table\n\nA Glue table describes a table of data in S3: its structure (column names and types), location of data (S3 objects with a common prefix in a S3 bucket), and format for the files (Json, Avro, Parquet, etc.):\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }, {\n name: 'col2',\n type: glue.Schema.array(glue.Schema.STRING),\n comment: 'col2 is an array of strings' // comment is optional\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\nBy default, a S3 bucket will be created to store the table's data but you can manually pass the `bucket` and `s3Prefix`:\n\n```ts\ndeclare const myBucket: s3.Bucket;\ndeclare const myDatabase: glue.Database;\nnew glue.Table(this, 'MyTable', {\n bucket: myBucket,\n s3Prefix: 'my-table/',\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\nGlue tables can be configured to contain user-defined properties, to describe the physical storage of table data, through the `storageParameters` property:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.Table(this, 'MyTable', {\n storageParameters: [\n glue.StorageParameter.skipHeaderLineCount(1),\n glue.StorageParameter.compressionType(glue.CompressionType.GZIP),\n glue.StorageParameter.custom('separatorChar', ',')\n ],\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n### Partition Keys\n\nTo improve query performance, a table can specify `partitionKeys` on which data is stored and queried separately. For example, you might partition a table by `year` and `month` to optimize queries based on a time window:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.SMALL_INT,\n }, {\n name: 'month',\n type: glue.Schema.SMALL_INT,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n### Partition Indexes\n\nAnother way to improve query performance is to specify partition indexes. If no partition indexes are\npresent on the table, AWS Glue loads all partitions of the table and filters the loaded partitions using\nthe query expression. The query takes more time to run as the number of partitions increase. With an\nindex, the query will try to fetch a subset of the partitions instead of loading all partitions of the\ntable.\n\nThe keys of a partition index must be a subset of the partition keys of the table. You can have a\nmaximum of 3 partition indexes per table. To specify a partition index, you can use the `partitionIndexes`\nproperty:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.SMALL_INT,\n }, {\n name: 'month',\n type: glue.Schema.SMALL_INT,\n }],\n partitionIndexes: [{\n indexName: 'my-index', // optional\n keyNames: ['year'],\n }], // supply up to 3 indexes\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\nAlternatively, you can call the `addPartitionIndex()` function on a table:\n\n```ts\ndeclare const myTable: glue.Table;\nmyTable.addPartitionIndex({\n indexName: 'my-index',\n keyNames: ['year'],\n});\n```\n\n### Partition Filtering\n\nIf you have a table with a large number of partitions that grows over time, consider using AWS Glue partition indexing and filtering.\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.SMALL_INT,\n }, {\n name: 'month',\n type: glue.Schema.SMALL_INT,\n }],\n dataFormat: glue.DataFormat.JSON,\n enablePartitionFiltering: true,\n});\n```\n\n## [Encryption](https://docs.aws.amazon.com/athena/latest/ug/encryption.html)\n\nYou can enable encryption on a Table's data:\n\n* [S3Managed](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html) - (default) Server side encryption (`SSE-S3`) with an Amazon S3-managed key.\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.Table(this, 'MyTable', {\n encryption: glue.TableEncryption.S3_MANAGED,\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n* [Kms](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html) - Server-side encryption (`SSE-KMS`) with an AWS KMS Key managed by the account owner.\n\n```ts\ndeclare const myDatabase: glue.Database;\n// KMS key is created automatically\nnew glue.Table(this, 'MyTable', {\n encryption: glue.TableEncryption.KMS,\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n\n// with an explicit KMS key\nnew glue.Table(this, 'MyTable', {\n encryption: glue.TableEncryption.KMS,\n encryptionKey: new kms.Key(this, 'MyKey'),\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n* [KmsManaged](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html) - Server-side encryption (`SSE-KMS`), like `Kms`, except with an AWS KMS Key managed by the AWS Key Management Service.\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.Table(this, 'MyTable', {\n encryption: glue.TableEncryption.KMS_MANAGED,\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n* [ClientSideKms](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html#client-side-encryption-kms-managed-master-key-intro) - Client-side encryption (`CSE-KMS`) with an AWS KMS Key managed by the account owner.\n\n```ts\ndeclare const myDatabase: glue.Database;\n// KMS key is created automatically\nnew glue.Table(this, 'MyTable', {\n encryption: glue.TableEncryption.CLIENT_SIDE_KMS,\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n\n// with an explicit KMS key\nnew glue.Table(this, 'MyTable', {\n encryption: glue.TableEncryption.CLIENT_SIDE_KMS,\n encryptionKey: new kms.Key(this, 'MyKey'),\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n*Note: you cannot provide a `Bucket` when creating the `Table` if you wish to use server-side encryption (`KMS`, `KMS_MANAGED` or `S3_MANAGED`)*.\n\n## Types\n\nA table's schema is a collection of columns, each of which have a `name` and a `type`. Types are recursive structures, consisting of primitive and complex types:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.Table(this, 'MyTable', {\n columns: [{\n name: 'primitive_column',\n type: glue.Schema.STRING,\n }, {\n name: 'array_column',\n type: glue.Schema.array(glue.Schema.INTEGER),\n comment: 'array<integer>',\n }, {\n name: 'map_column',\n type: glue.Schema.map(\n glue.Schema.STRING,\n glue.Schema.TIMESTAMP),\n comment: 'map<string,string>',\n }, {\n name: 'struct_column',\n type: glue.Schema.struct([{\n name: 'nested_column',\n type: glue.Schema.DATE,\n comment: 'nested comment',\n }]),\n comment: \"struct<nested_column:date COMMENT 'nested comment'>\",\n }],\n // ...\n database: myDatabase,\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n### Primitives\n\n#### Numeric\n\n| Name \t| Type \t| Comments |\n|-----------\t|----------\t|------------------------------------------------------------------------------------------------------------------\t|\n| FLOAT \t| Constant \t| A 32-bit single-precision floating point number |\n| INTEGER \t| Constant \t| A 32-bit signed value in two's complement format, with a minimum value of -2^31 and a maximum value of 2^31-1 \t|\n| DOUBLE \t| Constant \t| A 64-bit double-precision floating point number |\n| BIG_INT \t| Constant \t| A 64-bit signed INTEGER in two’s complement format, with a minimum value of -2^63 and a maximum value of 2^63 -1 |\n| SMALL_INT \t| Constant \t| A 16-bit signed INTEGER in two’s complement format, with a minimum value of -2^15 and a maximum value of 2^15-1 |\n| TINY_INT \t| Constant \t| A 8-bit signed INTEGER in two’s complement format, with a minimum value of -2^7 and a maximum value of 2^7-1 |\n\n#### Date and time\n\n| Name \t| Type \t| Comments \t|\n|-----------\t|----------\t|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------\t|\n| DATE \t| Constant \t| A date in UNIX format, such as YYYY-MM-DD. \t|\n| TIMESTAMP \t| Constant \t| Date and time instant in the UNiX format, such as yyyy-mm-dd hh:mm:ss[.f...]. For example, TIMESTAMP '2008-09-15 03:04:05.324'. This format uses the session time zone. \t|\n\n#### String\n\n| Name \t| Type \t| Comments \t|\n|--------------------------------------------\t|----------\t|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\t|\n| STRING \t| Constant \t| A string literal enclosed in single or double quotes \t|\n| decimal(precision: number, scale?: number) \t| Function \t| `precision` is the total number of digits. `scale` (optional) is the number of digits in fractional part with a default of 0. For example, use these type definitions: decimal(11,5), decimal(15) \t|\n| char(length: number) \t| Function \t| Fixed length character data, with a specified length between 1 and 255, such as char(10) \t|\n| varchar(length: number) \t| Function \t| Variable length character data, with a specified length between 1 and 65535, such as varchar(10) \t|\n\n#### Miscellaneous\n\n| Name \t| Type \t| Comments \t|\n|---------\t|----------\t|-------------------------------\t|\n| BOOLEAN \t| Constant \t| Values are `true` and `false` \t|\n| BINARY \t| Constant \t| Value is in binary \t|\n\n### Complex\n\n| Name \t| Type \t| Comments \t|\n|-------------------------------------\t|----------\t|-------------------------------------------------------------------\t|\n| array(itemType: Type) \t| Function \t| An array of some other type \t|\n| map(keyType: Type, valueType: Type) \t| Function \t| A map of some primitive key type to any value type \t|\n| struct(collumns: Column[]) \t| Function \t| Nested structure containing individually named and typed collumns \t|\n\n## Data Quality Ruleset\n\nA `DataQualityRuleset` specifies a data quality ruleset with DQDL rules applied to a specified AWS Glue table. For example, to create a data quality ruleset for a given table:\n\n```ts\nnew glue.DataQualityRuleset(this, 'MyDataQualityRuleset', {\n clientToken: 'client_token',\n description: 'description',\n rulesetName: 'ruleset_name',\n rulesetDqdl: 'ruleset_dqdl',\n tags: {\n key1: 'value1',\n key2: 'value2',\n },\n targetTable: new glue.DataQualityTargetTable('database_name', 'table_name'),\n});\n```\n\nFor more information, see [AWS Glue Data Quality](https://docs.aws.amazon.com/glue/latest/dg/glue-data-quality.html).\n"
3516
+ "markdown": "# AWS Glue Construct Library\n<!--BEGIN STABILITY BANNER-->\n\n---\n\n![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge)\n\n> The APIs of higher level constructs in this module are experimental and under active development.\n> They are subject to non-backward compatible changes or removal in any future version. These are\n> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be\n> announced in the release notes. This means that while you may use them, you may need to update\n> your source code when upgrading to a newer version of this package.\n\n---\n\n<!--END STABILITY BANNER-->\n\nThis module is part of the [AWS Cloud Development Kit](https://github.com/aws/aws-cdk) project.\n\n## Job\n\nA `Job` encapsulates a script that connects to data sources, processes them, and then writes output to a data target.\n\nThere are 3 types of jobs supported by AWS Glue: Spark ETL, Spark Streaming, and Python Shell jobs.\n\nThe `glue.JobExecutable` allows you to specify the type of job, the language to use and the code assets required by the job.\n\n`glue.Code` allows you to refer to the different code assets required by the job, either from an existing S3 location or from a local file path.\n\n`glue.ExecutionClass` allows you to specify `FLEX` or `STANDARD`. `FLEX` is appropriate for non-urgent jobs such as pre-production jobs, testing, and one-time data loads.\n\n### Spark Jobs\n\nThese jobs run in an Apache Spark environment managed by AWS Glue.\n\n#### ETL Jobs\n\nAn ETL job processes data in batches using Apache Spark.\n\n```ts\ndeclare const bucket: s3.Bucket;\nnew glue.Job(this, 'ScalaSparkEtlJob', {\n executable: glue.JobExecutable.scalaEtl({\n glueVersion: glue.GlueVersion.V4_0,\n script: glue.Code.fromBucket(bucket, 'src/com/example/HelloWorld.scala'),\n className: 'com.example.HelloWorld',\n extraJars: [glue.Code.fromBucket(bucket, 'jars/HelloWorld.jar')],\n }),\n workerType: glue.WorkerType.G_8X,\n description: 'an example Scala ETL job',\n});\n```\n\n#### Streaming Jobs\n\nA Streaming job is similar to an ETL job, except that it performs ETL on data streams. It uses the Apache Spark Structured Streaming framework. Some Spark job features are not available to streaming ETL jobs.\n\n```ts\nnew glue.Job(this, 'PythonSparkStreamingJob', {\n executable: glue.JobExecutable.pythonStreaming({\n glueVersion: glue.GlueVersion.V4_0,\n pythonVersion: glue.PythonVersion.THREE,\n script: glue.Code.fromAsset(path.join(__dirname, 'job-script/hello_world.py')),\n }),\n description: 'an example Python Streaming job',\n});\n```\n\n### Python Shell Jobs\n\nA Python shell job runs Python scripts as a shell and supports a Python version that depends on the AWS Glue version you are using.\nThis can be used to schedule and run tasks that don't require an Apache Spark environment. Currently, three flavors are supported:\n\n* PythonVersion.TWO (2.7; EOL)\n* PythonVersion.THREE (3.6)\n* PythonVersion.THREE_NINE (3.9)\n\n```ts\ndeclare const bucket: s3.Bucket;\nnew glue.Job(this, 'PythonShellJob', {\n executable: glue.JobExecutable.pythonShell({\n glueVersion: glue.GlueVersion.V1_0,\n pythonVersion: glue.PythonVersion.THREE,\n script: glue.Code.fromBucket(bucket, 'script.py'),\n }),\n description: 'an example Python Shell job',\n});\n```\n\n### Ray Jobs\n\nThese jobs run in a Ray environment managed by AWS Glue.\n\n```ts\nnew glue.Job(this, 'RayJob', {\n executable: glue.JobExecutable.pythonRay({\n glueVersion: glue.GlueVersion.V4_0,\n pythonVersion: glue.PythonVersion.THREE_NINE,\n runtime: glue.Runtime.RAY_TWO_FOUR,\n script: glue.Code.fromAsset(path.join(__dirname, 'job-script/hello_world.py')),\n }),\n workerType: glue.WorkerType.Z_2X,\n workerCount: 2,\n description: 'an example Ray job'\n});\n```\n\n### Enable Spark UI\n\nEnable Spark UI setting the `sparkUI` property.\n\n```ts\nnew glue.Job(this, 'EnableSparkUI', {\n jobName: 'EtlJobWithSparkUIPrefix',\n sparkUI: {\n enabled: true,\n },\n executable: glue.JobExecutable.pythonEtl({\n glueVersion: glue.GlueVersion.V3_0,\n pythonVersion: glue.PythonVersion.THREE,\n script: glue.Code.fromAsset(path.join(__dirname, 'job-script/hello_world.py')),\n }),\n});\n```\n\nThe `sparkUI` property also allows the specification of an s3 bucket and a bucket prefix.\n\nSee [documentation](https://docs.aws.amazon.com/glue/latest/dg/add-job.html) for more information on adding jobs in Glue.\n\n## Connection\n\nA `Connection` allows Glue jobs, crawlers and development endpoints to access certain types of data stores. For example, to create a network connection to connect to a data source within a VPC:\n\n```ts\ndeclare const securityGroup: ec2.SecurityGroup;\ndeclare const subnet: ec2.Subnet;\nnew glue.Connection(this, 'MyConnection', {\n type: glue.ConnectionType.NETWORK,\n // The security groups granting AWS Glue inbound access to the data source within the VPC\n securityGroups: [securityGroup],\n // The VPC subnet which contains the data source\n subnet,\n});\n```\n\nFor RDS `Connection` by JDBC, it is recommended to manage credentials using AWS Secrets Manager. To use Secret, specify `SECRET_ID` in `properties` like the following code. Note that in this case, the subnet must have a route to the AWS Secrets Manager VPC endpoint or to the AWS Secrets Manager endpoint through a NAT gateway.\n\n```ts\ndeclare const securityGroup: ec2.SecurityGroup;\ndeclare const subnet: ec2.Subnet;\ndeclare const db: rds.DatabaseCluster;\nnew glue.Connection(this, \"RdsConnection\", {\n type: glue.ConnectionType.JDBC,\n securityGroups: [securityGroup],\n subnet,\n properties: {\n JDBC_CONNECTION_URL: `jdbc:mysql://${db.clusterEndpoint.socketAddress}/databasename`,\n JDBC_ENFORCE_SSL: \"false\",\n SECRET_ID: db.secret!.secretName,\n },\n});\n```\n\nIf you need to use a connection type that doesn't exist as a static member on `ConnectionType`, you can instantiate a `ConnectionType` object, e.g: `new glue.ConnectionType('NEW_TYPE')`.\n\nSee [Adding a Connection to Your Data Store](https://docs.aws.amazon.com/glue/latest/dg/populate-add-connection.html) and [Connection Structure](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-connections.html#aws-glue-api-catalog-connections-Connection) documentation for more information on the supported data stores and their configurations.\n\n## SecurityConfiguration\n\nA `SecurityConfiguration` is a set of security properties that can be used by AWS Glue to encrypt data at rest.\n\n```ts\nnew glue.SecurityConfiguration(this, 'MySecurityConfiguration', {\n cloudWatchEncryption: {\n mode: glue.CloudWatchEncryptionMode.KMS,\n },\n jobBookmarksEncryption: {\n mode: glue.JobBookmarksEncryptionMode.CLIENT_SIDE_KMS,\n },\n s3Encryption: {\n mode: glue.S3EncryptionMode.KMS,\n },\n});\n```\n\nBy default, a shared KMS key is created for use with the encryption configurations that require one. You can also supply your own key for each encryption config, for example, for CloudWatch encryption:\n\n```ts\ndeclare const key: kms.Key;\nnew glue.SecurityConfiguration(this, 'MySecurityConfiguration', {\n cloudWatchEncryption: {\n mode: glue.CloudWatchEncryptionMode.KMS,\n kmsKey: key,\n },\n});\n```\n\nSee [documentation](https://docs.aws.amazon.com/glue/latest/dg/encryption-security-configuration.html) for more info for Glue encrypting data written by Crawlers, Jobs, and Development Endpoints.\n\n## Database\n\nA `Database` is a logical grouping of `Tables` in the Glue Catalog.\n\n```ts\nnew glue.Database(this, 'MyDatabase');\n```\n\n## Table\n\nA Glue table describes a table of data in S3: its structure (column names and types), location of data (S3 objects with a common prefix in a S3 bucket), and format for the files (Json, Avro, Parquet, etc.):\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }, {\n name: 'col2',\n type: glue.Schema.array(glue.Schema.STRING),\n comment: 'col2 is an array of strings' // comment is optional\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\nBy default, a S3 bucket will be created to store the table's data but you can manually pass the `bucket` and `s3Prefix`:\n\n```ts\ndeclare const myBucket: s3.Bucket;\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n bucket: myBucket,\n s3Prefix: 'my-table/',\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\nGlue tables can be configured to contain user-defined properties, to describe the physical storage of table data, through the `storageParameters` property:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n storageParameters: [\n glue.StorageParameter.skipHeaderLineCount(1),\n glue.StorageParameter.compressionType(glue.CompressionType.GZIP),\n glue.StorageParameter.custom('separatorChar', ',')\n ],\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n### Partition Keys\n\nTo improve query performance, a table can specify `partitionKeys` on which data is stored and queried separately. For example, you might partition a table by `year` and `month` to optimize queries based on a time window:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.SMALL_INT,\n }, {\n name: 'month',\n type: glue.Schema.SMALL_INT,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n### Partition Indexes\n\nAnother way to improve query performance is to specify partition indexes. If no partition indexes are\npresent on the table, AWS Glue loads all partitions of the table and filters the loaded partitions using\nthe query expression. The query takes more time to run as the number of partitions increase. With an\nindex, the query will try to fetch a subset of the partitions instead of loading all partitions of the\ntable.\n\nThe keys of a partition index must be a subset of the partition keys of the table. You can have a\nmaximum of 3 partition indexes per table. To specify a partition index, you can use the `partitionIndexes`\nproperty:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.SMALL_INT,\n }, {\n name: 'month',\n type: glue.Schema.SMALL_INT,\n }],\n partitionIndexes: [{\n indexName: 'my-index', // optional\n keyNames: ['year'],\n }], // supply up to 3 indexes\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\nAlternatively, you can call the `addPartitionIndex()` function on a table:\n\n```ts\ndeclare const myTable: glue.Table;\nmyTable.addPartitionIndex({\n indexName: 'my-index',\n keyNames: ['year'],\n});\n```\n\n### Partition Filtering\n\nIf you have a table with a large number of partitions that grows over time, consider using AWS Glue partition indexing and filtering.\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.SMALL_INT,\n }, {\n name: 'month',\n type: glue.Schema.SMALL_INT,\n }],\n dataFormat: glue.DataFormat.JSON,\n enablePartitionFiltering: true,\n});\n```\n\n### Glue Connections\n\nGlue connections allow external data connections to third party databases and data warehouses. However, these connections can also be assigned to Glue Tables, allowing you to query external data sources using the Glue Data Catalog.\n\nWhereas `S3Table` will point to (and if needed, create) a bucket to store the tables' data, `ExternalTable` will point to an existing table in a data source. For example, to create a table in Glue that points to a table in Redshift:\n\n```ts\ndeclare const myConnection: glue.Connection;\ndeclare const myDatabase: glue.Database;\nnew glue.ExternalTable(this, 'MyTable', {\n connection: myConnection,\n externalDataLocation: 'default_db_public_example', // A table in Redshift\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n## [Encryption](https://docs.aws.amazon.com/athena/latest/ug/encryption.html)\n\nYou can enable encryption on a Table's data:\n\n* [S3Managed](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html) - (default) Server side encryption (`SSE-S3`) with an Amazon S3-managed key.\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n encryption: glue.TableEncryption.S3_MANAGED,\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n* [Kms](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html) - Server-side encryption (`SSE-KMS`) with an AWS KMS Key managed by the account owner.\n\n```ts\ndeclare const myDatabase: glue.Database;\n// KMS key is created automatically\nnew glue.S3Table(this, 'MyTable', {\n encryption: glue.TableEncryption.KMS,\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n\n// with an explicit KMS key\nnew glue.S3Table(this, 'MyTable', {\n encryption: glue.TableEncryption.KMS,\n encryptionKey: new kms.Key(this, 'MyKey'),\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n* [KmsManaged](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html) - Server-side encryption (`SSE-KMS`), like `Kms`, except with an AWS KMS Key managed by the AWS Key Management Service.\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n encryption: glue.TableEncryption.KMS_MANAGED,\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n* [ClientSideKms](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html#client-side-encryption-kms-managed-master-key-intro) - Client-side encryption (`CSE-KMS`) with an AWS KMS Key managed by the account owner.\n\n```ts\ndeclare const myDatabase: glue.Database;\n// KMS key is created automatically\nnew glue.S3Table(this, 'MyTable', {\n encryption: glue.TableEncryption.CLIENT_SIDE_KMS,\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n\n// with an explicit KMS key\nnew glue.S3Table(this, 'MyTable', {\n encryption: glue.TableEncryption.CLIENT_SIDE_KMS,\n encryptionKey: new kms.Key(this, 'MyKey'),\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n*Note: you cannot provide a `Bucket` when creating the `S3Table` if you wish to use server-side encryption (`KMS`, `KMS_MANAGED` or `S3_MANAGED`)*.\n\n## Types\n\nA table's schema is a collection of columns, each of which have a `name` and a `type`. Types are recursive structures, consisting of primitive and complex types:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n columns: [{\n name: 'primitive_column',\n type: glue.Schema.STRING,\n }, {\n name: 'array_column',\n type: glue.Schema.array(glue.Schema.INTEGER),\n comment: 'array<integer>',\n }, {\n name: 'map_column',\n type: glue.Schema.map(\n glue.Schema.STRING,\n glue.Schema.TIMESTAMP),\n comment: 'map<string,string>',\n }, {\n name: 'struct_column',\n type: glue.Schema.struct([{\n name: 'nested_column',\n type: glue.Schema.DATE,\n comment: 'nested comment',\n }]),\n comment: \"struct<nested_column:date COMMENT 'nested comment'>\",\n }],\n // ...\n database: myDatabase,\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n### Primitives\n\n#### Numeric\n\n| Name \t| Type \t| Comments |\n|-----------\t|----------\t|------------------------------------------------------------------------------------------------------------------\t|\n| FLOAT \t| Constant \t| A 32-bit single-precision floating point number |\n| INTEGER \t| Constant \t| A 32-bit signed value in two's complement format, with a minimum value of -2^31 and a maximum value of 2^31-1 \t|\n| DOUBLE \t| Constant \t| A 64-bit double-precision floating point number |\n| BIG_INT \t| Constant \t| A 64-bit signed INTEGER in two’s complement format, with a minimum value of -2^63 and a maximum value of 2^63 -1 |\n| SMALL_INT \t| Constant \t| A 16-bit signed INTEGER in two’s complement format, with a minimum value of -2^15 and a maximum value of 2^15-1 |\n| TINY_INT \t| Constant \t| A 8-bit signed INTEGER in two’s complement format, with a minimum value of -2^7 and a maximum value of 2^7-1 |\n\n#### Date and time\n\n| Name \t| Type \t| Comments \t|\n|-----------\t|----------\t|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------\t|\n| DATE \t| Constant \t| A date in UNIX format, such as YYYY-MM-DD. \t|\n| TIMESTAMP \t| Constant \t| Date and time instant in the UNiX format, such as yyyy-mm-dd hh:mm:ss[.f...]. For example, TIMESTAMP '2008-09-15 03:04:05.324'. This format uses the session time zone. \t|\n\n#### String\n\n| Name \t| Type \t| Comments \t|\n|--------------------------------------------\t|----------\t|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\t|\n| STRING \t| Constant \t| A string literal enclosed in single or double quotes \t|\n| decimal(precision: number, scale?: number) \t| Function \t| `precision` is the total number of digits. `scale` (optional) is the number of digits in fractional part with a default of 0. For example, use these type definitions: decimal(11,5), decimal(15) \t|\n| char(length: number) \t| Function \t| Fixed length character data, with a specified length between 1 and 255, such as char(10) \t|\n| varchar(length: number) \t| Function \t| Variable length character data, with a specified length between 1 and 65535, such as varchar(10) \t|\n\n#### Miscellaneous\n\n| Name \t| Type \t| Comments \t|\n|---------\t|----------\t|-------------------------------\t|\n| BOOLEAN \t| Constant \t| Values are `true` and `false` \t|\n| BINARY \t| Constant \t| Value is in binary \t|\n\n### Complex\n\n| Name \t| Type \t| Comments \t|\n|-------------------------------------\t|----------\t|-------------------------------------------------------------------\t|\n| array(itemType: Type) \t| Function \t| An array of some other type \t|\n| map(keyType: Type, valueType: Type) \t| Function \t| A map of some primitive key type to any value type \t|\n| struct(collumns: Column[]) \t| Function \t| Nested structure containing individually named and typed collumns \t|\n\n## Data Quality Ruleset\n\nA `DataQualityRuleset` specifies a data quality ruleset with DQDL rules applied to a specified AWS Glue table. For example, to create a data quality ruleset for a given table:\n\n```ts\nnew glue.DataQualityRuleset(this, 'MyDataQualityRuleset', {\n clientToken: 'client_token',\n description: 'description',\n rulesetName: 'ruleset_name',\n rulesetDqdl: 'ruleset_dqdl',\n tags: {\n key1: 'value1',\n key2: 'value2',\n },\n targetTable: new glue.DataQualityTargetTable('database_name', 'table_name'),\n});\n```\n\nFor more information, see [AWS Glue Data Quality](https://docs.aws.amazon.com/glue/latest/dg/glue-data-quality.html).\n"
3517
3517
  },
3518
3518
  "repository": {
3519
3519
  "directory": "packages/@aws-cdk/aws-glue-alpha",
@@ -4165,7 +4165,7 @@
4165
4165
  "see": "https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_TABLE.html#r_CREATE_EXTERNAL_TABLE-parameters - under _\"TABLE PROPERTIES\"_ > _\"compression_type\"_",
4166
4166
  "stability": "experimental",
4167
4167
  "summary": "The compression type.",
4168
- "example": "declare const myDatabase: glue.Database;\nnew glue.Table(this, 'MyTable', {\n storageParameters: [\n glue.StorageParameter.skipHeaderLineCount(1),\n glue.StorageParameter.compressionType(glue.CompressionType.GZIP),\n glue.StorageParameter.custom('separatorChar', ',')\n ],\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});",
4168
+ "example": "declare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n storageParameters: [\n glue.StorageParameter.skipHeaderLineCount(1),\n glue.StorageParameter.compressionType(glue.CompressionType.GZIP),\n glue.StorageParameter.custom('separatorChar', ',')\n ],\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});",
4169
4169
  "custom": {
4170
4170
  "exampleMetadata": "infused"
4171
4171
  }
@@ -4866,7 +4866,7 @@
4866
4866
  "docs": {
4867
4867
  "stability": "experimental",
4868
4868
  "summary": "Defines the input/output formats and ser/de for a single DataFormat.",
4869
- "example": "declare const myDatabase: glue.Database;\nnew glue.Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.SMALL_INT,\n }, {\n name: 'month',\n type: glue.Schema.SMALL_INT,\n }],\n dataFormat: glue.DataFormat.JSON,\n});",
4869
+ "example": "declare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.SMALL_INT,\n }, {\n name: 'month',\n type: glue.Schema.SMALL_INT,\n }],\n dataFormat: glue.DataFormat.JSON,\n});",
4870
4870
  "custom": {
4871
4871
  "exampleMetadata": "infused"
4872
4872
  }
@@ -5850,6 +5850,287 @@
5850
5850
  "name": "ExecutionClass",
5851
5851
  "symbolId": "lib/job:ExecutionClass"
5852
5852
  },
5853
+ "@aws-cdk/aws-glue-alpha.ExternalTable": {
5854
+ "assembly": "@aws-cdk/aws-glue-alpha",
5855
+ "base": "@aws-cdk/aws-glue-alpha.TableBase",
5856
+ "docs": {
5857
+ "stability": "experimental",
5858
+ "summary": "A Glue table that targets an external data location (e.g. A table in a Redshift Cluster).",
5859
+ "example": "declare const myConnection: glue.Connection;\ndeclare const myDatabase: glue.Database;\nnew glue.ExternalTable(this, 'MyTable', {\n connection: myConnection,\n externalDataLocation: 'default_db_public_example', // A table in Redshift\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});",
5860
+ "custom": {
5861
+ "exampleMetadata": "infused"
5862
+ }
5863
+ },
5864
+ "fqn": "@aws-cdk/aws-glue-alpha.ExternalTable",
5865
+ "initializer": {
5866
+ "docs": {
5867
+ "stability": "experimental"
5868
+ },
5869
+ "locationInModule": {
5870
+ "filename": "lib/external-table.ts",
5871
+ "line": 52
5872
+ },
5873
+ "parameters": [
5874
+ {
5875
+ "name": "scope",
5876
+ "type": {
5877
+ "fqn": "constructs.Construct"
5878
+ }
5879
+ },
5880
+ {
5881
+ "name": "id",
5882
+ "type": {
5883
+ "primitive": "string"
5884
+ }
5885
+ },
5886
+ {
5887
+ "name": "props",
5888
+ "type": {
5889
+ "fqn": "@aws-cdk/aws-glue-alpha.ExternalTableProps"
5890
+ }
5891
+ }
5892
+ ]
5893
+ },
5894
+ "kind": "class",
5895
+ "locationInModule": {
5896
+ "filename": "lib/external-table.ts",
5897
+ "line": 29
5898
+ },
5899
+ "methods": [
5900
+ {
5901
+ "docs": {
5902
+ "stability": "experimental",
5903
+ "summary": "Grant read permissions to the table."
5904
+ },
5905
+ "locationInModule": {
5906
+ "filename": "lib/external-table.ts",
5907
+ "line": 116
5908
+ },
5909
+ "name": "grantRead",
5910
+ "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
5911
+ "parameters": [
5912
+ {
5913
+ "docs": {
5914
+ "summary": "the principal."
5915
+ },
5916
+ "name": "grantee",
5917
+ "type": {
5918
+ "fqn": "aws-cdk-lib.aws_iam.IGrantable"
5919
+ }
5920
+ }
5921
+ ],
5922
+ "returns": {
5923
+ "type": {
5924
+ "fqn": "aws-cdk-lib.aws_iam.Grant"
5925
+ }
5926
+ }
5927
+ },
5928
+ {
5929
+ "docs": {
5930
+ "stability": "experimental",
5931
+ "summary": "Grant read and write permissions to the table."
5932
+ },
5933
+ "locationInModule": {
5934
+ "filename": "lib/external-table.ts",
5935
+ "line": 136
5936
+ },
5937
+ "name": "grantReadWrite",
5938
+ "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
5939
+ "parameters": [
5940
+ {
5941
+ "docs": {
5942
+ "summary": "the principal."
5943
+ },
5944
+ "name": "grantee",
5945
+ "type": {
5946
+ "fqn": "aws-cdk-lib.aws_iam.IGrantable"
5947
+ }
5948
+ }
5949
+ ],
5950
+ "returns": {
5951
+ "type": {
5952
+ "fqn": "aws-cdk-lib.aws_iam.Grant"
5953
+ }
5954
+ }
5955
+ },
5956
+ {
5957
+ "docs": {
5958
+ "stability": "experimental",
5959
+ "summary": "Grant write permissions to the table."
5960
+ },
5961
+ "locationInModule": {
5962
+ "filename": "lib/external-table.ts",
5963
+ "line": 126
5964
+ },
5965
+ "name": "grantWrite",
5966
+ "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
5967
+ "parameters": [
5968
+ {
5969
+ "docs": {
5970
+ "summary": "the principal."
5971
+ },
5972
+ "name": "grantee",
5973
+ "type": {
5974
+ "fqn": "aws-cdk-lib.aws_iam.IGrantable"
5975
+ }
5976
+ }
5977
+ ],
5978
+ "returns": {
5979
+ "type": {
5980
+ "fqn": "aws-cdk-lib.aws_iam.Grant"
5981
+ }
5982
+ }
5983
+ }
5984
+ ],
5985
+ "name": "ExternalTable",
5986
+ "properties": [
5987
+ {
5988
+ "docs": {
5989
+ "stability": "experimental",
5990
+ "summary": "The connection associated to this table."
5991
+ },
5992
+ "immutable": true,
5993
+ "locationInModule": {
5994
+ "filename": "lib/external-table.ts",
5995
+ "line": 43
5996
+ },
5997
+ "name": "connection",
5998
+ "type": {
5999
+ "fqn": "@aws-cdk/aws-glue-alpha.IConnection"
6000
+ }
6001
+ },
6002
+ {
6003
+ "docs": {
6004
+ "stability": "experimental",
6005
+ "summary": "ARN of this table."
6006
+ },
6007
+ "immutable": true,
6008
+ "locationInModule": {
6009
+ "filename": "lib/external-table.ts",
6010
+ "line": 38
6011
+ },
6012
+ "name": "tableArn",
6013
+ "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
6014
+ "type": {
6015
+ "primitive": "string"
6016
+ }
6017
+ },
6018
+ {
6019
+ "docs": {
6020
+ "stability": "experimental",
6021
+ "summary": "Name of this table."
6022
+ },
6023
+ "immutable": true,
6024
+ "locationInModule": {
6025
+ "filename": "lib/external-table.ts",
6026
+ "line": 33
6027
+ },
6028
+ "name": "tableName",
6029
+ "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
6030
+ "type": {
6031
+ "primitive": "string"
6032
+ }
6033
+ },
6034
+ {
6035
+ "docs": {
6036
+ "stability": "experimental"
6037
+ },
6038
+ "immutable": true,
6039
+ "locationInModule": {
6040
+ "filename": "lib/external-table.ts",
6041
+ "line": 50
6042
+ },
6043
+ "name": "tableResource",
6044
+ "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
6045
+ "protected": true,
6046
+ "type": {
6047
+ "fqn": "aws-cdk-lib.aws_glue.CfnTable"
6048
+ }
6049
+ },
6050
+ {
6051
+ "docs": {
6052
+ "stability": "experimental",
6053
+ "summary": "This table's partition indexes."
6054
+ },
6055
+ "immutable": true,
6056
+ "locationInModule": {
6057
+ "filename": "lib/external-table.ts",
6058
+ "line": 48
6059
+ },
6060
+ "name": "partitionIndexes",
6061
+ "optional": true,
6062
+ "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
6063
+ "type": {
6064
+ "collection": {
6065
+ "elementtype": {
6066
+ "fqn": "@aws-cdk/aws-glue-alpha.PartitionIndex"
6067
+ },
6068
+ "kind": "array"
6069
+ }
6070
+ }
6071
+ }
6072
+ ],
6073
+ "symbolId": "lib/external-table:ExternalTable"
6074
+ },
6075
+ "@aws-cdk/aws-glue-alpha.ExternalTableProps": {
6076
+ "assembly": "@aws-cdk/aws-glue-alpha",
6077
+ "datatype": true,
6078
+ "docs": {
6079
+ "stability": "experimental",
6080
+ "example": "declare const myConnection: glue.Connection;\ndeclare const myDatabase: glue.Database;\nnew glue.ExternalTable(this, 'MyTable', {\n connection: myConnection,\n externalDataLocation: 'default_db_public_example', // A table in Redshift\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});",
6081
+ "custom": {
6082
+ "exampleMetadata": "infused"
6083
+ }
6084
+ },
6085
+ "fqn": "@aws-cdk/aws-glue-alpha.ExternalTableProps",
6086
+ "interfaces": [
6087
+ "@aws-cdk/aws-glue-alpha.TableBaseProps"
6088
+ ],
6089
+ "kind": "interface",
6090
+ "locationInModule": {
6091
+ "filename": "lib/external-table.ts",
6092
+ "line": 8
6093
+ },
6094
+ "name": "ExternalTableProps",
6095
+ "properties": [
6096
+ {
6097
+ "abstract": true,
6098
+ "docs": {
6099
+ "default": "- No connection",
6100
+ "stability": "experimental",
6101
+ "summary": "The connection the table will use when performing reads and writes."
6102
+ },
6103
+ "immutable": true,
6104
+ "locationInModule": {
6105
+ "filename": "lib/external-table.ts",
6106
+ "line": 14
6107
+ },
6108
+ "name": "connection",
6109
+ "type": {
6110
+ "fqn": "@aws-cdk/aws-glue-alpha.IConnection"
6111
+ }
6112
+ },
6113
+ {
6114
+ "abstract": true,
6115
+ "docs": {
6116
+ "default": "- No outsourced data source location",
6117
+ "remarks": "If this property is set, it will override both `bucket` and `s3Prefix`.",
6118
+ "stability": "experimental",
6119
+ "summary": "The data source location of the glue table, (e.g. `default_db_public_example` for Redshift)."
6120
+ },
6121
+ "immutable": true,
6122
+ "locationInModule": {
6123
+ "filename": "lib/external-table.ts",
6124
+ "line": 23
6125
+ },
6126
+ "name": "externalDataLocation",
6127
+ "type": {
6128
+ "primitive": "string"
6129
+ }
6130
+ }
6131
+ ],
6132
+ "symbolId": "lib/external-table:ExternalTableProps"
6133
+ },
5853
6134
  "@aws-cdk/aws-glue-alpha.GlueVersion": {
5854
6135
  "assembly": "@aws-cdk/aws-glue-alpha",
5855
6136
  "docs": {
@@ -6614,8 +6895,8 @@
6614
6895
  ],
6615
6896
  "kind": "interface",
6616
6897
  "locationInModule": {
6617
- "filename": "lib/table.ts",
6618
- "line": 32
6898
+ "filename": "lib/table-base.ts",
6899
+ "line": 30
6619
6900
  },
6620
6901
  "name": "ITable",
6621
6902
  "properties": [
@@ -6629,8 +6910,8 @@
6629
6910
  },
6630
6911
  "immutable": true,
6631
6912
  "locationInModule": {
6632
- "filename": "lib/table.ts",
6633
- "line": 36
6913
+ "filename": "lib/table-base.ts",
6914
+ "line": 34
6634
6915
  },
6635
6916
  "name": "tableArn",
6636
6917
  "type": {
@@ -6647,8 +6928,8 @@
6647
6928
  },
6648
6929
  "immutable": true,
6649
6930
  "locationInModule": {
6650
- "filename": "lib/table.ts",
6651
- "line": 41
6931
+ "filename": "lib/table-base.ts",
6932
+ "line": 39
6652
6933
  },
6653
6934
  "name": "tableName",
6654
6935
  "type": {
@@ -6656,7 +6937,7 @@
6656
6937
  }
6657
6938
  }
6658
6939
  ],
6659
- "symbolId": "lib/table:ITable"
6940
+ "symbolId": "lib/table-base:ITable"
6660
6941
  },
6661
6942
  "@aws-cdk/aws-glue-alpha.InputFormat": {
6662
6943
  "assembly": "@aws-cdk/aws-glue-alpha",
@@ -8847,8 +9128,8 @@
8847
9128
  "fqn": "@aws-cdk/aws-glue-alpha.PartitionIndex",
8848
9129
  "kind": "interface",
8849
9130
  "locationInModule": {
8850
- "filename": "lib/table.ts",
8851
- "line": 17
9131
+ "filename": "lib/table-base.ts",
9132
+ "line": 15
8852
9133
  },
8853
9134
  "name": "PartitionIndex",
8854
9135
  "properties": [
@@ -8861,8 +9142,8 @@
8861
9142
  },
8862
9143
  "immutable": true,
8863
9144
  "locationInModule": {
8864
- "filename": "lib/table.ts",
8865
- "line": 30
9145
+ "filename": "lib/table-base.ts",
9146
+ "line": 28
8866
9147
  },
8867
9148
  "name": "keyNames",
8868
9149
  "type": {
@@ -8883,8 +9164,8 @@
8883
9164
  },
8884
9165
  "immutable": true,
8885
9166
  "locationInModule": {
8886
- "filename": "lib/table.ts",
8887
- "line": 23
9167
+ "filename": "lib/table-base.ts",
9168
+ "line": 21
8888
9169
  },
8889
9170
  "name": "indexName",
8890
9171
  "optional": true,
@@ -8893,7 +9174,7 @@
8893
9174
  }
8894
9175
  }
8895
9176
  ],
8896
- "symbolId": "lib/table:PartitionIndex"
9177
+ "symbolId": "lib/table-base:PartitionIndex"
8897
9178
  },
8898
9179
  "@aws-cdk/aws-glue-alpha.PythonRayExecutableProps": {
8899
9180
  "assembly": "@aws-cdk/aws-glue-alpha",
@@ -9650,40 +9931,423 @@
9650
9931
  "name": "S3EncryptionMode",
9651
9932
  "symbolId": "lib/security-configuration:S3EncryptionMode"
9652
9933
  },
9653
- "@aws-cdk/aws-glue-alpha.ScalaJobExecutableProps": {
9934
+ "@aws-cdk/aws-glue-alpha.S3Table": {
9654
9935
  "assembly": "@aws-cdk/aws-glue-alpha",
9655
- "datatype": true,
9936
+ "base": "@aws-cdk/aws-glue-alpha.TableBase",
9656
9937
  "docs": {
9657
9938
  "stability": "experimental",
9658
- "summary": "Props for creating a Scala Spark (ETL or Streaming) job executable.",
9659
- "example": "declare const bucket: s3.Bucket;\nnew glue.Job(this, 'ScalaSparkEtlJob', {\n executable: glue.JobExecutable.scalaEtl({\n glueVersion: glue.GlueVersion.V4_0,\n script: glue.Code.fromBucket(bucket, 'src/com/example/HelloWorld.scala'),\n className: 'com.example.HelloWorld',\n extraJars: [glue.Code.fromBucket(bucket, 'jars/HelloWorld.jar')],\n }),\n workerType: glue.WorkerType.G_8X,\n description: 'an example Scala ETL job',\n});",
9939
+ "summary": "A Glue table that targets a S3 dataset.",
9940
+ "example": "declare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.SMALL_INT,\n }, {\n name: 'month',\n type: glue.Schema.SMALL_INT,\n }],\n dataFormat: glue.DataFormat.JSON,\n});",
9660
9941
  "custom": {
9661
9942
  "exampleMetadata": "infused"
9662
9943
  }
9663
9944
  },
9664
- "fqn": "@aws-cdk/aws-glue-alpha.ScalaJobExecutableProps",
9665
- "kind": "interface",
9666
- "locationInModule": {
9667
- "filename": "lib/job-executable.ts",
9668
- "line": 234
9669
- },
9670
- "name": "ScalaJobExecutableProps",
9671
- "properties": [
9672
- {
9673
- "abstract": true,
9674
- "docs": {
9675
- "see": " `--class` in https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html",
9676
- "stability": "experimental",
9677
- "summary": "The fully qualified Scala class name that serves as the entry point for the job."
9678
- },
9679
- "immutable": true,
9680
- "locationInModule": {
9681
- "filename": "lib/job-executable.ts",
9682
- "line": 240
9683
- },
9684
- "name": "className",
9685
- "type": {
9686
- "primitive": "string"
9945
+ "fqn": "@aws-cdk/aws-glue-alpha.S3Table",
9946
+ "initializer": {
9947
+ "docs": {
9948
+ "stability": "experimental"
9949
+ },
9950
+ "locationInModule": {
9951
+ "filename": "lib/s3-table.ts",
9952
+ "line": 120
9953
+ },
9954
+ "parameters": [
9955
+ {
9956
+ "name": "scope",
9957
+ "type": {
9958
+ "fqn": "constructs.Construct"
9959
+ }
9960
+ },
9961
+ {
9962
+ "name": "id",
9963
+ "type": {
9964
+ "primitive": "string"
9965
+ }
9966
+ },
9967
+ {
9968
+ "name": "props",
9969
+ "type": {
9970
+ "fqn": "@aws-cdk/aws-glue-alpha.S3TableProps"
9971
+ }
9972
+ }
9973
+ ]
9974
+ },
9975
+ "kind": "class",
9976
+ "locationInModule": {
9977
+ "filename": "lib/s3-table.ts",
9978
+ "line": 82
9979
+ },
9980
+ "methods": [
9981
+ {
9982
+ "docs": {
9983
+ "stability": "experimental"
9984
+ },
9985
+ "locationInModule": {
9986
+ "filename": "lib/s3-table.ts",
9987
+ "line": 219
9988
+ },
9989
+ "name": "generateS3PrefixForGrant",
9990
+ "protected": true,
9991
+ "returns": {
9992
+ "type": {
9993
+ "primitive": "string"
9994
+ }
9995
+ }
9996
+ },
9997
+ {
9998
+ "docs": {
9999
+ "stability": "experimental",
10000
+ "summary": "Grant read permissions to the table and the underlying data stored in S3 to an IAM principal."
10001
+ },
10002
+ "locationInModule": {
10003
+ "filename": "lib/s3-table.ts",
10004
+ "line": 188
10005
+ },
10006
+ "name": "grantRead",
10007
+ "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
10008
+ "parameters": [
10009
+ {
10010
+ "docs": {
10011
+ "summary": "the principal."
10012
+ },
10013
+ "name": "grantee",
10014
+ "type": {
10015
+ "fqn": "aws-cdk-lib.aws_iam.IGrantable"
10016
+ }
10017
+ }
10018
+ ],
10019
+ "returns": {
10020
+ "type": {
10021
+ "fqn": "aws-cdk-lib.aws_iam.Grant"
10022
+ }
10023
+ }
10024
+ },
10025
+ {
10026
+ "docs": {
10027
+ "stability": "experimental",
10028
+ "summary": "Grant read and write permissions to the table and the underlying data stored in S3 to an IAM principal."
10029
+ },
10030
+ "locationInModule": {
10031
+ "filename": "lib/s3-table.ts",
10032
+ "line": 212
10033
+ },
10034
+ "name": "grantReadWrite",
10035
+ "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
10036
+ "parameters": [
10037
+ {
10038
+ "docs": {
10039
+ "summary": "the principal."
10040
+ },
10041
+ "name": "grantee",
10042
+ "type": {
10043
+ "fqn": "aws-cdk-lib.aws_iam.IGrantable"
10044
+ }
10045
+ }
10046
+ ],
10047
+ "returns": {
10048
+ "type": {
10049
+ "fqn": "aws-cdk-lib.aws_iam.Grant"
10050
+ }
10051
+ }
10052
+ },
10053
+ {
10054
+ "docs": {
10055
+ "stability": "experimental",
10056
+ "summary": "Grant write permissions to the table and the underlying data stored in S3 to an IAM principal."
10057
+ },
10058
+ "locationInModule": {
10059
+ "filename": "lib/s3-table.ts",
10060
+ "line": 200
10061
+ },
10062
+ "name": "grantWrite",
10063
+ "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
10064
+ "parameters": [
10065
+ {
10066
+ "docs": {
10067
+ "summary": "the principal."
10068
+ },
10069
+ "name": "grantee",
10070
+ "type": {
10071
+ "fqn": "aws-cdk-lib.aws_iam.IGrantable"
10072
+ }
10073
+ }
10074
+ ],
10075
+ "returns": {
10076
+ "type": {
10077
+ "fqn": "aws-cdk-lib.aws_iam.Grant"
10078
+ }
10079
+ }
10080
+ }
10081
+ ],
10082
+ "name": "S3Table",
10083
+ "properties": [
10084
+ {
10085
+ "docs": {
10086
+ "stability": "experimental",
10087
+ "summary": "S3 bucket in which the table's data resides."
10088
+ },
10089
+ "immutable": true,
10090
+ "locationInModule": {
10091
+ "filename": "lib/s3-table.ts",
10092
+ "line": 96
10093
+ },
10094
+ "name": "bucket",
10095
+ "type": {
10096
+ "fqn": "aws-cdk-lib.aws_s3.IBucket"
10097
+ }
10098
+ },
10099
+ {
10100
+ "docs": {
10101
+ "stability": "experimental",
10102
+ "summary": "The type of encryption enabled for the table."
10103
+ },
10104
+ "immutable": true,
10105
+ "locationInModule": {
10106
+ "filename": "lib/s3-table.ts",
10107
+ "line": 106
10108
+ },
10109
+ "name": "encryption",
10110
+ "type": {
10111
+ "fqn": "@aws-cdk/aws-glue-alpha.TableEncryption"
10112
+ }
10113
+ },
10114
+ {
10115
+ "docs": {
10116
+ "stability": "experimental",
10117
+ "summary": "S3 Key Prefix under which this table's files are stored in S3."
10118
+ },
10119
+ "immutable": true,
10120
+ "locationInModule": {
10121
+ "filename": "lib/s3-table.ts",
10122
+ "line": 101
10123
+ },
10124
+ "name": "s3Prefix",
10125
+ "type": {
10126
+ "primitive": "string"
10127
+ }
10128
+ },
10129
+ {
10130
+ "docs": {
10131
+ "stability": "experimental",
10132
+ "summary": "ARN of this table."
10133
+ },
10134
+ "immutable": true,
10135
+ "locationInModule": {
10136
+ "filename": "lib/s3-table.ts",
10137
+ "line": 91
10138
+ },
10139
+ "name": "tableArn",
10140
+ "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
10141
+ "type": {
10142
+ "primitive": "string"
10143
+ }
10144
+ },
10145
+ {
10146
+ "docs": {
10147
+ "stability": "experimental",
10148
+ "summary": "Name of this table."
10149
+ },
10150
+ "immutable": true,
10151
+ "locationInModule": {
10152
+ "filename": "lib/s3-table.ts",
10153
+ "line": 86
10154
+ },
10155
+ "name": "tableName",
10156
+ "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
10157
+ "type": {
10158
+ "primitive": "string"
10159
+ }
10160
+ },
10161
+ {
10162
+ "docs": {
10163
+ "stability": "experimental"
10164
+ },
10165
+ "immutable": true,
10166
+ "locationInModule": {
10167
+ "filename": "lib/s3-table.ts",
10168
+ "line": 118
10169
+ },
10170
+ "name": "tableResource",
10171
+ "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
10172
+ "protected": true,
10173
+ "type": {
10174
+ "fqn": "aws-cdk-lib.aws_glue.CfnTable"
10175
+ }
10176
+ },
10177
+ {
10178
+ "docs": {
10179
+ "remarks": "Otherwise, `undefined`.",
10180
+ "stability": "experimental",
10181
+ "summary": "The KMS key used to secure the data if `encryption` is set to `CSE-KMS` or `SSE-KMS`."
10182
+ },
10183
+ "immutable": true,
10184
+ "locationInModule": {
10185
+ "filename": "lib/s3-table.ts",
10186
+ "line": 111
10187
+ },
10188
+ "name": "encryptionKey",
10189
+ "optional": true,
10190
+ "type": {
10191
+ "fqn": "aws-cdk-lib.aws_kms.IKey"
10192
+ }
10193
+ },
10194
+ {
10195
+ "docs": {
10196
+ "stability": "experimental",
10197
+ "summary": "This table's partition indexes."
10198
+ },
10199
+ "immutable": true,
10200
+ "locationInModule": {
10201
+ "filename": "lib/s3-table.ts",
10202
+ "line": 116
10203
+ },
10204
+ "name": "partitionIndexes",
10205
+ "optional": true,
10206
+ "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
10207
+ "type": {
10208
+ "collection": {
10209
+ "elementtype": {
10210
+ "fqn": "@aws-cdk/aws-glue-alpha.PartitionIndex"
10211
+ },
10212
+ "kind": "array"
10213
+ }
10214
+ }
10215
+ }
10216
+ ],
10217
+ "symbolId": "lib/s3-table:S3Table"
10218
+ },
10219
+ "@aws-cdk/aws-glue-alpha.S3TableProps": {
10220
+ "assembly": "@aws-cdk/aws-glue-alpha",
10221
+ "datatype": true,
10222
+ "docs": {
10223
+ "stability": "experimental",
10224
+ "example": "declare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.SMALL_INT,\n }, {\n name: 'month',\n type: glue.Schema.SMALL_INT,\n }],\n dataFormat: glue.DataFormat.JSON,\n});",
10225
+ "custom": {
10226
+ "exampleMetadata": "infused"
10227
+ }
10228
+ },
10229
+ "fqn": "@aws-cdk/aws-glue-alpha.S3TableProps",
10230
+ "interfaces": [
10231
+ "@aws-cdk/aws-glue-alpha.TableBaseProps"
10232
+ ],
10233
+ "kind": "interface",
10234
+ "locationInModule": {
10235
+ "filename": "lib/s3-table.ts",
10236
+ "line": 42
10237
+ },
10238
+ "name": "S3TableProps",
10239
+ "properties": [
10240
+ {
10241
+ "abstract": true,
10242
+ "docs": {
10243
+ "default": "one is created for you",
10244
+ "stability": "experimental",
10245
+ "summary": "S3 bucket in which to store data."
10246
+ },
10247
+ "immutable": true,
10248
+ "locationInModule": {
10249
+ "filename": "lib/s3-table.ts",
10250
+ "line": 48
10251
+ },
10252
+ "name": "bucket",
10253
+ "optional": true,
10254
+ "type": {
10255
+ "fqn": "aws-cdk-lib.aws_s3.IBucket"
10256
+ }
10257
+ },
10258
+ {
10259
+ "abstract": true,
10260
+ "docs": {
10261
+ "default": "BucketEncryption.S3_MANAGED",
10262
+ "remarks": "You can only provide this option if you are not explicitly passing in a bucket.\n\nIf you choose `SSE-KMS`, you *can* provide an un-managed KMS key with `encryptionKey`.\nIf you choose `CSE-KMS`, you *must* provide an un-managed KMS key with `encryptionKey`.",
10263
+ "stability": "experimental",
10264
+ "summary": "The kind of encryption to secure the data with."
10265
+ },
10266
+ "immutable": true,
10267
+ "locationInModule": {
10268
+ "filename": "lib/s3-table.ts",
10269
+ "line": 67
10270
+ },
10271
+ "name": "encryption",
10272
+ "optional": true,
10273
+ "type": {
10274
+ "fqn": "@aws-cdk/aws-glue-alpha.TableEncryption"
10275
+ }
10276
+ },
10277
+ {
10278
+ "abstract": true,
10279
+ "docs": {
10280
+ "default": "key is managed by KMS.",
10281
+ "remarks": "The `encryption` property must be `SSE-KMS` or `CSE-KMS`.",
10282
+ "stability": "experimental",
10283
+ "summary": "External KMS key to use for bucket encryption."
10284
+ },
10285
+ "immutable": true,
10286
+ "locationInModule": {
10287
+ "filename": "lib/s3-table.ts",
10288
+ "line": 76
10289
+ },
10290
+ "name": "encryptionKey",
10291
+ "optional": true,
10292
+ "type": {
10293
+ "fqn": "aws-cdk-lib.aws_kms.IKey"
10294
+ }
10295
+ },
10296
+ {
10297
+ "abstract": true,
10298
+ "docs": {
10299
+ "default": "- No prefix. The data will be stored under the root of the bucket.",
10300
+ "stability": "experimental",
10301
+ "summary": "S3 prefix under which table objects are stored."
10302
+ },
10303
+ "immutable": true,
10304
+ "locationInModule": {
10305
+ "filename": "lib/s3-table.ts",
10306
+ "line": 55
10307
+ },
10308
+ "name": "s3Prefix",
10309
+ "optional": true,
10310
+ "type": {
10311
+ "primitive": "string"
10312
+ }
10313
+ }
10314
+ ],
10315
+ "symbolId": "lib/s3-table:S3TableProps"
10316
+ },
10317
+ "@aws-cdk/aws-glue-alpha.ScalaJobExecutableProps": {
10318
+ "assembly": "@aws-cdk/aws-glue-alpha",
10319
+ "datatype": true,
10320
+ "docs": {
10321
+ "stability": "experimental",
10322
+ "summary": "Props for creating a Scala Spark (ETL or Streaming) job executable.",
10323
+ "example": "declare const bucket: s3.Bucket;\nnew glue.Job(this, 'ScalaSparkEtlJob', {\n executable: glue.JobExecutable.scalaEtl({\n glueVersion: glue.GlueVersion.V4_0,\n script: glue.Code.fromBucket(bucket, 'src/com/example/HelloWorld.scala'),\n className: 'com.example.HelloWorld',\n extraJars: [glue.Code.fromBucket(bucket, 'jars/HelloWorld.jar')],\n }),\n workerType: glue.WorkerType.G_8X,\n description: 'an example Scala ETL job',\n});",
10324
+ "custom": {
10325
+ "exampleMetadata": "infused"
10326
+ }
10327
+ },
10328
+ "fqn": "@aws-cdk/aws-glue-alpha.ScalaJobExecutableProps",
10329
+ "kind": "interface",
10330
+ "locationInModule": {
10331
+ "filename": "lib/job-executable.ts",
10332
+ "line": 234
10333
+ },
10334
+ "name": "ScalaJobExecutableProps",
10335
+ "properties": [
10336
+ {
10337
+ "abstract": true,
10338
+ "docs": {
10339
+ "see": " `--class` in https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html",
10340
+ "stability": "experimental",
10341
+ "summary": "The fully qualified Scala class name that serves as the entry point for the job."
10342
+ },
10343
+ "immutable": true,
10344
+ "locationInModule": {
10345
+ "filename": "lib/job-executable.ts",
10346
+ "line": 240
10347
+ },
10348
+ "name": "className",
10349
+ "type": {
10350
+ "primitive": "string"
9687
10351
  }
9688
10352
  },
9689
10353
  {
@@ -9813,7 +10477,7 @@
9813
10477
  "docs": {
9814
10478
  "see": "https://docs.aws.amazon.com/athena/latest/ug/data-types.html",
9815
10479
  "stability": "experimental",
9816
- "example": "declare const myDatabase: glue.Database;\nnew glue.Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.SMALL_INT,\n }, {\n name: 'month',\n type: glue.Schema.SMALL_INT,\n }],\n dataFormat: glue.DataFormat.JSON,\n});",
10480
+ "example": "declare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.SMALL_INT,\n }, {\n name: 'month',\n type: glue.Schema.SMALL_INT,\n }],\n dataFormat: glue.DataFormat.JSON,\n});",
9817
10481
  "custom": {
9818
10482
  "exampleMetadata": "infused"
9819
10483
  }
@@ -10840,7 +11504,7 @@
10840
11504
  "see": "https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_TABLE.html#r_CREATE_EXTERNAL_TABLE-parameters - under _\"TABLE PROPERTIES\"_",
10841
11505
  "stability": "experimental",
10842
11506
  "summary": "A storage parameter. The list of storage parameters available is not exhaustive and other keys may be used.",
10843
- "example": "declare const myDatabase: glue.Database;\nnew glue.Table(this, 'MyTable', {\n storageParameters: [\n glue.StorageParameter.skipHeaderLineCount(1),\n glue.StorageParameter.compressionType(glue.CompressionType.GZIP),\n glue.StorageParameter.custom('separatorChar', ',')\n ],\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});",
11507
+ "example": "declare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n storageParameters: [\n glue.StorageParameter.skipHeaderLineCount(1),\n glue.StorageParameter.compressionType(glue.CompressionType.GZIP),\n glue.StorageParameter.custom('separatorChar', ',')\n ],\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});",
10844
11508
  "custom": {
10845
11509
  "exampleMetadata": "infused"
10846
11510
  }
@@ -11576,11 +12240,12 @@
11576
12240
  },
11577
12241
  "@aws-cdk/aws-glue-alpha.Table": {
11578
12242
  "assembly": "@aws-cdk/aws-glue-alpha",
11579
- "base": "aws-cdk-lib.Resource",
12243
+ "base": "@aws-cdk/aws-glue-alpha.S3Table",
11580
12244
  "docs": {
11581
- "stability": "experimental",
12245
+ "deprecated": "Use {@link S3Table } instead.",
12246
+ "stability": "deprecated",
11582
12247
  "summary": "A Glue table.",
11583
- "example": "declare const myDatabase: glue.Database;\nnew glue.Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.SMALL_INT,\n }, {\n name: 'month',\n type: glue.Schema.SMALL_INT,\n }],\n dataFormat: glue.DataFormat.JSON,\n});",
12248
+ "example": " declare const glueDatabase: glue.IDatabase;\n const table = new glue.Table(this, 'Table', {\n storageParameters: [\n glue.StorageParameter.skipHeaderLineCount(1),\n glue.StorageParameter.compressionType(glue.CompressionType.GZIP),\n glue.StorageParameter.custom('foo', 'bar'), // Will have no effect\n glue.StorageParameter.custom('separatorChar', ','), // Will describe the separator char used in the data\n glue.StorageParameter.custom(glue.StorageParameters.WRITE_PARALLEL, 'off'),\n ],\n // ...\n database: glueDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.CSV,\n });",
11584
12249
  "custom": {
11585
12250
  "exampleMetadata": "infused"
11586
12251
  }
@@ -11591,8 +12256,109 @@
11591
12256
  "stability": "experimental"
11592
12257
  },
11593
12258
  "locationInModule": {
11594
- "filename": "lib/table.ts",
11595
- "line": 324
12259
+ "filename": "lib/s3-table.ts",
12260
+ "line": 120
12261
+ },
12262
+ "parameters": [
12263
+ {
12264
+ "name": "scope",
12265
+ "type": {
12266
+ "fqn": "constructs.Construct"
12267
+ }
12268
+ },
12269
+ {
12270
+ "name": "id",
12271
+ "type": {
12272
+ "primitive": "string"
12273
+ }
12274
+ },
12275
+ {
12276
+ "name": "props",
12277
+ "type": {
12278
+ "fqn": "@aws-cdk/aws-glue-alpha.S3TableProps"
12279
+ }
12280
+ }
12281
+ ]
12282
+ },
12283
+ "kind": "class",
12284
+ "locationInModule": {
12285
+ "filename": "lib/table-deprecated.ts",
12286
+ "line": 10
12287
+ },
12288
+ "name": "Table",
12289
+ "symbolId": "lib/table-deprecated:Table"
12290
+ },
12291
+ "@aws-cdk/aws-glue-alpha.TableAttributes": {
12292
+ "assembly": "@aws-cdk/aws-glue-alpha",
12293
+ "datatype": true,
12294
+ "docs": {
12295
+ "stability": "experimental",
12296
+ "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as glue_alpha from '@aws-cdk/aws-glue-alpha';\nconst tableAttributes: glue_alpha.TableAttributes = {\n tableArn: 'tableArn',\n tableName: 'tableName',\n};",
12297
+ "custom": {
12298
+ "exampleMetadata": "fixture=_generated"
12299
+ }
12300
+ },
12301
+ "fqn": "@aws-cdk/aws-glue-alpha.TableAttributes",
12302
+ "kind": "interface",
12303
+ "locationInModule": {
12304
+ "filename": "lib/table-base.ts",
12305
+ "line": 42
12306
+ },
12307
+ "name": "TableAttributes",
12308
+ "properties": [
12309
+ {
12310
+ "abstract": true,
12311
+ "docs": {
12312
+ "stability": "experimental"
12313
+ },
12314
+ "immutable": true,
12315
+ "locationInModule": {
12316
+ "filename": "lib/table-base.ts",
12317
+ "line": 43
12318
+ },
12319
+ "name": "tableArn",
12320
+ "type": {
12321
+ "primitive": "string"
12322
+ }
12323
+ },
12324
+ {
12325
+ "abstract": true,
12326
+ "docs": {
12327
+ "stability": "experimental"
12328
+ },
12329
+ "immutable": true,
12330
+ "locationInModule": {
12331
+ "filename": "lib/table-base.ts",
12332
+ "line": 44
12333
+ },
12334
+ "name": "tableName",
12335
+ "type": {
12336
+ "primitive": "string"
12337
+ }
12338
+ }
12339
+ ],
12340
+ "symbolId": "lib/table-base:TableAttributes"
12341
+ },
12342
+ "@aws-cdk/aws-glue-alpha.TableBase": {
12343
+ "abstract": true,
12344
+ "assembly": "@aws-cdk/aws-glue-alpha",
12345
+ "base": "aws-cdk-lib.Resource",
12346
+ "docs": {
12347
+ "stability": "experimental",
12348
+ "summary": "A Glue table.",
12349
+ "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as glue_alpha from '@aws-cdk/aws-glue-alpha';\nconst tableBase = glue_alpha.TableBase.fromTableArn(this, 'MyTableBase', 'tableArn');",
12350
+ "custom": {
12351
+ "exampleMetadata": "fixture=_generated"
12352
+ }
12353
+ },
12354
+ "fqn": "@aws-cdk/aws-glue-alpha.TableBase",
12355
+ "initializer": {
12356
+ "docs": {
12357
+ "stability": "experimental"
12358
+ },
12359
+ "locationInModule": {
12360
+ "filename": "lib/table-base.ts",
12361
+ "line": 224
11596
12362
  },
11597
12363
  "parameters": [
11598
12364
  {
@@ -11610,7 +12376,7 @@
11610
12376
  {
11611
12377
  "name": "props",
11612
12378
  "type": {
11613
- "fqn": "@aws-cdk/aws-glue-alpha.TableProps"
12379
+ "fqn": "@aws-cdk/aws-glue-alpha.TableBaseProps"
11614
12380
  }
11615
12381
  }
11616
12382
  ]
@@ -11620,8 +12386,8 @@
11620
12386
  ],
11621
12387
  "kind": "class",
11622
12388
  "locationInModule": {
11623
- "filename": "lib/table.ts",
11624
- "line": 225
12389
+ "filename": "lib/table-base.ts",
12390
+ "line": 155
11625
12391
  },
11626
12392
  "methods": [
11627
12393
  {
@@ -11629,8 +12395,8 @@
11629
12395
  "stability": "experimental"
11630
12396
  },
11631
12397
  "locationInModule": {
11632
- "filename": "lib/table.ts",
11633
- "line": 227
12398
+ "filename": "lib/table-base.ts",
12399
+ "line": 157
11634
12400
  },
11635
12401
  "name": "fromTableArn",
11636
12402
  "parameters": [
@@ -11666,8 +12432,8 @@
11666
12432
  "summary": "Creates a Table construct that represents an external table."
11667
12433
  },
11668
12434
  "locationInModule": {
11669
- "filename": "lib/table.ts",
11670
- "line": 243
12435
+ "filename": "lib/table-base.ts",
12436
+ "line": 173
11671
12437
  },
11672
12438
  "name": "fromTableAttributes",
11673
12439
  "parameters": [
@@ -11714,8 +12480,8 @@
11714
12480
  "summary": "Add a partition index to the table."
11715
12481
  },
11716
12482
  "locationInModule": {
11717
- "filename": "lib/table.ts",
11718
- "line": 409
12483
+ "filename": "lib/table-base.ts",
12484
+ "line": 254
11719
12485
  },
11720
12486
  "name": "addPartitionIndex",
11721
12487
  "parameters": [
@@ -11733,8 +12499,8 @@
11733
12499
  "summary": "Grant the given identity custom permissions."
11734
12500
  },
11735
12501
  "locationInModule": {
11736
- "filename": "lib/table.ts",
11737
- "line": 508
12502
+ "filename": "lib/table-base.ts",
12503
+ "line": 317
11738
12504
  },
11739
12505
  "name": "grant",
11740
12506
  "parameters": [
@@ -11763,20 +12529,17 @@
11763
12529
  }
11764
12530
  },
11765
12531
  {
12532
+ "abstract": true,
11766
12533
  "docs": {
11767
- "stability": "experimental",
11768
- "summary": "Grant read permissions to the table and the underlying data stored in S3 to an IAM principal."
12534
+ "stability": "experimental"
11769
12535
  },
11770
12536
  "locationInModule": {
11771
- "filename": "lib/table.ts",
11772
- "line": 474
12537
+ "filename": "lib/table-base.ts",
12538
+ "line": 243
11773
12539
  },
11774
12540
  "name": "grantRead",
11775
12541
  "parameters": [
11776
12542
  {
11777
- "docs": {
11778
- "summary": "the principal."
11779
- },
11780
12543
  "name": "grantee",
11781
12544
  "type": {
11782
12545
  "fqn": "aws-cdk-lib.aws_iam.IGrantable"
@@ -11790,20 +12553,17 @@
11790
12553
  }
11791
12554
  },
11792
12555
  {
12556
+ "abstract": true,
11793
12557
  "docs": {
11794
- "stability": "experimental",
11795
- "summary": "Grant read and write permissions to the table and the underlying data stored in S3 to an IAM principal."
12558
+ "stability": "experimental"
11796
12559
  },
11797
12560
  "locationInModule": {
11798
- "filename": "lib/table.ts",
11799
- "line": 498
12561
+ "filename": "lib/table-base.ts",
12562
+ "line": 245
11800
12563
  },
11801
12564
  "name": "grantReadWrite",
11802
12565
  "parameters": [
11803
12566
  {
11804
- "docs": {
11805
- "summary": "the principal."
11806
- },
11807
12567
  "name": "grantee",
11808
12568
  "type": {
11809
12569
  "fqn": "aws-cdk-lib.aws_iam.IGrantable"
@@ -11823,8 +12583,8 @@
11823
12583
  "summary": "Grant the given identity custom permissions to ALL underlying resources of the table."
11824
12584
  },
11825
12585
  "locationInModule": {
11826
- "filename": "lib/table.ts",
11827
- "line": 520
12586
+ "filename": "lib/table-base.ts",
12587
+ "line": 329
11828
12588
  },
11829
12589
  "name": "grantToUnderlyingResources",
11830
12590
  "parameters": [
@@ -11853,20 +12613,17 @@
11853
12613
  }
11854
12614
  },
11855
12615
  {
12616
+ "abstract": true,
11856
12617
  "docs": {
11857
- "stability": "experimental",
11858
- "summary": "Grant write permissions to the table and the underlying data stored in S3 to an IAM principal."
12618
+ "stability": "experimental"
11859
12619
  },
11860
12620
  "locationInModule": {
11861
- "filename": "lib/table.ts",
11862
- "line": 486
12621
+ "filename": "lib/table-base.ts",
12622
+ "line": 244
11863
12623
  },
11864
12624
  "name": "grantWrite",
11865
12625
  "parameters": [
11866
12626
  {
11867
- "docs": {
11868
- "summary": "the principal."
11869
- },
11870
12627
  "name": "grantee",
11871
12628
  "type": {
11872
12629
  "fqn": "aws-cdk-lib.aws_iam.IGrantable"
@@ -11880,23 +12637,8 @@
11880
12637
  }
11881
12638
  }
11882
12639
  ],
11883
- "name": "Table",
12640
+ "name": "TableBase",
11884
12641
  "properties": [
11885
- {
11886
- "docs": {
11887
- "stability": "experimental",
11888
- "summary": "S3 bucket in which the table's data resides."
11889
- },
11890
- "immutable": true,
11891
- "locationInModule": {
11892
- "filename": "lib/table.ts",
11893
- "line": 275
11894
- },
11895
- "name": "bucket",
11896
- "type": {
11897
- "fqn": "aws-cdk-lib.aws_s3.IBucket"
11898
- }
11899
- },
11900
12642
  {
11901
12643
  "docs": {
11902
12644
  "stability": "experimental",
@@ -11904,8 +12646,8 @@
11904
12646
  },
11905
12647
  "immutable": true,
11906
12648
  "locationInModule": {
11907
- "filename": "lib/table.ts",
11908
- "line": 300
12649
+ "filename": "lib/table-base.ts",
12650
+ "line": 205
11909
12651
  },
11910
12652
  "name": "columns",
11911
12653
  "type": {
@@ -11924,8 +12666,8 @@
11924
12666
  },
11925
12667
  "immutable": true,
11926
12668
  "locationInModule": {
11927
- "filename": "lib/table.ts",
11928
- "line": 260
12669
+ "filename": "lib/table-base.ts",
12670
+ "line": 195
11929
12671
  },
11930
12672
  "name": "compressed",
11931
12673
  "type": {
@@ -11939,8 +12681,8 @@
11939
12681
  },
11940
12682
  "immutable": true,
11941
12683
  "locationInModule": {
11942
- "filename": "lib/table.ts",
11943
- "line": 255
12684
+ "filename": "lib/table-base.ts",
12685
+ "line": 190
11944
12686
  },
11945
12687
  "name": "database",
11946
12688
  "type": {
@@ -11954,8 +12696,8 @@
11954
12696
  },
11955
12697
  "immutable": true,
11956
12698
  "locationInModule": {
11957
- "filename": "lib/table.ts",
11958
- "line": 295
12699
+ "filename": "lib/table-base.ts",
12700
+ "line": 200
11959
12701
  },
11960
12702
  "name": "dataFormat",
11961
12703
  "type": {
@@ -11963,44 +12705,14 @@
11963
12705
  }
11964
12706
  },
11965
12707
  {
12708
+ "abstract": true,
11966
12709
  "docs": {
11967
- "stability": "experimental",
11968
- "summary": "The type of encryption enabled for the table."
11969
- },
11970
- "immutable": true,
11971
- "locationInModule": {
11972
- "filename": "lib/table.ts",
11973
- "line": 265
11974
- },
11975
- "name": "encryption",
11976
- "type": {
11977
- "fqn": "@aws-cdk/aws-glue-alpha.TableEncryption"
11978
- }
11979
- },
11980
- {
11981
- "docs": {
11982
- "stability": "experimental",
11983
- "summary": "S3 Key Prefix under which this table's files are stored in S3."
11984
- },
11985
- "immutable": true,
11986
- "locationInModule": {
11987
- "filename": "lib/table.ts",
11988
- "line": 280
11989
- },
11990
- "name": "s3Prefix",
11991
- "type": {
11992
- "primitive": "string"
11993
- }
11994
- },
11995
- {
11996
- "docs": {
11997
- "stability": "experimental",
11998
- "summary": "ARN of this table."
12710
+ "stability": "experimental"
11999
12711
  },
12000
12712
  "immutable": true,
12001
12713
  "locationInModule": {
12002
- "filename": "lib/table.ts",
12003
- "line": 290
12714
+ "filename": "lib/table-base.ts",
12715
+ "line": 184
12004
12716
  },
12005
12717
  "name": "tableArn",
12006
12718
  "overrides": "@aws-cdk/aws-glue-alpha.ITable",
@@ -12009,14 +12721,14 @@
12009
12721
  }
12010
12722
  },
12011
12723
  {
12724
+ "abstract": true,
12012
12725
  "docs": {
12013
- "stability": "experimental",
12014
- "summary": "Name of this table."
12726
+ "stability": "experimental"
12015
12727
  },
12016
12728
  "immutable": true,
12017
12729
  "locationInModule": {
12018
- "filename": "lib/table.ts",
12019
- "line": 285
12730
+ "filename": "lib/table-base.ts",
12731
+ "line": 183
12020
12732
  },
12021
12733
  "name": "tableName",
12022
12734
  "overrides": "@aws-cdk/aws-glue-alpha.ITable",
@@ -12025,31 +12737,30 @@
12025
12737
  }
12026
12738
  },
12027
12739
  {
12740
+ "abstract": true,
12028
12741
  "docs": {
12029
- "remarks": "Otherwise, `undefined`.",
12030
- "stability": "experimental",
12031
- "summary": "The KMS key used to secure the data if `encryption` is set to `CSE-KMS` or `SSE-KMS`."
12742
+ "stability": "experimental"
12032
12743
  },
12033
12744
  "immutable": true,
12034
12745
  "locationInModule": {
12035
- "filename": "lib/table.ts",
12036
- "line": 270
12746
+ "filename": "lib/table-base.ts",
12747
+ "line": 182
12037
12748
  },
12038
- "name": "encryptionKey",
12039
- "optional": true,
12749
+ "name": "tableResource",
12750
+ "protected": true,
12040
12751
  "type": {
12041
- "fqn": "aws-cdk-lib.aws_kms.IKey"
12752
+ "fqn": "aws-cdk-lib.aws_glue.CfnTable"
12042
12753
  }
12043
12754
  },
12044
12755
  {
12756
+ "abstract": true,
12045
12757
  "docs": {
12046
- "stability": "experimental",
12047
- "summary": "This table's partition indexes."
12758
+ "stability": "experimental"
12048
12759
  },
12049
12760
  "immutable": true,
12050
12761
  "locationInModule": {
12051
- "filename": "lib/table.ts",
12052
- "line": 310
12762
+ "filename": "lib/table-base.ts",
12763
+ "line": 185
12053
12764
  },
12054
12765
  "name": "partitionIndexes",
12055
12766
  "optional": true,
@@ -12069,8 +12780,8 @@
12069
12780
  },
12070
12781
  "immutable": true,
12071
12782
  "locationInModule": {
12072
- "filename": "lib/table.ts",
12073
- "line": 305
12783
+ "filename": "lib/table-base.ts",
12784
+ "line": 210
12074
12785
  },
12075
12786
  "name": "partitionKeys",
12076
12787
  "optional": true,
@@ -12090,8 +12801,8 @@
12090
12801
  },
12091
12802
  "immutable": true,
12092
12803
  "locationInModule": {
12093
- "filename": "lib/table.ts",
12094
- "line": 315
12804
+ "filename": "lib/table-base.ts",
12805
+ "line": 215
12095
12806
  },
12096
12807
  "name": "storageParameters",
12097
12808
  "optional": true,
@@ -12105,129 +12816,25 @@
12105
12816
  }
12106
12817
  }
12107
12818
  ],
12108
- "symbolId": "lib/table:Table"
12819
+ "symbolId": "lib/table-base:TableBase"
12109
12820
  },
12110
- "@aws-cdk/aws-glue-alpha.TableAttributes": {
12821
+ "@aws-cdk/aws-glue-alpha.TableBaseProps": {
12111
12822
  "assembly": "@aws-cdk/aws-glue-alpha",
12112
12823
  "datatype": true,
12113
12824
  "docs": {
12114
12825
  "stability": "experimental",
12115
- "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as glue_alpha from '@aws-cdk/aws-glue-alpha';\nconst tableAttributes: glue_alpha.TableAttributes = {\n tableArn: 'tableArn',\n tableName: 'tableName',\n};",
12826
+ "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as glue_alpha from '@aws-cdk/aws-glue-alpha';\n\ndeclare const database: glue_alpha.Database;\ndeclare const dataFormat: glue_alpha.DataFormat;\ndeclare const storageParameter: glue_alpha.StorageParameter;\nconst tableBaseProps: glue_alpha.TableBaseProps = {\n columns: [{\n name: 'name',\n type: {\n inputString: 'inputString',\n isPrimitive: false,\n },\n\n // the properties below are optional\n comment: 'comment',\n }],\n database: database,\n dataFormat: dataFormat,\n\n // the properties below are optional\n compressed: false,\n description: 'description',\n enablePartitionFiltering: false,\n partitionIndexes: [{\n keyNames: ['keyNames'],\n\n // the properties below are optional\n indexName: 'indexName',\n }],\n partitionKeys: [{\n name: 'name',\n type: {\n inputString: 'inputString',\n isPrimitive: false,\n },\n\n // the properties below are optional\n comment: 'comment',\n }],\n storageParameters: [storageParameter],\n storedAsSubDirectories: false,\n tableName: 'tableName',\n};",
12116
12827
  "custom": {
12117
12828
  "exampleMetadata": "fixture=_generated"
12118
12829
  }
12119
12830
  },
12120
- "fqn": "@aws-cdk/aws-glue-alpha.TableAttributes",
12121
- "kind": "interface",
12122
- "locationInModule": {
12123
- "filename": "lib/table.ts",
12124
- "line": 77
12125
- },
12126
- "name": "TableAttributes",
12127
- "properties": [
12128
- {
12129
- "abstract": true,
12130
- "docs": {
12131
- "stability": "experimental"
12132
- },
12133
- "immutable": true,
12134
- "locationInModule": {
12135
- "filename": "lib/table.ts",
12136
- "line": 78
12137
- },
12138
- "name": "tableArn",
12139
- "type": {
12140
- "primitive": "string"
12141
- }
12142
- },
12143
- {
12144
- "abstract": true,
12145
- "docs": {
12146
- "stability": "experimental"
12147
- },
12148
- "immutable": true,
12149
- "locationInModule": {
12150
- "filename": "lib/table.ts",
12151
- "line": 79
12152
- },
12153
- "name": "tableName",
12154
- "type": {
12155
- "primitive": "string"
12156
- }
12157
- }
12158
- ],
12159
- "symbolId": "lib/table:TableAttributes"
12160
- },
12161
- "@aws-cdk/aws-glue-alpha.TableEncryption": {
12162
- "assembly": "@aws-cdk/aws-glue-alpha",
12163
- "docs": {
12164
- "see": "https://docs.aws.amazon.com/athena/latest/ug/encryption.html",
12165
- "stability": "experimental",
12166
- "summary": "Encryption options for a Table.",
12167
- "example": "declare const myDatabase: glue.Database;\nnew glue.Table(this, 'MyTable', {\n encryption: glue.TableEncryption.S3_MANAGED,\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});",
12168
- "custom": {
12169
- "exampleMetadata": "infused"
12170
- }
12171
- },
12172
- "fqn": "@aws-cdk/aws-glue-alpha.TableEncryption",
12173
- "kind": "enum",
12174
- "locationInModule": {
12175
- "filename": "lib/table.ts",
12176
- "line": 49
12177
- },
12178
- "members": [
12179
- {
12180
- "docs": {
12181
- "see": "https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html",
12182
- "stability": "experimental",
12183
- "summary": "Server side encryption (SSE) with an Amazon S3-managed key."
12184
- },
12185
- "name": "S3_MANAGED"
12186
- },
12187
- {
12188
- "docs": {
12189
- "see": "https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html",
12190
- "stability": "experimental",
12191
- "summary": "Server-side encryption (SSE) with an AWS KMS key managed by the account owner."
12192
- },
12193
- "name": "KMS"
12194
- },
12195
- {
12196
- "docs": {
12197
- "stability": "experimental",
12198
- "summary": "Server-side encryption (SSE) with an AWS KMS key managed by the KMS service."
12199
- },
12200
- "name": "KMS_MANAGED"
12201
- },
12202
- {
12203
- "docs": {
12204
- "see": "https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html",
12205
- "stability": "experimental",
12206
- "summary": "Client-side encryption (CSE) with an AWS KMS key managed by the account owner."
12207
- },
12208
- "name": "CLIENT_SIDE_KMS"
12209
- }
12210
- ],
12211
- "name": "TableEncryption",
12212
- "symbolId": "lib/table:TableEncryption"
12213
- },
12214
- "@aws-cdk/aws-glue-alpha.TableProps": {
12215
- "assembly": "@aws-cdk/aws-glue-alpha",
12216
- "datatype": true,
12217
- "docs": {
12218
- "stability": "experimental",
12219
- "example": "declare const myDatabase: glue.Database;\nnew glue.Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.SMALL_INT,\n }, {\n name: 'month',\n type: glue.Schema.SMALL_INT,\n }],\n dataFormat: glue.DataFormat.JSON,\n});",
12220
- "custom": {
12221
- "exampleMetadata": "infused"
12222
- }
12223
- },
12224
- "fqn": "@aws-cdk/aws-glue-alpha.TableProps",
12831
+ "fqn": "@aws-cdk/aws-glue-alpha.TableBaseProps",
12225
12832
  "kind": "interface",
12226
12833
  "locationInModule": {
12227
- "filename": "lib/table.ts",
12228
- "line": 82
12834
+ "filename": "lib/table-base.ts",
12835
+ "line": 47
12229
12836
  },
12230
- "name": "TableProps",
12837
+ "name": "TableBaseProps",
12231
12838
  "properties": [
12232
12839
  {
12233
12840
  "abstract": true,
@@ -12237,8 +12844,8 @@
12237
12844
  },
12238
12845
  "immutable": true,
12239
12846
  "locationInModule": {
12240
- "filename": "lib/table.ts",
12241
- "line": 119
12847
+ "filename": "lib/table-base.ts",
12848
+ "line": 70
12242
12849
  },
12243
12850
  "name": "columns",
12244
12851
  "type": {
@@ -12258,8 +12865,8 @@
12258
12865
  },
12259
12866
  "immutable": true,
12260
12867
  "locationInModule": {
12261
- "filename": "lib/table.ts",
12262
- "line": 100
12868
+ "filename": "lib/table-base.ts",
12869
+ "line": 65
12263
12870
  },
12264
12871
  "name": "database",
12265
12872
  "type": {
@@ -12274,32 +12881,14 @@
12274
12881
  },
12275
12882
  "immutable": true,
12276
12883
  "locationInModule": {
12277
- "filename": "lib/table.ts",
12278
- "line": 140
12884
+ "filename": "lib/table-base.ts",
12885
+ "line": 91
12279
12886
  },
12280
12887
  "name": "dataFormat",
12281
12888
  "type": {
12282
12889
  "fqn": "@aws-cdk/aws-glue-alpha.DataFormat"
12283
12890
  }
12284
12891
  },
12285
- {
12286
- "abstract": true,
12287
- "docs": {
12288
- "default": "one is created for you",
12289
- "stability": "experimental",
12290
- "summary": "S3 bucket in which to store data."
12291
- },
12292
- "immutable": true,
12293
- "locationInModule": {
12294
- "filename": "lib/table.ts",
12295
- "line": 107
12296
- },
12297
- "name": "bucket",
12298
- "optional": true,
12299
- "type": {
12300
- "fqn": "aws-cdk-lib.aws_s3.IBucket"
12301
- }
12302
- },
12303
12892
  {
12304
12893
  "abstract": true,
12305
12894
  "docs": {
@@ -12309,8 +12898,8 @@
12309
12898
  },
12310
12899
  "immutable": true,
12311
12900
  "locationInModule": {
12312
- "filename": "lib/table.ts",
12313
- "line": 147
12901
+ "filename": "lib/table-base.ts",
12902
+ "line": 98
12314
12903
  },
12315
12904
  "name": "compressed",
12316
12905
  "optional": true,
@@ -12327,8 +12916,8 @@
12327
12916
  },
12328
12917
  "immutable": true,
12329
12918
  "locationInModule": {
12330
- "filename": "lib/table.ts",
12331
- "line": 95
12919
+ "filename": "lib/table-base.ts",
12920
+ "line": 60
12332
12921
  },
12333
12922
  "name": "description",
12334
12923
  "optional": true,
@@ -12346,8 +12935,8 @@
12346
12935
  },
12347
12936
  "immutable": true,
12348
12937
  "locationInModule": {
12349
- "filename": "lib/table.ts",
12350
- "line": 184
12938
+ "filename": "lib/table-base.ts",
12939
+ "line": 114
12351
12940
  },
12352
12941
  "name": "enablePartitionFiltering",
12353
12942
  "optional": true,
@@ -12355,44 +12944,6 @@
12355
12944
  "primitive": "boolean"
12356
12945
  }
12357
12946
  },
12358
- {
12359
- "abstract": true,
12360
- "docs": {
12361
- "default": "BucketEncryption.S3_MANAGED",
12362
- "remarks": "You can only provide this option if you are not explicitly passing in a bucket.\n\nIf you choose `SSE-KMS`, you *can* provide an un-managed KMS key with `encryptionKey`.\nIf you choose `CSE-KMS`, you *must* provide an un-managed KMS key with `encryptionKey`.",
12363
- "stability": "experimental",
12364
- "summary": "The kind of encryption to secure the data with."
12365
- },
12366
- "immutable": true,
12367
- "locationInModule": {
12368
- "filename": "lib/table.ts",
12369
- "line": 159
12370
- },
12371
- "name": "encryption",
12372
- "optional": true,
12373
- "type": {
12374
- "fqn": "@aws-cdk/aws-glue-alpha.TableEncryption"
12375
- }
12376
- },
12377
- {
12378
- "abstract": true,
12379
- "docs": {
12380
- "default": "key is managed by KMS.",
12381
- "remarks": "The `encryption` property must be `SSE-KMS` or `CSE-KMS`.",
12382
- "stability": "experimental",
12383
- "summary": "External KMS key to use for bucket encryption."
12384
- },
12385
- "immutable": true,
12386
- "locationInModule": {
12387
- "filename": "lib/table.ts",
12388
- "line": 168
12389
- },
12390
- "name": "encryptionKey",
12391
- "optional": true,
12392
- "type": {
12393
- "fqn": "aws-cdk-lib.aws_kms.IKey"
12394
- }
12395
- },
12396
12947
  {
12397
12948
  "abstract": true,
12398
12949
  "docs": {
@@ -12403,8 +12954,8 @@
12403
12954
  },
12404
12955
  "immutable": true,
12405
12956
  "locationInModule": {
12406
- "filename": "lib/table.ts",
12407
- "line": 135
12957
+ "filename": "lib/table-base.ts",
12958
+ "line": 86
12408
12959
  },
12409
12960
  "name": "partitionIndexes",
12410
12961
  "optional": true,
@@ -12426,8 +12977,8 @@
12426
12977
  },
12427
12978
  "immutable": true,
12428
12979
  "locationInModule": {
12429
- "filename": "lib/table.ts",
12430
- "line": 126
12980
+ "filename": "lib/table-base.ts",
12981
+ "line": 77
12431
12982
  },
12432
12983
  "name": "partitionKeys",
12433
12984
  "optional": true,
@@ -12440,24 +12991,6 @@
12440
12991
  }
12441
12992
  }
12442
12993
  },
12443
- {
12444
- "abstract": true,
12445
- "docs": {
12446
- "default": "- No prefix. The data will be stored under the root of the bucket.",
12447
- "stability": "experimental",
12448
- "summary": "S3 prefix under which table objects are stored."
12449
- },
12450
- "immutable": true,
12451
- "locationInModule": {
12452
- "filename": "lib/table.ts",
12453
- "line": 114
12454
- },
12455
- "name": "s3Prefix",
12456
- "optional": true,
12457
- "type": {
12458
- "primitive": "string"
12459
- }
12460
- },
12461
12994
  {
12462
12995
  "abstract": true,
12463
12996
  "docs": {
@@ -12470,8 +13003,8 @@
12470
13003
  },
12471
13004
  "immutable": true,
12472
13005
  "locationInModule": {
12473
- "filename": "lib/table.ts",
12474
- "line": 219
13006
+ "filename": "lib/table-base.ts",
13007
+ "line": 149
12475
13008
  },
12476
13009
  "name": "storageParameters",
12477
13010
  "optional": true,
@@ -12493,8 +13026,8 @@
12493
13026
  },
12494
13027
  "immutable": true,
12495
13028
  "locationInModule": {
12496
- "filename": "lib/table.ts",
12497
- "line": 175
13029
+ "filename": "lib/table-base.ts",
13030
+ "line": 105
12498
13031
  },
12499
13032
  "name": "storedAsSubDirectories",
12500
13033
  "optional": true,
@@ -12511,8 +13044,8 @@
12511
13044
  },
12512
13045
  "immutable": true,
12513
13046
  "locationInModule": {
12514
- "filename": "lib/table.ts",
12515
- "line": 88
13047
+ "filename": "lib/table-base.ts",
13048
+ "line": 53
12516
13049
  },
12517
13050
  "name": "tableName",
12518
13051
  "optional": true,
@@ -12521,7 +13054,82 @@
12521
13054
  }
12522
13055
  }
12523
13056
  ],
12524
- "symbolId": "lib/table:TableProps"
13057
+ "symbolId": "lib/table-base:TableBaseProps"
13058
+ },
13059
+ "@aws-cdk/aws-glue-alpha.TableEncryption": {
13060
+ "assembly": "@aws-cdk/aws-glue-alpha",
13061
+ "docs": {
13062
+ "see": "https://docs.aws.amazon.com/athena/latest/ug/encryption.html",
13063
+ "stability": "experimental",
13064
+ "summary": "Encryption options for a Table.",
13065
+ "example": "declare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n encryption: glue.TableEncryption.S3_MANAGED,\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});",
13066
+ "custom": {
13067
+ "exampleMetadata": "infused"
13068
+ }
13069
+ },
13070
+ "fqn": "@aws-cdk/aws-glue-alpha.TableEncryption",
13071
+ "kind": "enum",
13072
+ "locationInModule": {
13073
+ "filename": "lib/s3-table.ts",
13074
+ "line": 14
13075
+ },
13076
+ "members": [
13077
+ {
13078
+ "docs": {
13079
+ "see": "https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html",
13080
+ "stability": "experimental",
13081
+ "summary": "Server side encryption (SSE) with an Amazon S3-managed key."
13082
+ },
13083
+ "name": "S3_MANAGED"
13084
+ },
13085
+ {
13086
+ "docs": {
13087
+ "see": "https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html",
13088
+ "stability": "experimental",
13089
+ "summary": "Server-side encryption (SSE) with an AWS KMS key managed by the account owner."
13090
+ },
13091
+ "name": "KMS"
13092
+ },
13093
+ {
13094
+ "docs": {
13095
+ "stability": "experimental",
13096
+ "summary": "Server-side encryption (SSE) with an AWS KMS key managed by the KMS service."
13097
+ },
13098
+ "name": "KMS_MANAGED"
13099
+ },
13100
+ {
13101
+ "docs": {
13102
+ "see": "https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html",
13103
+ "stability": "experimental",
13104
+ "summary": "Client-side encryption (CSE) with an AWS KMS key managed by the account owner."
13105
+ },
13106
+ "name": "CLIENT_SIDE_KMS"
13107
+ }
13108
+ ],
13109
+ "name": "TableEncryption",
13110
+ "symbolId": "lib/s3-table:TableEncryption"
13111
+ },
13112
+ "@aws-cdk/aws-glue-alpha.TableProps": {
13113
+ "assembly": "@aws-cdk/aws-glue-alpha",
13114
+ "datatype": true,
13115
+ "docs": {
13116
+ "stability": "experimental",
13117
+ "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as glue_alpha from '@aws-cdk/aws-glue-alpha';\nimport { aws_kms as kms } from 'aws-cdk-lib';\nimport { aws_s3 as s3 } from 'aws-cdk-lib';\n\ndeclare const bucket: s3.Bucket;\ndeclare const database: glue_alpha.Database;\ndeclare const dataFormat: glue_alpha.DataFormat;\ndeclare const key: kms.Key;\ndeclare const storageParameter: glue_alpha.StorageParameter;\nconst tableProps: glue_alpha.TableProps = {\n columns: [{\n name: 'name',\n type: {\n inputString: 'inputString',\n isPrimitive: false,\n },\n\n // the properties below are optional\n comment: 'comment',\n }],\n database: database,\n dataFormat: dataFormat,\n\n // the properties below are optional\n bucket: bucket,\n compressed: false,\n description: 'description',\n enablePartitionFiltering: false,\n encryption: glue_alpha.TableEncryption.S3_MANAGED,\n encryptionKey: key,\n partitionIndexes: [{\n keyNames: ['keyNames'],\n\n // the properties below are optional\n indexName: 'indexName',\n }],\n partitionKeys: [{\n name: 'name',\n type: {\n inputString: 'inputString',\n isPrimitive: false,\n },\n\n // the properties below are optional\n comment: 'comment',\n }],\n s3Prefix: 's3Prefix',\n storageParameters: [storageParameter],\n storedAsSubDirectories: false,\n tableName: 'tableName',\n};",
13118
+ "custom": {
13119
+ "exampleMetadata": "fixture=_generated"
13120
+ }
13121
+ },
13122
+ "fqn": "@aws-cdk/aws-glue-alpha.TableProps",
13123
+ "interfaces": [
13124
+ "@aws-cdk/aws-glue-alpha.S3TableProps"
13125
+ ],
13126
+ "kind": "interface",
13127
+ "locationInModule": {
13128
+ "filename": "lib/table-deprecated.ts",
13129
+ "line": 3
13130
+ },
13131
+ "name": "TableProps",
13132
+ "symbolId": "lib/table-deprecated:TableProps"
12525
13133
  },
12526
13134
  "@aws-cdk/aws-glue-alpha.Type": {
12527
13135
  "assembly": "@aws-cdk/aws-glue-alpha",
@@ -12529,7 +13137,7 @@
12529
13137
  "docs": {
12530
13138
  "stability": "experimental",
12531
13139
  "summary": "Represents a type of a column in a table schema.",
12532
- "example": "declare const myDatabase: glue.Database;\nnew glue.Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.SMALL_INT,\n }, {\n name: 'month',\n type: glue.Schema.SMALL_INT,\n }],\n dataFormat: glue.DataFormat.JSON,\n});",
13140
+ "example": "declare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.SMALL_INT,\n }, {\n name: 'month',\n type: glue.Schema.SMALL_INT,\n }],\n dataFormat: glue.DataFormat.JSON,\n});",
12533
13141
  "custom": {
12534
13142
  "exampleMetadata": "infused"
12535
13143
  }
@@ -12802,6 +13410,6 @@
12802
13410
  "symbolId": "lib/storage-parameter:WriteParallel"
12803
13411
  }
12804
13412
  },
12805
- "version": "2.95.1-alpha.0",
13413
+ "version": "2.96.1-alpha.0",
12806
13414
  "fingerprint": "**********"
12807
13415
  }