@aws-cdk/aws-glue-alpha 2.80.0-alpha.0 → 2.81.0-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.80.0",
11
+ "aws-cdk-lib": "2.81.0",
12
12
  "constructs": "^10.0.0"
13
13
  },
14
14
  "dependencyClosure": {
@@ -3474,7 +3474,7 @@
3474
3474
  },
3475
3475
  "name": "@aws-cdk/aws-glue-alpha",
3476
3476
  "readme": {
3477
- "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### 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 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 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\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\nBy default, an S3 bucket will be created to store the table's data and stored in the bucket root. You can also manually pass the `bucket` and `s3Prefix`:\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"
3477
+ "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### 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 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\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\nBy default, an S3 bucket will be created to store the table's data and stored in the bucket root. You can also manually pass the `bucket` and `s3Prefix`:\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"
3478
3478
  },
3479
3479
  "repository": {
3480
3480
  "directory": "packages/@aws-cdk/aws-glue-alpha",
@@ -3518,7 +3518,7 @@
3518
3518
  "docs": {
3519
3519
  "stability": "experimental",
3520
3520
  "summary": "Job Code from a local file.",
3521
- "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 * as cdk from 'aws-cdk-lib';\nimport { aws_iam as iam } from 'aws-cdk-lib';\n\ndeclare const dockerImage: cdk.DockerImage;\ndeclare const grantable: iam.IGrantable;\ndeclare const localBundling: cdk.ILocalBundling;\nconst assetCode = new glue_alpha.AssetCode('path', /* all optional props */ {\n assetHash: 'assetHash',\n assetHashType: cdk.AssetHashType.SOURCE,\n bundling: {\n image: dockerImage,\n\n // the properties below are optional\n bundlingFileAccess: cdk.BundlingFileAccess.VOLUME_COPY,\n command: ['command'],\n entrypoint: ['entrypoint'],\n environment: {\n environmentKey: 'environment',\n },\n local: localBundling,\n network: 'network',\n outputType: cdk.BundlingOutput.ARCHIVED,\n securityOpt: 'securityOpt',\n user: 'user',\n volumes: [{\n containerPath: 'containerPath',\n hostPath: 'hostPath',\n\n // the properties below are optional\n consistency: cdk.DockerVolumeConsistency.CONSISTENT,\n }],\n volumesFrom: ['volumesFrom'],\n workingDirectory: 'workingDirectory',\n },\n exclude: ['exclude'],\n followSymlinks: cdk.SymlinkFollowMode.NEVER,\n ignoreMode: cdk.IgnoreMode.GLOB,\n readers: [grantable],\n});",
3521
+ "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 * as cdk from 'aws-cdk-lib';\nimport { aws_iam as iam } from 'aws-cdk-lib';\n\ndeclare const dockerImage: cdk.DockerImage;\ndeclare const grantable: iam.IGrantable;\ndeclare const localBundling: cdk.ILocalBundling;\nconst assetCode = new glue_alpha.AssetCode('path', /* all optional props */ {\n assetHash: 'assetHash',\n assetHashType: cdk.AssetHashType.SOURCE,\n bundling: {\n image: dockerImage,\n\n // the properties below are optional\n bundlingFileAccess: cdk.BundlingFileAccess.VOLUME_COPY,\n command: ['command'],\n entrypoint: ['entrypoint'],\n environment: {\n environmentKey: 'environment',\n },\n local: localBundling,\n network: 'network',\n outputType: cdk.BundlingOutput.ARCHIVED,\n securityOpt: 'securityOpt',\n user: 'user',\n volumes: [{\n containerPath: 'containerPath',\n hostPath: 'hostPath',\n\n // the properties below are optional\n consistency: cdk.DockerVolumeConsistency.CONSISTENT,\n }],\n volumesFrom: ['volumesFrom'],\n workingDirectory: 'workingDirectory',\n },\n deployTime: false,\n exclude: ['exclude'],\n followSymlinks: cdk.SymlinkFollowMode.NEVER,\n ignoreMode: cdk.IgnoreMode.GLOB,\n readers: [grantable],\n});",
3522
3522
  "custom": {
3523
3523
  "exampleMetadata": "fixture=_generated"
3524
3524
  }
@@ -4629,7 +4629,7 @@
4629
4629
  "kind": "interface",
4630
4630
  "locationInModule": {
4631
4631
  "filename": "lib/job.ts",
4632
- "line": 394
4632
+ "line": 404
4633
4633
  },
4634
4634
  "name": "ContinuousLoggingProps",
4635
4635
  "properties": [
@@ -4642,7 +4642,7 @@
4642
4642
  "immutable": true,
4643
4643
  "locationInModule": {
4644
4644
  "filename": "lib/job.ts",
4645
- "line": 398
4645
+ "line": 408
4646
4646
  },
4647
4647
  "name": "enabled",
4648
4648
  "type": {
@@ -4660,7 +4660,7 @@
4660
4660
  "immutable": true,
4661
4661
  "locationInModule": {
4662
4662
  "filename": "lib/job.ts",
4663
- "line": 428
4663
+ "line": 438
4664
4664
  },
4665
4665
  "name": "conversionPattern",
4666
4666
  "optional": true,
@@ -4678,7 +4678,7 @@
4678
4678
  "immutable": true,
4679
4679
  "locationInModule": {
4680
4680
  "filename": "lib/job.ts",
4681
- "line": 405
4681
+ "line": 415
4682
4682
  },
4683
4683
  "name": "logGroup",
4684
4684
  "optional": true,
@@ -4696,7 +4696,7 @@
4696
4696
  "immutable": true,
4697
4697
  "locationInModule": {
4698
4698
  "filename": "lib/job.ts",
4699
- "line": 412
4699
+ "line": 422
4700
4700
  },
4701
4701
  "name": "logStreamPrefix",
4702
4702
  "optional": true,
@@ -4714,7 +4714,7 @@
4714
4714
  "immutable": true,
4715
4715
  "locationInModule": {
4716
4716
  "filename": "lib/job.ts",
4717
- "line": 419
4717
+ "line": 429
4718
4718
  },
4719
4719
  "name": "quiet",
4720
4720
  "optional": true,
@@ -5620,7 +5620,7 @@
5620
5620
  "kind": "interface",
5621
5621
  "locationInModule": {
5622
5622
  "filename": "lib/job.ts",
5623
- "line": 125
5623
+ "line": 135
5624
5624
  },
5625
5625
  "methods": [
5626
5626
  {
@@ -5632,7 +5632,7 @@
5632
5632
  },
5633
5633
  "locationInModule": {
5634
5634
  "filename": "lib/job.ts",
5635
- "line": 182
5635
+ "line": 192
5636
5636
  },
5637
5637
  "name": "metric",
5638
5638
  "parameters": [
@@ -5679,7 +5679,7 @@
5679
5679
  },
5680
5680
  "locationInModule": {
5681
5681
  "filename": "lib/job.ts",
5682
- "line": 192
5682
+ "line": 202
5683
5683
  },
5684
5684
  "name": "metricFailure",
5685
5685
  "parameters": [
@@ -5705,7 +5705,7 @@
5705
5705
  },
5706
5706
  "locationInModule": {
5707
5707
  "filename": "lib/job.ts",
5708
- "line": 187
5708
+ "line": 197
5709
5709
  },
5710
5710
  "name": "metricSuccess",
5711
5711
  "parameters": [
@@ -5731,7 +5731,7 @@
5731
5731
  },
5732
5732
  "locationInModule": {
5733
5733
  "filename": "lib/job.ts",
5734
- "line": 197
5734
+ "line": 207
5735
5735
  },
5736
5736
  "name": "metricTimeout",
5737
5737
  "parameters": [
@@ -5758,7 +5758,7 @@
5758
5758
  },
5759
5759
  "locationInModule": {
5760
5760
  "filename": "lib/job.ts",
5761
- "line": 143
5761
+ "line": 153
5762
5762
  },
5763
5763
  "name": "onEvent",
5764
5764
  "parameters": [
@@ -5791,7 +5791,7 @@
5791
5791
  },
5792
5792
  "locationInModule": {
5793
5793
  "filename": "lib/job.ts",
5794
- "line": 164
5794
+ "line": 174
5795
5795
  },
5796
5796
  "name": "onFailure",
5797
5797
  "parameters": [
@@ -5824,7 +5824,7 @@
5824
5824
  },
5825
5825
  "locationInModule": {
5826
5826
  "filename": "lib/job.ts",
5827
- "line": 150
5827
+ "line": 160
5828
5828
  },
5829
5829
  "name": "onStateChange",
5830
5830
  "parameters": [
@@ -5863,7 +5863,7 @@
5863
5863
  },
5864
5864
  "locationInModule": {
5865
5865
  "filename": "lib/job.ts",
5866
- "line": 157
5866
+ "line": 167
5867
5867
  },
5868
5868
  "name": "onSuccess",
5869
5869
  "parameters": [
@@ -5896,7 +5896,7 @@
5896
5896
  },
5897
5897
  "locationInModule": {
5898
5898
  "filename": "lib/job.ts",
5899
- "line": 171
5899
+ "line": 181
5900
5900
  },
5901
5901
  "name": "onTimeout",
5902
5902
  "parameters": [
@@ -5935,7 +5935,7 @@
5935
5935
  "immutable": true,
5936
5936
  "locationInModule": {
5937
5937
  "filename": "lib/job.ts",
5938
- "line": 136
5938
+ "line": 146
5939
5939
  },
5940
5940
  "name": "jobArn",
5941
5941
  "type": {
@@ -5954,7 +5954,7 @@
5954
5954
  "immutable": true,
5955
5955
  "locationInModule": {
5956
5956
  "filename": "lib/job.ts",
5957
- "line": 130
5957
+ "line": 140
5958
5958
  },
5959
5959
  "name": "jobName",
5960
5960
  "type": {
@@ -6219,7 +6219,7 @@
6219
6219
  },
6220
6220
  "locationInModule": {
6221
6221
  "filename": "lib/job.ts",
6222
- "line": 644
6222
+ "line": 654
6223
6223
  },
6224
6224
  "parameters": [
6225
6225
  {
@@ -6248,7 +6248,7 @@
6248
6248
  "kind": "class",
6249
6249
  "locationInModule": {
6250
6250
  "filename": "lib/job.ts",
6251
- "line": 598
6251
+ "line": 608
6252
6252
  },
6253
6253
  "methods": [
6254
6254
  {
@@ -6258,7 +6258,7 @@
6258
6258
  },
6259
6259
  "locationInModule": {
6260
6260
  "filename": "lib/job.ts",
6261
- "line": 606
6261
+ "line": 616
6262
6262
  },
6263
6263
  "name": "fromJobAttributes",
6264
6264
  "parameters": [
@@ -6305,7 +6305,7 @@
6305
6305
  },
6306
6306
  "locationInModule": {
6307
6307
  "filename": "lib/job.ts",
6308
- "line": 289
6308
+ "line": 299
6309
6309
  },
6310
6310
  "name": "metric",
6311
6311
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -6353,7 +6353,7 @@
6353
6353
  },
6354
6354
  "locationInModule": {
6355
6355
  "filename": "lib/job.ts",
6356
- "line": 316
6356
+ "line": 326
6357
6357
  },
6358
6358
  "name": "metricFailure",
6359
6359
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -6380,7 +6380,7 @@
6380
6380
  },
6381
6381
  "locationInModule": {
6382
6382
  "filename": "lib/job.ts",
6383
- "line": 307
6383
+ "line": 317
6384
6384
  },
6385
6385
  "name": "metricSuccess",
6386
6386
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -6407,7 +6407,7 @@
6407
6407
  },
6408
6408
  "locationInModule": {
6409
6409
  "filename": "lib/job.ts",
6410
- "line": 325
6410
+ "line": 335
6411
6411
  },
6412
6412
  "name": "metricTimeout",
6413
6413
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -6434,7 +6434,7 @@
6434
6434
  },
6435
6435
  "locationInModule": {
6436
6436
  "filename": "lib/job.ts",
6437
- "line": 217
6437
+ "line": 227
6438
6438
  },
6439
6439
  "name": "onEvent",
6440
6440
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -6473,7 +6473,7 @@
6473
6473
  },
6474
6474
  "locationInModule": {
6475
6475
  "filename": "lib/job.ts",
6476
- "line": 266
6476
+ "line": 276
6477
6477
  },
6478
6478
  "name": "onFailure",
6479
6479
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -6512,7 +6512,7 @@
6512
6512
  },
6513
6513
  "locationInModule": {
6514
6514
  "filename": "lib/job.ts",
6515
- "line": 237
6515
+ "line": 247
6516
6516
  },
6517
6517
  "name": "onStateChange",
6518
6518
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -6559,7 +6559,7 @@
6559
6559
  },
6560
6560
  "locationInModule": {
6561
6561
  "filename": "lib/job.ts",
6562
- "line": 256
6562
+ "line": 266
6563
6563
  },
6564
6564
  "name": "onSuccess",
6565
6565
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -6598,7 +6598,7 @@
6598
6598
  },
6599
6599
  "locationInModule": {
6600
6600
  "filename": "lib/job.ts",
6601
- "line": 276
6601
+ "line": 286
6602
6602
  },
6603
6603
  "name": "onTimeout",
6604
6604
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -6641,7 +6641,7 @@
6641
6641
  "immutable": true,
6642
6642
  "locationInModule": {
6643
6643
  "filename": "lib/job.ts",
6644
- "line": 634
6644
+ "line": 644
6645
6645
  },
6646
6646
  "name": "grantPrincipal",
6647
6647
  "overrides": "aws-cdk-lib.aws_iam.IGrantable",
@@ -6657,7 +6657,7 @@
6657
6657
  "immutable": true,
6658
6658
  "locationInModule": {
6659
6659
  "filename": "lib/job.ts",
6660
- "line": 619
6660
+ "line": 629
6661
6661
  },
6662
6662
  "name": "jobArn",
6663
6663
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -6673,7 +6673,7 @@
6673
6673
  "immutable": true,
6674
6674
  "locationInModule": {
6675
6675
  "filename": "lib/job.ts",
6676
- "line": 624
6676
+ "line": 634
6677
6677
  },
6678
6678
  "name": "jobName",
6679
6679
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -6689,7 +6689,7 @@
6689
6689
  "immutable": true,
6690
6690
  "locationInModule": {
6691
6691
  "filename": "lib/job.ts",
6692
- "line": 629
6692
+ "line": 639
6693
6693
  },
6694
6694
  "name": "role",
6695
6695
  "type": {
@@ -6705,7 +6705,7 @@
6705
6705
  "immutable": true,
6706
6706
  "locationInModule": {
6707
6707
  "filename": "lib/job.ts",
6708
- "line": 642
6708
+ "line": 652
6709
6709
  },
6710
6710
  "name": "sparkUILoggingLocation",
6711
6711
  "optional": true,
@@ -6731,7 +6731,7 @@
6731
6731
  "kind": "interface",
6732
6732
  "locationInModule": {
6733
6733
  "filename": "lib/job.ts",
6734
- "line": 434
6734
+ "line": 444
6735
6735
  },
6736
6736
  "name": "JobAttributes",
6737
6737
  "properties": [
@@ -6744,7 +6744,7 @@
6744
6744
  "immutable": true,
6745
6745
  "locationInModule": {
6746
6746
  "filename": "lib/job.ts",
6747
- "line": 438
6747
+ "line": 448
6748
6748
  },
6749
6749
  "name": "jobName",
6750
6750
  "type": {
@@ -6761,7 +6761,7 @@
6761
6761
  "immutable": true,
6762
6762
  "locationInModule": {
6763
6763
  "filename": "lib/job.ts",
6764
- "line": 445
6764
+ "line": 455
6765
6765
  },
6766
6766
  "name": "role",
6767
6767
  "optional": true,
@@ -7354,7 +7354,7 @@
7354
7354
  "kind": "interface",
7355
7355
  "locationInModule": {
7356
7356
  "filename": "lib/job.ts",
7357
- "line": 451
7357
+ "line": 461
7358
7358
  },
7359
7359
  "name": "JobProps",
7360
7360
  "properties": [
@@ -7367,7 +7367,7 @@
7367
7367
  "immutable": true,
7368
7368
  "locationInModule": {
7369
7369
  "filename": "lib/job.ts",
7370
- "line": 455
7370
+ "line": 465
7371
7371
  },
7372
7372
  "name": "executable",
7373
7373
  "type": {
@@ -7385,7 +7385,7 @@
7385
7385
  "immutable": true,
7386
7386
  "locationInModule": {
7387
7387
  "filename": "lib/job.ts",
7388
- "line": 530
7388
+ "line": 540
7389
7389
  },
7390
7390
  "name": "connections",
7391
7391
  "optional": true,
@@ -7409,7 +7409,7 @@
7409
7409
  "immutable": true,
7410
7410
  "locationInModule": {
7411
7411
  "filename": "lib/job.ts",
7412
- "line": 592
7412
+ "line": 602
7413
7413
  },
7414
7414
  "name": "continuousLogging",
7415
7415
  "optional": true,
@@ -7428,7 +7428,7 @@
7428
7428
  "immutable": true,
7429
7429
  "locationInModule": {
7430
7430
  "filename": "lib/job.ts",
7431
- "line": 545
7431
+ "line": 555
7432
7432
  },
7433
7433
  "name": "defaultArguments",
7434
7434
  "optional": true,
@@ -7451,7 +7451,7 @@
7451
7451
  "immutable": true,
7452
7452
  "locationInModule": {
7453
7453
  "filename": "lib/job.ts",
7454
- "line": 469
7454
+ "line": 479
7455
7455
  },
7456
7456
  "name": "description",
7457
7457
  "optional": true,
@@ -7470,7 +7470,7 @@
7470
7470
  "immutable": true,
7471
7471
  "locationInModule": {
7472
7472
  "filename": "lib/job.ts",
7473
- "line": 572
7473
+ "line": 582
7474
7474
  },
7475
7475
  "name": "enableProfilingMetrics",
7476
7476
  "optional": true,
@@ -7488,7 +7488,7 @@
7488
7488
  "immutable": true,
7489
7489
  "locationInModule": {
7490
7490
  "filename": "lib/job.ts",
7491
- "line": 462
7491
+ "line": 472
7492
7492
  },
7493
7493
  "name": "jobName",
7494
7494
  "optional": true,
@@ -7507,7 +7507,7 @@
7507
7507
  "immutable": true,
7508
7508
  "locationInModule": {
7509
7509
  "filename": "lib/job.ts",
7510
- "line": 477
7510
+ "line": 487
7511
7511
  },
7512
7512
  "name": "maxCapacity",
7513
7513
  "optional": true,
@@ -7526,7 +7526,7 @@
7526
7526
  "immutable": true,
7527
7527
  "locationInModule": {
7528
7528
  "filename": "lib/job.ts",
7529
- "line": 493
7529
+ "line": 503
7530
7530
  },
7531
7531
  "name": "maxConcurrentRuns",
7532
7532
  "optional": true,
@@ -7544,7 +7544,7 @@
7544
7544
  "immutable": true,
7545
7545
  "locationInModule": {
7546
7546
  "filename": "lib/job.ts",
7547
- "line": 484
7547
+ "line": 494
7548
7548
  },
7549
7549
  "name": "maxRetries",
7550
7550
  "optional": true,
@@ -7562,7 +7562,7 @@
7562
7562
  "immutable": true,
7563
7563
  "locationInModule": {
7564
7564
  "filename": "lib/job.ts",
7565
- "line": 500
7565
+ "line": 510
7566
7566
  },
7567
7567
  "name": "notifyDelayAfter",
7568
7568
  "optional": true,
@@ -7582,7 +7582,7 @@
7582
7582
  "immutable": true,
7583
7583
  "locationInModule": {
7584
7584
  "filename": "lib/job.ts",
7585
- "line": 563
7585
+ "line": 573
7586
7586
  },
7587
7587
  "name": "role",
7588
7588
  "optional": true,
@@ -7600,7 +7600,7 @@
7600
7600
  "immutable": true,
7601
7601
  "locationInModule": {
7602
7602
  "filename": "lib/job.ts",
7603
- "line": 537
7603
+ "line": 547
7604
7604
  },
7605
7605
  "name": "securityConfiguration",
7606
7606
  "optional": true,
@@ -7619,7 +7619,7 @@
7619
7619
  "immutable": true,
7620
7620
  "locationInModule": {
7621
7621
  "filename": "lib/job.ts",
7622
- "line": 582
7622
+ "line": 592
7623
7623
  },
7624
7624
  "name": "sparkUI",
7625
7625
  "optional": true,
@@ -7637,7 +7637,7 @@
7637
7637
  "immutable": true,
7638
7638
  "locationInModule": {
7639
7639
  "filename": "lib/job.ts",
7640
- "line": 552
7640
+ "line": 562
7641
7641
  },
7642
7642
  "name": "tags",
7643
7643
  "optional": true,
@@ -7660,7 +7660,7 @@
7660
7660
  "immutable": true,
7661
7661
  "locationInModule": {
7662
7662
  "filename": "lib/job.ts",
7663
- "line": 507
7663
+ "line": 517
7664
7664
  },
7665
7665
  "name": "timeout",
7666
7666
  "optional": true,
@@ -7678,7 +7678,7 @@
7678
7678
  "immutable": true,
7679
7679
  "locationInModule": {
7680
7680
  "filename": "lib/job.ts",
7681
- "line": 521
7681
+ "line": 531
7682
7682
  },
7683
7683
  "name": "workerCount",
7684
7684
  "optional": true,
@@ -7696,7 +7696,7 @@
7696
7696
  "immutable": true,
7697
7697
  "locationInModule": {
7698
7698
  "filename": "lib/job.ts",
7699
- "line": 514
7699
+ "line": 524
7700
7700
  },
7701
7701
  "name": "workerType",
7702
7702
  "optional": true,
@@ -7718,7 +7718,7 @@
7718
7718
  "kind": "enum",
7719
7719
  "locationInModule": {
7720
7720
  "filename": "lib/job.ts",
7721
- "line": 68
7721
+ "line": 78
7722
7722
  },
7723
7723
  "members": [
7724
7724
  {
@@ -7920,7 +7920,7 @@
7920
7920
  "kind": "enum",
7921
7921
  "locationInModule": {
7922
7922
  "filename": "lib/job.ts",
7923
- "line": 110
7923
+ "line": 120
7924
7924
  },
7925
7925
  "members": [
7926
7926
  {
@@ -8751,7 +8751,7 @@
8751
8751
  "docs": {
8752
8752
  "stability": "experimental",
8753
8753
  "summary": "Props for creating a Scala Spark (ETL or Streaming) job executable.",
8754
- "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 description: 'an example Scala ETL job',\n});",
8754
+ "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});",
8755
8755
  "custom": {
8756
8756
  "exampleMetadata": "infused"
8757
8757
  }
@@ -9793,7 +9793,7 @@
9793
9793
  "kind": "interface",
9794
9794
  "locationInModule": {
9795
9795
  "filename": "lib/job.ts",
9796
- "line": 374
9796
+ "line": 384
9797
9797
  },
9798
9798
  "name": "SparkUILoggingLocation",
9799
9799
  "properties": [
@@ -9806,7 +9806,7 @@
9806
9806
  "immutable": true,
9807
9807
  "locationInModule": {
9808
9808
  "filename": "lib/job.ts",
9809
- "line": 378
9809
+ "line": 388
9810
9810
  },
9811
9811
  "name": "bucket",
9812
9812
  "type": {
@@ -9823,7 +9823,7 @@
9823
9823
  "immutable": true,
9824
9824
  "locationInModule": {
9825
9825
  "filename": "lib/job.ts",
9826
- "line": 385
9826
+ "line": 395
9827
9827
  },
9828
9828
  "name": "prefix",
9829
9829
  "optional": true,
@@ -9850,7 +9850,7 @@
9850
9850
  "kind": "interface",
9851
9851
  "locationInModule": {
9852
9852
  "filename": "lib/job.ts",
9853
- "line": 347
9853
+ "line": 357
9854
9854
  },
9855
9855
  "name": "SparkUIProps",
9856
9856
  "properties": [
@@ -9863,7 +9863,7 @@
9863
9863
  "immutable": true,
9864
9864
  "locationInModule": {
9865
9865
  "filename": "lib/job.ts",
9866
- "line": 351
9866
+ "line": 361
9867
9867
  },
9868
9868
  "name": "enabled",
9869
9869
  "type": {
@@ -9880,7 +9880,7 @@
9880
9880
  "immutable": true,
9881
9881
  "locationInModule": {
9882
9882
  "filename": "lib/job.ts",
9883
- "line": 358
9883
+ "line": 368
9884
9884
  },
9885
9885
  "name": "bucket",
9886
9886
  "optional": true,
@@ -9898,7 +9898,7 @@
9898
9898
  "immutable": true,
9899
9899
  "locationInModule": {
9900
9900
  "filename": "lib/job.ts",
9901
- "line": 365
9901
+ "line": 375
9902
9902
  },
9903
9903
  "name": "prefix",
9904
9904
  "optional": true,
@@ -10871,7 +10871,7 @@
10871
10871
  "remarks": "If you need to use a WorkerType that doesn't exist as a static member, you\ncan instantiate a `WorkerType` object, e.g: `WorkerType.of('other type')`.",
10872
10872
  "stability": "experimental",
10873
10873
  "summary": "The type of predefined worker that is allocated when a job runs.",
10874
- "example": "new glue.Job(this, 'RayJob', {\n executable: glue.JobExecutable.pythonRay({\n glueVersion: glue.GlueVersion.V4_0,\n pythonVersion: glue.PythonVersion.THREE_NINE,\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});",
10874
+ "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});",
10875
10875
  "custom": {
10876
10876
  "exampleMetadata": "infused"
10877
10877
  }
@@ -10890,7 +10890,7 @@
10890
10890
  },
10891
10891
  "locationInModule": {
10892
10892
  "filename": "lib/job.ts",
10893
- "line": 49
10893
+ "line": 59
10894
10894
  },
10895
10895
  "name": "of",
10896
10896
  "parameters": [
@@ -10923,7 +10923,7 @@
10923
10923
  "immutable": true,
10924
10924
  "locationInModule": {
10925
10925
  "filename": "lib/job.ts",
10926
- "line": 38
10926
+ "line": 48
10927
10927
  },
10928
10928
  "name": "G_025X",
10929
10929
  "static": true,
@@ -10967,6 +10967,42 @@
10967
10967
  "fqn": "@aws-cdk/aws-glue-alpha.WorkerType"
10968
10968
  }
10969
10969
  },
10970
+ {
10971
+ "const": true,
10972
+ "docs": {
10973
+ "remarks": "We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for AWS Glue version 3.0 or later jobs.",
10974
+ "stability": "experimental",
10975
+ "summary": "Each worker maps to 4 DPU (16 vCPU, 64 GB of memory, 256 GB disk), and provides 1 executor per worker."
10976
+ },
10977
+ "immutable": true,
10978
+ "locationInModule": {
10979
+ "filename": "lib/job.ts",
10980
+ "line": 38
10981
+ },
10982
+ "name": "G_4X",
10983
+ "static": true,
10984
+ "type": {
10985
+ "fqn": "@aws-cdk/aws-glue-alpha.WorkerType"
10986
+ }
10987
+ },
10988
+ {
10989
+ "const": true,
10990
+ "docs": {
10991
+ "remarks": "We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for AWS Glue version 3.0 or later jobs.",
10992
+ "stability": "experimental",
10993
+ "summary": "Each worker maps to 8 DPU (32 vCPU, 128 GB of memory, 512 GB disk), and provides 1 executor per worker."
10994
+ },
10995
+ "immutable": true,
10996
+ "locationInModule": {
10997
+ "filename": "lib/job.ts",
10998
+ "line": 43
10999
+ },
11000
+ "name": "G_8X",
11001
+ "static": true,
11002
+ "type": {
11003
+ "fqn": "@aws-cdk/aws-glue-alpha.WorkerType"
11004
+ }
11005
+ },
10970
11006
  {
10971
11007
  "const": true,
10972
11008
  "docs": {
@@ -10994,7 +11030,7 @@
10994
11030
  "immutable": true,
10995
11031
  "locationInModule": {
10996
11032
  "filename": "lib/job.ts",
10997
- "line": 43
11033
+ "line": 53
10998
11034
  },
10999
11035
  "name": "Z_2X",
11000
11036
  "static": true,
@@ -11010,7 +11046,7 @@
11010
11046
  "immutable": true,
11011
11047
  "locationInModule": {
11012
11048
  "filename": "lib/job.ts",
11013
- "line": 56
11049
+ "line": 66
11014
11050
  },
11015
11051
  "name": "name",
11016
11052
  "type": {
@@ -11021,6 +11057,6 @@
11021
11057
  "symbolId": "lib/job:WorkerType"
11022
11058
  }
11023
11059
  },
11024
- "version": "2.80.0-alpha.0",
11060
+ "version": "2.81.0-alpha.0",
11025
11061
  "fingerprint": "**********"
11026
11062
  }