@aws-cdk/aws-glue-alpha 2.79.1-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.79.1",
11
+ "aws-cdk-lib": "2.81.0",
12
12
  "constructs": "^10.0.0"
13
13
  },
14
14
  "dependencyClosure": {
@@ -2381,6 +2381,19 @@
2381
2381
  }
2382
2382
  }
2383
2383
  },
2384
+ "aws-cdk-lib.aws_osis": {
2385
+ "targets": {
2386
+ "dotnet": {
2387
+ "package": "Amazon.CDK.AWS.OSIS"
2388
+ },
2389
+ "java": {
2390
+ "package": "services.osis"
2391
+ },
2392
+ "python": {
2393
+ "module": "aws_cdk.aws_osis"
2394
+ }
2395
+ }
2396
+ },
2384
2397
  "aws-cdk-lib.aws_panorama": {
2385
2398
  "targets": {
2386
2399
  "dotnet": {
@@ -3440,7 +3453,7 @@
3440
3453
  "stability": "experimental"
3441
3454
  },
3442
3455
  "homepage": "https://github.com/aws/aws-cdk",
3443
- "jsiiVersion": "5.0.7 (build 5782cd5)",
3456
+ "jsiiVersion": "5.0.8 (build b97c75a)",
3444
3457
  "keywords": [
3445
3458
  "aws",
3446
3459
  "cdk",
@@ -3461,7 +3474,7 @@
3461
3474
  },
3462
3475
  "name": "@aws-cdk/aws-glue-alpha",
3463
3476
  "readme": {
3464
- "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"
3465
3478
  },
3466
3479
  "repository": {
3467
3480
  "directory": "packages/@aws-cdk/aws-glue-alpha",
@@ -3505,7 +3518,7 @@
3505
3518
  "docs": {
3506
3519
  "stability": "experimental",
3507
3520
  "summary": "Job Code from a local file.",
3508
- "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});",
3509
3522
  "custom": {
3510
3523
  "exampleMetadata": "fixture=_generated"
3511
3524
  }
@@ -4616,7 +4629,7 @@
4616
4629
  "kind": "interface",
4617
4630
  "locationInModule": {
4618
4631
  "filename": "lib/job.ts",
4619
- "line": 394
4632
+ "line": 404
4620
4633
  },
4621
4634
  "name": "ContinuousLoggingProps",
4622
4635
  "properties": [
@@ -4629,7 +4642,7 @@
4629
4642
  "immutable": true,
4630
4643
  "locationInModule": {
4631
4644
  "filename": "lib/job.ts",
4632
- "line": 398
4645
+ "line": 408
4633
4646
  },
4634
4647
  "name": "enabled",
4635
4648
  "type": {
@@ -4647,7 +4660,7 @@
4647
4660
  "immutable": true,
4648
4661
  "locationInModule": {
4649
4662
  "filename": "lib/job.ts",
4650
- "line": 428
4663
+ "line": 438
4651
4664
  },
4652
4665
  "name": "conversionPattern",
4653
4666
  "optional": true,
@@ -4665,7 +4678,7 @@
4665
4678
  "immutable": true,
4666
4679
  "locationInModule": {
4667
4680
  "filename": "lib/job.ts",
4668
- "line": 405
4681
+ "line": 415
4669
4682
  },
4670
4683
  "name": "logGroup",
4671
4684
  "optional": true,
@@ -4683,7 +4696,7 @@
4683
4696
  "immutable": true,
4684
4697
  "locationInModule": {
4685
4698
  "filename": "lib/job.ts",
4686
- "line": 412
4699
+ "line": 422
4687
4700
  },
4688
4701
  "name": "logStreamPrefix",
4689
4702
  "optional": true,
@@ -4701,7 +4714,7 @@
4701
4714
  "immutable": true,
4702
4715
  "locationInModule": {
4703
4716
  "filename": "lib/job.ts",
4704
- "line": 419
4717
+ "line": 429
4705
4718
  },
4706
4719
  "name": "quiet",
4707
4720
  "optional": true,
@@ -5607,7 +5620,7 @@
5607
5620
  "kind": "interface",
5608
5621
  "locationInModule": {
5609
5622
  "filename": "lib/job.ts",
5610
- "line": 125
5623
+ "line": 135
5611
5624
  },
5612
5625
  "methods": [
5613
5626
  {
@@ -5619,7 +5632,7 @@
5619
5632
  },
5620
5633
  "locationInModule": {
5621
5634
  "filename": "lib/job.ts",
5622
- "line": 182
5635
+ "line": 192
5623
5636
  },
5624
5637
  "name": "metric",
5625
5638
  "parameters": [
@@ -5666,7 +5679,7 @@
5666
5679
  },
5667
5680
  "locationInModule": {
5668
5681
  "filename": "lib/job.ts",
5669
- "line": 192
5682
+ "line": 202
5670
5683
  },
5671
5684
  "name": "metricFailure",
5672
5685
  "parameters": [
@@ -5692,7 +5705,7 @@
5692
5705
  },
5693
5706
  "locationInModule": {
5694
5707
  "filename": "lib/job.ts",
5695
- "line": 187
5708
+ "line": 197
5696
5709
  },
5697
5710
  "name": "metricSuccess",
5698
5711
  "parameters": [
@@ -5718,7 +5731,7 @@
5718
5731
  },
5719
5732
  "locationInModule": {
5720
5733
  "filename": "lib/job.ts",
5721
- "line": 197
5734
+ "line": 207
5722
5735
  },
5723
5736
  "name": "metricTimeout",
5724
5737
  "parameters": [
@@ -5745,7 +5758,7 @@
5745
5758
  },
5746
5759
  "locationInModule": {
5747
5760
  "filename": "lib/job.ts",
5748
- "line": 143
5761
+ "line": 153
5749
5762
  },
5750
5763
  "name": "onEvent",
5751
5764
  "parameters": [
@@ -5778,7 +5791,7 @@
5778
5791
  },
5779
5792
  "locationInModule": {
5780
5793
  "filename": "lib/job.ts",
5781
- "line": 164
5794
+ "line": 174
5782
5795
  },
5783
5796
  "name": "onFailure",
5784
5797
  "parameters": [
@@ -5811,7 +5824,7 @@
5811
5824
  },
5812
5825
  "locationInModule": {
5813
5826
  "filename": "lib/job.ts",
5814
- "line": 150
5827
+ "line": 160
5815
5828
  },
5816
5829
  "name": "onStateChange",
5817
5830
  "parameters": [
@@ -5850,7 +5863,7 @@
5850
5863
  },
5851
5864
  "locationInModule": {
5852
5865
  "filename": "lib/job.ts",
5853
- "line": 157
5866
+ "line": 167
5854
5867
  },
5855
5868
  "name": "onSuccess",
5856
5869
  "parameters": [
@@ -5883,7 +5896,7 @@
5883
5896
  },
5884
5897
  "locationInModule": {
5885
5898
  "filename": "lib/job.ts",
5886
- "line": 171
5899
+ "line": 181
5887
5900
  },
5888
5901
  "name": "onTimeout",
5889
5902
  "parameters": [
@@ -5922,7 +5935,7 @@
5922
5935
  "immutable": true,
5923
5936
  "locationInModule": {
5924
5937
  "filename": "lib/job.ts",
5925
- "line": 136
5938
+ "line": 146
5926
5939
  },
5927
5940
  "name": "jobArn",
5928
5941
  "type": {
@@ -5941,7 +5954,7 @@
5941
5954
  "immutable": true,
5942
5955
  "locationInModule": {
5943
5956
  "filename": "lib/job.ts",
5944
- "line": 130
5957
+ "line": 140
5945
5958
  },
5946
5959
  "name": "jobName",
5947
5960
  "type": {
@@ -6206,7 +6219,7 @@
6206
6219
  },
6207
6220
  "locationInModule": {
6208
6221
  "filename": "lib/job.ts",
6209
- "line": 644
6222
+ "line": 654
6210
6223
  },
6211
6224
  "parameters": [
6212
6225
  {
@@ -6235,7 +6248,7 @@
6235
6248
  "kind": "class",
6236
6249
  "locationInModule": {
6237
6250
  "filename": "lib/job.ts",
6238
- "line": 598
6251
+ "line": 608
6239
6252
  },
6240
6253
  "methods": [
6241
6254
  {
@@ -6245,7 +6258,7 @@
6245
6258
  },
6246
6259
  "locationInModule": {
6247
6260
  "filename": "lib/job.ts",
6248
- "line": 606
6261
+ "line": 616
6249
6262
  },
6250
6263
  "name": "fromJobAttributes",
6251
6264
  "parameters": [
@@ -6292,7 +6305,7 @@
6292
6305
  },
6293
6306
  "locationInModule": {
6294
6307
  "filename": "lib/job.ts",
6295
- "line": 289
6308
+ "line": 299
6296
6309
  },
6297
6310
  "name": "metric",
6298
6311
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -6340,7 +6353,7 @@
6340
6353
  },
6341
6354
  "locationInModule": {
6342
6355
  "filename": "lib/job.ts",
6343
- "line": 316
6356
+ "line": 326
6344
6357
  },
6345
6358
  "name": "metricFailure",
6346
6359
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -6367,7 +6380,7 @@
6367
6380
  },
6368
6381
  "locationInModule": {
6369
6382
  "filename": "lib/job.ts",
6370
- "line": 307
6383
+ "line": 317
6371
6384
  },
6372
6385
  "name": "metricSuccess",
6373
6386
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -6394,7 +6407,7 @@
6394
6407
  },
6395
6408
  "locationInModule": {
6396
6409
  "filename": "lib/job.ts",
6397
- "line": 325
6410
+ "line": 335
6398
6411
  },
6399
6412
  "name": "metricTimeout",
6400
6413
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -6421,7 +6434,7 @@
6421
6434
  },
6422
6435
  "locationInModule": {
6423
6436
  "filename": "lib/job.ts",
6424
- "line": 217
6437
+ "line": 227
6425
6438
  },
6426
6439
  "name": "onEvent",
6427
6440
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -6460,7 +6473,7 @@
6460
6473
  },
6461
6474
  "locationInModule": {
6462
6475
  "filename": "lib/job.ts",
6463
- "line": 266
6476
+ "line": 276
6464
6477
  },
6465
6478
  "name": "onFailure",
6466
6479
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -6499,7 +6512,7 @@
6499
6512
  },
6500
6513
  "locationInModule": {
6501
6514
  "filename": "lib/job.ts",
6502
- "line": 237
6515
+ "line": 247
6503
6516
  },
6504
6517
  "name": "onStateChange",
6505
6518
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -6546,7 +6559,7 @@
6546
6559
  },
6547
6560
  "locationInModule": {
6548
6561
  "filename": "lib/job.ts",
6549
- "line": 256
6562
+ "line": 266
6550
6563
  },
6551
6564
  "name": "onSuccess",
6552
6565
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -6585,7 +6598,7 @@
6585
6598
  },
6586
6599
  "locationInModule": {
6587
6600
  "filename": "lib/job.ts",
6588
- "line": 276
6601
+ "line": 286
6589
6602
  },
6590
6603
  "name": "onTimeout",
6591
6604
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -6628,7 +6641,7 @@
6628
6641
  "immutable": true,
6629
6642
  "locationInModule": {
6630
6643
  "filename": "lib/job.ts",
6631
- "line": 634
6644
+ "line": 644
6632
6645
  },
6633
6646
  "name": "grantPrincipal",
6634
6647
  "overrides": "aws-cdk-lib.aws_iam.IGrantable",
@@ -6644,7 +6657,7 @@
6644
6657
  "immutable": true,
6645
6658
  "locationInModule": {
6646
6659
  "filename": "lib/job.ts",
6647
- "line": 619
6660
+ "line": 629
6648
6661
  },
6649
6662
  "name": "jobArn",
6650
6663
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -6660,7 +6673,7 @@
6660
6673
  "immutable": true,
6661
6674
  "locationInModule": {
6662
6675
  "filename": "lib/job.ts",
6663
- "line": 624
6676
+ "line": 634
6664
6677
  },
6665
6678
  "name": "jobName",
6666
6679
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -6676,7 +6689,7 @@
6676
6689
  "immutable": true,
6677
6690
  "locationInModule": {
6678
6691
  "filename": "lib/job.ts",
6679
- "line": 629
6692
+ "line": 639
6680
6693
  },
6681
6694
  "name": "role",
6682
6695
  "type": {
@@ -6692,7 +6705,7 @@
6692
6705
  "immutable": true,
6693
6706
  "locationInModule": {
6694
6707
  "filename": "lib/job.ts",
6695
- "line": 642
6708
+ "line": 652
6696
6709
  },
6697
6710
  "name": "sparkUILoggingLocation",
6698
6711
  "optional": true,
@@ -6718,7 +6731,7 @@
6718
6731
  "kind": "interface",
6719
6732
  "locationInModule": {
6720
6733
  "filename": "lib/job.ts",
6721
- "line": 434
6734
+ "line": 444
6722
6735
  },
6723
6736
  "name": "JobAttributes",
6724
6737
  "properties": [
@@ -6731,7 +6744,7 @@
6731
6744
  "immutable": true,
6732
6745
  "locationInModule": {
6733
6746
  "filename": "lib/job.ts",
6734
- "line": 438
6747
+ "line": 448
6735
6748
  },
6736
6749
  "name": "jobName",
6737
6750
  "type": {
@@ -6748,7 +6761,7 @@
6748
6761
  "immutable": true,
6749
6762
  "locationInModule": {
6750
6763
  "filename": "lib/job.ts",
6751
- "line": 445
6764
+ "line": 455
6752
6765
  },
6753
6766
  "name": "role",
6754
6767
  "optional": true,
@@ -7341,7 +7354,7 @@
7341
7354
  "kind": "interface",
7342
7355
  "locationInModule": {
7343
7356
  "filename": "lib/job.ts",
7344
- "line": 451
7357
+ "line": 461
7345
7358
  },
7346
7359
  "name": "JobProps",
7347
7360
  "properties": [
@@ -7354,7 +7367,7 @@
7354
7367
  "immutable": true,
7355
7368
  "locationInModule": {
7356
7369
  "filename": "lib/job.ts",
7357
- "line": 455
7370
+ "line": 465
7358
7371
  },
7359
7372
  "name": "executable",
7360
7373
  "type": {
@@ -7372,7 +7385,7 @@
7372
7385
  "immutable": true,
7373
7386
  "locationInModule": {
7374
7387
  "filename": "lib/job.ts",
7375
- "line": 530
7388
+ "line": 540
7376
7389
  },
7377
7390
  "name": "connections",
7378
7391
  "optional": true,
@@ -7396,7 +7409,7 @@
7396
7409
  "immutable": true,
7397
7410
  "locationInModule": {
7398
7411
  "filename": "lib/job.ts",
7399
- "line": 592
7412
+ "line": 602
7400
7413
  },
7401
7414
  "name": "continuousLogging",
7402
7415
  "optional": true,
@@ -7415,7 +7428,7 @@
7415
7428
  "immutable": true,
7416
7429
  "locationInModule": {
7417
7430
  "filename": "lib/job.ts",
7418
- "line": 545
7431
+ "line": 555
7419
7432
  },
7420
7433
  "name": "defaultArguments",
7421
7434
  "optional": true,
@@ -7438,7 +7451,7 @@
7438
7451
  "immutable": true,
7439
7452
  "locationInModule": {
7440
7453
  "filename": "lib/job.ts",
7441
- "line": 469
7454
+ "line": 479
7442
7455
  },
7443
7456
  "name": "description",
7444
7457
  "optional": true,
@@ -7457,7 +7470,7 @@
7457
7470
  "immutable": true,
7458
7471
  "locationInModule": {
7459
7472
  "filename": "lib/job.ts",
7460
- "line": 572
7473
+ "line": 582
7461
7474
  },
7462
7475
  "name": "enableProfilingMetrics",
7463
7476
  "optional": true,
@@ -7475,7 +7488,7 @@
7475
7488
  "immutable": true,
7476
7489
  "locationInModule": {
7477
7490
  "filename": "lib/job.ts",
7478
- "line": 462
7491
+ "line": 472
7479
7492
  },
7480
7493
  "name": "jobName",
7481
7494
  "optional": true,
@@ -7494,7 +7507,7 @@
7494
7507
  "immutable": true,
7495
7508
  "locationInModule": {
7496
7509
  "filename": "lib/job.ts",
7497
- "line": 477
7510
+ "line": 487
7498
7511
  },
7499
7512
  "name": "maxCapacity",
7500
7513
  "optional": true,
@@ -7513,7 +7526,7 @@
7513
7526
  "immutable": true,
7514
7527
  "locationInModule": {
7515
7528
  "filename": "lib/job.ts",
7516
- "line": 493
7529
+ "line": 503
7517
7530
  },
7518
7531
  "name": "maxConcurrentRuns",
7519
7532
  "optional": true,
@@ -7531,7 +7544,7 @@
7531
7544
  "immutable": true,
7532
7545
  "locationInModule": {
7533
7546
  "filename": "lib/job.ts",
7534
- "line": 484
7547
+ "line": 494
7535
7548
  },
7536
7549
  "name": "maxRetries",
7537
7550
  "optional": true,
@@ -7549,7 +7562,7 @@
7549
7562
  "immutable": true,
7550
7563
  "locationInModule": {
7551
7564
  "filename": "lib/job.ts",
7552
- "line": 500
7565
+ "line": 510
7553
7566
  },
7554
7567
  "name": "notifyDelayAfter",
7555
7568
  "optional": true,
@@ -7569,7 +7582,7 @@
7569
7582
  "immutable": true,
7570
7583
  "locationInModule": {
7571
7584
  "filename": "lib/job.ts",
7572
- "line": 563
7585
+ "line": 573
7573
7586
  },
7574
7587
  "name": "role",
7575
7588
  "optional": true,
@@ -7587,7 +7600,7 @@
7587
7600
  "immutable": true,
7588
7601
  "locationInModule": {
7589
7602
  "filename": "lib/job.ts",
7590
- "line": 537
7603
+ "line": 547
7591
7604
  },
7592
7605
  "name": "securityConfiguration",
7593
7606
  "optional": true,
@@ -7606,7 +7619,7 @@
7606
7619
  "immutable": true,
7607
7620
  "locationInModule": {
7608
7621
  "filename": "lib/job.ts",
7609
- "line": 582
7622
+ "line": 592
7610
7623
  },
7611
7624
  "name": "sparkUI",
7612
7625
  "optional": true,
@@ -7624,7 +7637,7 @@
7624
7637
  "immutable": true,
7625
7638
  "locationInModule": {
7626
7639
  "filename": "lib/job.ts",
7627
- "line": 552
7640
+ "line": 562
7628
7641
  },
7629
7642
  "name": "tags",
7630
7643
  "optional": true,
@@ -7647,7 +7660,7 @@
7647
7660
  "immutable": true,
7648
7661
  "locationInModule": {
7649
7662
  "filename": "lib/job.ts",
7650
- "line": 507
7663
+ "line": 517
7651
7664
  },
7652
7665
  "name": "timeout",
7653
7666
  "optional": true,
@@ -7665,7 +7678,7 @@
7665
7678
  "immutable": true,
7666
7679
  "locationInModule": {
7667
7680
  "filename": "lib/job.ts",
7668
- "line": 521
7681
+ "line": 531
7669
7682
  },
7670
7683
  "name": "workerCount",
7671
7684
  "optional": true,
@@ -7683,7 +7696,7 @@
7683
7696
  "immutable": true,
7684
7697
  "locationInModule": {
7685
7698
  "filename": "lib/job.ts",
7686
- "line": 514
7699
+ "line": 524
7687
7700
  },
7688
7701
  "name": "workerType",
7689
7702
  "optional": true,
@@ -7705,7 +7718,7 @@
7705
7718
  "kind": "enum",
7706
7719
  "locationInModule": {
7707
7720
  "filename": "lib/job.ts",
7708
- "line": 68
7721
+ "line": 78
7709
7722
  },
7710
7723
  "members": [
7711
7724
  {
@@ -7907,7 +7920,7 @@
7907
7920
  "kind": "enum",
7908
7921
  "locationInModule": {
7909
7922
  "filename": "lib/job.ts",
7910
- "line": 110
7923
+ "line": 120
7911
7924
  },
7912
7925
  "members": [
7913
7926
  {
@@ -8738,7 +8751,7 @@
8738
8751
  "docs": {
8739
8752
  "stability": "experimental",
8740
8753
  "summary": "Props for creating a Scala Spark (ETL or Streaming) job executable.",
8741
- "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});",
8742
8755
  "custom": {
8743
8756
  "exampleMetadata": "infused"
8744
8757
  }
@@ -9780,7 +9793,7 @@
9780
9793
  "kind": "interface",
9781
9794
  "locationInModule": {
9782
9795
  "filename": "lib/job.ts",
9783
- "line": 374
9796
+ "line": 384
9784
9797
  },
9785
9798
  "name": "SparkUILoggingLocation",
9786
9799
  "properties": [
@@ -9793,7 +9806,7 @@
9793
9806
  "immutable": true,
9794
9807
  "locationInModule": {
9795
9808
  "filename": "lib/job.ts",
9796
- "line": 378
9809
+ "line": 388
9797
9810
  },
9798
9811
  "name": "bucket",
9799
9812
  "type": {
@@ -9810,7 +9823,7 @@
9810
9823
  "immutable": true,
9811
9824
  "locationInModule": {
9812
9825
  "filename": "lib/job.ts",
9813
- "line": 385
9826
+ "line": 395
9814
9827
  },
9815
9828
  "name": "prefix",
9816
9829
  "optional": true,
@@ -9837,7 +9850,7 @@
9837
9850
  "kind": "interface",
9838
9851
  "locationInModule": {
9839
9852
  "filename": "lib/job.ts",
9840
- "line": 347
9853
+ "line": 357
9841
9854
  },
9842
9855
  "name": "SparkUIProps",
9843
9856
  "properties": [
@@ -9850,7 +9863,7 @@
9850
9863
  "immutable": true,
9851
9864
  "locationInModule": {
9852
9865
  "filename": "lib/job.ts",
9853
- "line": 351
9866
+ "line": 361
9854
9867
  },
9855
9868
  "name": "enabled",
9856
9869
  "type": {
@@ -9867,7 +9880,7 @@
9867
9880
  "immutable": true,
9868
9881
  "locationInModule": {
9869
9882
  "filename": "lib/job.ts",
9870
- "line": 358
9883
+ "line": 368
9871
9884
  },
9872
9885
  "name": "bucket",
9873
9886
  "optional": true,
@@ -9885,7 +9898,7 @@
9885
9898
  "immutable": true,
9886
9899
  "locationInModule": {
9887
9900
  "filename": "lib/job.ts",
9888
- "line": 365
9901
+ "line": 375
9889
9902
  },
9890
9903
  "name": "prefix",
9891
9904
  "optional": true,
@@ -10858,7 +10871,7 @@
10858
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')`.",
10859
10872
  "stability": "experimental",
10860
10873
  "summary": "The type of predefined worker that is allocated when a job runs.",
10861
- "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});",
10862
10875
  "custom": {
10863
10876
  "exampleMetadata": "infused"
10864
10877
  }
@@ -10877,7 +10890,7 @@
10877
10890
  },
10878
10891
  "locationInModule": {
10879
10892
  "filename": "lib/job.ts",
10880
- "line": 49
10893
+ "line": 59
10881
10894
  },
10882
10895
  "name": "of",
10883
10896
  "parameters": [
@@ -10910,7 +10923,7 @@
10910
10923
  "immutable": true,
10911
10924
  "locationInModule": {
10912
10925
  "filename": "lib/job.ts",
10913
- "line": 38
10926
+ "line": 48
10914
10927
  },
10915
10928
  "name": "G_025X",
10916
10929
  "static": true,
@@ -10954,6 +10967,42 @@
10954
10967
  "fqn": "@aws-cdk/aws-glue-alpha.WorkerType"
10955
10968
  }
10956
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
+ },
10957
11006
  {
10958
11007
  "const": true,
10959
11008
  "docs": {
@@ -10981,7 +11030,7 @@
10981
11030
  "immutable": true,
10982
11031
  "locationInModule": {
10983
11032
  "filename": "lib/job.ts",
10984
- "line": 43
11033
+ "line": 53
10985
11034
  },
10986
11035
  "name": "Z_2X",
10987
11036
  "static": true,
@@ -10997,7 +11046,7 @@
10997
11046
  "immutable": true,
10998
11047
  "locationInModule": {
10999
11048
  "filename": "lib/job.ts",
11000
- "line": 56
11049
+ "line": 66
11001
11050
  },
11002
11051
  "name": "name",
11003
11052
  "type": {
@@ -11008,6 +11057,6 @@
11008
11057
  "symbolId": "lib/job:WorkerType"
11009
11058
  }
11010
11059
  },
11011
- "version": "2.79.1-alpha.0",
11060
+ "version": "2.81.0-alpha.0",
11012
11061
  "fingerprint": "**********"
11013
11062
  }