@aws-cdk/aws-glue-alpha 2.264.0-alpha.0 → 2.266.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.
Files changed (46) hide show
  1. package/.jsii +689 -552
  2. package/.jsii.tabl.json.gz +0 -0
  3. package/.warnings.jsii.js +25 -33
  4. package/README.md +132 -44
  5. package/awslint.json +2 -1
  6. package/lib/catalog.js +3 -3
  7. package/lib/code.js +3 -3
  8. package/lib/connection.js +12 -4
  9. package/lib/data-format.d.ts +2 -2
  10. package/lib/data-format.js +8 -8
  11. package/lib/data-quality-ruleset.d.ts +35 -4
  12. package/lib/data-quality-ruleset.js +38 -5
  13. package/lib/database.d.ts +11 -2
  14. package/lib/database.js +5 -2
  15. package/lib/external-table.js +6 -4
  16. package/lib/jobs/job.d.ts +6 -24
  17. package/lib/jobs/job.js +5 -3
  18. package/lib/jobs/pyspark-etl-job.d.ts +2 -1
  19. package/lib/jobs/pyspark-etl-job.js +10 -5
  20. package/lib/jobs/pyspark-flex-etl-job.d.ts +3 -2
  21. package/lib/jobs/pyspark-flex-etl-job.js +8 -7
  22. package/lib/jobs/pyspark-streaming-job.d.ts +2 -1
  23. package/lib/jobs/pyspark-streaming-job.js +6 -5
  24. package/lib/jobs/python-shell-job.js +1 -1
  25. package/lib/jobs/ray-job.d.ts +8 -0
  26. package/lib/jobs/ray-job.js +3 -7
  27. package/lib/jobs/scala-spark-etl-job.js +4 -8
  28. package/lib/jobs/scala-spark-flex-etl-job.js +5 -5
  29. package/lib/jobs/scala-spark-streaming-job.js +4 -8
  30. package/lib/jobs/spark-job.d.ts +26 -0
  31. package/lib/jobs/spark-job.js +2 -2
  32. package/lib/partition-projection.js +1 -1
  33. package/lib/private/secret-detection.d.ts +22 -0
  34. package/lib/private/secret-detection.js +42 -0
  35. package/lib/s3-table.d.ts +12 -1
  36. package/lib/s3-table.js +20 -3
  37. package/lib/schema.js +3 -8
  38. package/lib/security-configuration.d.ts +47 -47
  39. package/lib/security-configuration.js +84 -25
  40. package/lib/storage-parameter.js +1 -1
  41. package/lib/table-base.d.ts +56 -3
  42. package/lib/table-base.js +56 -5
  43. package/lib/table-deprecated.js +1 -1
  44. package/lib/triggers/trigger-options.js +1 -1
  45. package/lib/triggers/workflow.js +2 -2
  46. package/package.json +7 -7
package/.jsii CHANGED
@@ -8,7 +8,7 @@
8
8
  "url": "https://aws.amazon.com"
9
9
  },
10
10
  "dependencies": {
11
- "aws-cdk-lib": "^2.264.0",
11
+ "aws-cdk-lib": "^2.266.0",
12
12
  "constructs": "^10.5.0"
13
13
  },
14
14
  "dependencyClosure": {
@@ -9388,7 +9388,7 @@
9388
9388
  "stability": "experimental"
9389
9389
  },
9390
9390
  "homepage": "https://github.com/aws/aws-cdk",
9391
- "jsiiVersion": "5.9.44 (build 150b837)",
9391
+ "jsiiVersion": "5.9.52 (build c132e73)",
9392
9392
  "keywords": [
9393
9393
  "aws",
9394
9394
  "cdk",
@@ -9409,7 +9409,7 @@
9409
9409
  },
9410
9410
  "name": "@aws-cdk/aws-glue-alpha",
9411
9411
  "readme": {
9412
- "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## README\n\n[AWS Glue](https://aws.amazon.com/glue/) is a serverless data integration\nservice that makes it easier to discover, prepare, move, and integrate data\nfrom multiple sources for analytics, machine learning (ML), and application\ndevelopment.\n\nThe Glue L2 construct has convenience methods working backwards from common\nuse cases and sets required parameters to defaults that align with recommended\nbest practices for each job type. It also provides customers with a balance\nbetween flexibility via optional parameter overrides, and opinionated\ninterfaces that discouraging anti-patterns, resulting in reduced time to develop\nand deploy new resources.\n\n### References\n\n* [Glue Launch Announcement](https://aws.amazon.com/blogs/aws/launch-aws-glue-now-generally-available/)\n* [Glue Documentation](https://docs.aws.amazon.com/glue/index.html)\n* [Glue L1 (CloudFormation) Constructs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Glue.html)\n* Prior version of the [@aws-cdk/aws-glue-alpha module](https://github.com/aws/aws-cdk/blob/v2.51.1/packages/%40aws-cdk/aws-glue/README.md)\n\n## Create a Glue Job\n\nA Job encapsulates a script that connects to data sources, processes\nthem, and then writes output to a data target. There are four types of Glue\nJobs: Spark (ETL and Streaming), Python Shell, and Flex Jobs. Most\nof the required parameters for these jobs are common across all types,\nbut there are a few differences depending on the languages supported\nand features provided by each type. For all job types, the L2 defaults\nto AWS best practice recommendations, such as:\n\n* Use of Secrets Manager for Connection JDBC strings\n* Glue job autoscaling\n* Default parameter values for Glue job creation\n\nThis iteration of the L2 construct introduces breaking changes to\nthe existing glue-alpha-module, but these changes streamline the developer\nexperience, introduce new constants for defaults, and replacing synth-time\nvalidations with interface contracts for enforcement of the parameter combinations\nthat Glue supports. As an opinionated construct, the Glue L2 construct does\nnot allow developers to create resources that use non-current versions\nof Glue or deprecated language dependencies (e.g. deprecated versions of Python).\nAs always, L1s allow you to specify a wider range of parameters if you need\nor want to use alternative configurations.\n\nOptional and required parameters for each job are enforced via interface\nrather than validation; see [Glue's public documentation](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api.html)\nfor more granular details.\n\n### Spark Jobs\n\n#### ETL Jobs\n\nETL jobs support pySpark and Scala languages, for which there are separate but\nsimilar constructors. ETL jobs default to the G2 worker type, but you can\noverride this default with other supported worker type values (G1, G2, G4\nand G8). ETL jobs defaults to Glue version 4.0, which you can override to 3.0.\nThe following ETL features are enabled by default:\n`—enable-metrics, —enable-spark-ui, —enable-continuous-cloudwatch-log.`\nYou can find more details about version, worker type and other features in\n[Glue's public documentation](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html).\n\nReference the pyspark-etl-jobs.test.ts and scalaspark-etl-jobs.test.ts unit tests\nfor examples of required-only and optional job parameters when creating these\ntypes of jobs.\n\nFor the sake of brevity, examples are shown using the pySpark job variety.\n\nExample with only required parameters:\n\n```ts\nimport * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkEtlJob(stack, 'PySparkETLJob', {\n role,\n script,\n jobName: 'PySparkETLJob',\n});\n```\n\nExample with optional override parameters:\n\n```ts\nimport * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkEtlJob(stack, 'PySparkETLJob', {\n jobName: 'PySparkETLJobCustomName',\n description: 'This is a description',\n role,\n script,\n glueVersion: glue.GlueVersion.V5_1,\n continuousLogging: { enabled: false },\n workerType: glue.WorkerType.G_2X,\n maxConcurrentRuns: 100,\n timeout: cdk.Duration.hours(2),\n connections: [glue.Connection.fromConnectionName(stack, 'Connection', 'connectionName')],\n securityConfiguration: glue.SecurityConfiguration.fromSecurityConfigurationName(stack, 'SecurityConfig', 'securityConfigName'),\n tags: {\n FirstTagName: 'FirstTagValue',\n SecondTagName: 'SecondTagValue',\n XTagName: 'XTagValue',\n },\n numberOfWorkers: 2,\n maxRetries: 2,\n});\n```\n\n#### Streaming Jobs\n\nStreaming jobs are similar to ETL jobs, except that they perform ETL on data\nstreams using the Apache Spark Structured Streaming framework. Some Spark\njob features are not available to Streaming ETL jobs. They support Scala\nand pySpark languages. PySpark streaming jobs default Python 3.9,\nwhich you can override with any non-deprecated version of Python. It\ndefaults to the G2 worker type and Glue 4.0, both of which you can override.\nThe following best practice features are enabled by default:\n`—enable-metrics, —enable-spark-ui, —enable-continuous-cloudwatch-log`.\n\nReference the pyspark-streaming-jobs.test.ts and scalaspark-streaming-jobs.test.ts\nunit tests for examples of required-only and optional job parameters when creating\nthese types of jobs.\n\nExample with only required parameters:\n\n```ts\nimport * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkStreamingJob(stack, 'ImportedJob', { role, script });\n```\n\nExample with optional override parameters:\n\n```ts\nimport * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkStreamingJob(stack, 'PySparkStreamingJob', {\n jobName: 'PySparkStreamingJobCustomName',\n description: 'This is a description',\n role,\n script,\n glueVersion: glue.GlueVersion.V5_1,\n continuousLogging: { enabled: false },\n workerType: glue.WorkerType.G_2X,\n maxConcurrentRuns: 100,\n timeout: cdk.Duration.hours(2),\n connections: [glue.Connection.fromConnectionName(stack, 'Connection', 'connectionName')],\n securityConfiguration: glue.SecurityConfiguration.fromSecurityConfigurationName(stack, 'SecurityConfig', 'securityConfigName'),\n tags: {\n FirstTagName: 'FirstTagValue',\n SecondTagName: 'SecondTagValue',\n XTagName: 'XTagValue',\n },\n numberOfWorkers: 2,\n maxRetries: 2,\n});\n```\n\n#### Flex Jobs\n\nThe flexible execution class is appropriate for non-urgent jobs such as\npre-production jobs, testing, and one-time data loads. Flexible jobs default\nto Glue version 3.0 and worker type `G_2X`. The following best practice\nfeatures are enabled by default:\n`—enable-metrics, —enable-spark-ui, —enable-continuous-cloudwatch-log`\n\nReference the pyspark-flex-etl-jobs.test.ts and scalaspark-flex-etl-jobs.test.ts\nunit tests for examples of required-only and optional job parameters when creating\nthese types of jobs.\n\nExample with only required parameters:\n\n```ts\nimport * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkFlexEtlJob(stack, 'ImportedJob', { role, script });\n```\n\nExample with optional override parameters:\n\n```ts\nimport * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkEtlJob(stack, 'pySparkEtlJob', {\n jobName: 'pySparkEtlJob',\n description: 'This is a description',\n role,\n script,\n glueVersion: glue.GlueVersion.V5_1,\n continuousLogging: { enabled: false },\n workerType: glue.WorkerType.G_2X,\n maxConcurrentRuns: 100,\n timeout: cdk.Duration.hours(2),\n connections: [glue.Connection.fromConnectionName(stack, 'Connection', 'connectionName')],\n securityConfiguration: glue.SecurityConfiguration.fromSecurityConfigurationName(stack, 'SecurityConfig', 'securityConfigName'),\n tags: {\n FirstTagName: 'FirstTagValue',\n SecondTagName: 'SecondTagValue',\n XTagName: 'XTagValue',\n },\n numberOfWorkers: 2,\n maxRetries: 2,\n});\n```\n\n### Python Shell Jobs\n\nPython shell jobs support a Python version that depends on the AWS Glue\nversion you use. These can be used to schedule and run tasks that don't\nrequire an Apache Spark environment. Python shell jobs default to\nPython 3.9 and a MaxCapacity of `0.0625`. Python 3.9 supports pre-loaded\nanalytics libraries using the `library-set=analytics` flag, which is\nenabled by default.\n\nReference the pyspark-shell-job.test.ts unit tests for examples of\nrequired-only and optional job parameters when creating these types of jobs.\n\nExample with only required parameters:\n\n```ts\nimport * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PythonShellJob(stack, 'ImportedJob', { role, script });\n```\n\nExample with optional override parameters:\n\n```ts\nimport * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\ndeclare const extraPythonFile: glue.Code;\nnew glue.PythonShellJob(stack, 'PythonShellJob', {\n jobName: 'PythonShellJobCustomName',\n description: 'This is a description',\n pythonVersion: glue.PythonVersion.TWO,\n maxCapacity: glue.MaxCapacity.DPU_1,\n role,\n script,\n extraPythonFiles: [extraPythonFile],\n glueVersion: glue.GlueVersion.V2_0,\n continuousLogging: { enabled: false },\n workerType: glue.WorkerType.G_2X,\n maxConcurrentRuns: 100,\n timeout: cdk.Duration.hours(2),\n connections: [glue.Connection.fromConnectionName(stack, 'Connection', 'connectionName')],\n securityConfiguration: glue.SecurityConfiguration.fromSecurityConfigurationName(stack, 'SecurityConfig', 'securityConfigName'),\n tags: {\n FirstTagName: 'FirstTagValue',\n SecondTagName: 'SecondTagValue',\n XTagName: 'XTagValue',\n },\n numberOfWorkers: 2,\n maxRetries: 2,\n});\n```\n\n### Ray Jobs\n\n> **⚠️ DEPRECATED:** AWS Glue for Ray is closed to new customers as of April 30, 2026 and is in maintenance mode.\n> Migrate to [Amazon EKS with KubeRay Operator](https://docs.aws.amazon.com/glue/latest/dg/awsglue-ray-jobs-availability-change.html).\n\nThe `RayJob` construct, `Runtime.RAY_TWO_FOUR`, and `JobType.RAY` are deprecated and will be removed in a future release.\n\n### Metrics Control\n\nBy default, Glue jobs enable CloudWatch metrics (`--enable-metrics`) and observability metrics (`--enable-observability-metrics`) for monitoring and debugging. You can disable these metrics to reduce CloudWatch costs:\n\n```ts\nimport * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\n\n// Disable both metrics for cost optimization\nnew glue.PySparkEtlJob(stack, 'CostOptimizedJob', {\n role,\n script,\n enableMetrics: false,\n enableObservabilityMetrics: false,\n});\n\n// Selective control - keep observability, disable profiling\nnew glue.PySparkEtlJob(stack, 'SelectiveJob', {\n role,\n script,\n enableMetrics: false,\n // enableObservabilityMetrics defaults to true\n});\n```\n\nThis feature is available for all Spark job types (ETL, Streaming, Flex).\n\n### Enable Job Run Queuing\n\nAWS Glue job queuing monitors your account level quotas and limits. If quotas or limits are insufficient to start a Glue job run, AWS Glue will automatically queue the job and wait for limits to free up. Once limits become available, AWS Glue will retry the job run. Glue jobs will queue for limits like max concurrent job runs per account, max concurrent Data Processing Units (DPU), and resource unavailable due to IP address exhaustion in Amazon Virtual Private Cloud (Amazon VPC).\n\nEnable job run queuing by setting the `jobRunQueuingEnabled` property to `true`.\n\n```ts\nimport * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkEtlJob(stack, 'PySparkETLJob', {\n role,\n script,\n jobName: 'PySparkETLJob',\n jobRunQueuingEnabled: true\n});\n```\n\n### Uploading scripts from the CDK app repository to S3\n\nSimilar to other L2 constructs, the Glue L2 automates uploading / updating\nscripts to S3 via an optional fromAsset parameter pointing to a script\nin the local file structure. You provide the existing S3 bucket and\npath to which you'd like the script to be uploaded.\n\nReference the unit tests for examples of repo and S3 code target examples.\n\n### Workflow Triggers\n\nYou can use Glue workflows to create and visualize complex\nextract, transform, and load (ETL) activities involving multiple crawlers,\njobs, and triggers. Standalone triggers are an anti-pattern, so you must\ncreate triggers from within a workflow using the L2 construct.\n\nWithin a workflow object, there are functions to create different\ntypes of triggers with actions and predicates. You then add those triggers\nto jobs.\n\nStartOnCreation defaults to true for all trigger types, but you can\noverride it if you prefer for your trigger not to start on creation.\n\nReference the workflow-triggers.test.ts unit tests for examples of creating\nworkflows and triggers.\n\n#### **1. On-Demand Triggers**\n\nOn-demand triggers can start glue jobs or crawlers. This construct provides\nconvenience functions to create on-demand crawler or job triggers. The constructor\ntakes an optional description parameter, but abstracts the requirement of an\nactions list using the job or crawler objects using conditional types.\n\n#### **2. Scheduled Triggers**\n\nYou can create scheduled triggers using cron expressions. This construct\nprovides daily, weekly, and monthly convenience functions,\nas well as a custom function that allows you to create your own\ncustom timing using the [existing event Schedule class](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_events.Schedule.html)\nwithout having to build your own cron expressions. The L2 extracts\nthe expression that Glue requires from the Schedule object. The constructor\ntakes an optional description and a list of jobs or crawlers as actions.\n\n#### **3. Notify Event Triggers**\n\nThere are two types of notify event triggers: batching and non-batching.\nFor batching triggers, you must specify `BatchSize`. For non-batching\ntriggers, `BatchSize` defaults to 1. For both triggers, `BatchWindow`\ndefaults to 900 seconds, but you can override the window to align with\nyour workload's requirements.\n\n#### **4. Conditional Triggers**\n\nConditional triggers have a predicate and actions associated with them.\nThe trigger actions are executed when the predicateCondition is true.\n\n### Connection Properties\n\nA `Connection` allows Glue jobs, crawlers and development endpoints to access\ncertain types of data stores.\n\n* **Secrets Management**\n You must specify JDBC connection credentials in Secrets Manager and\n provide the Secrets Manager Key name as a property to the job connection.\n\n* **Networking - the CDK determines the best fit subnet for Glue connection\nconfiguration**\n The prior version of the glue-alpha-module requires the developer to\n specify the subnet of the Connection when it’s defined. Now, you can still\n specify the specific subnet you want to use, but are no longer required\n to. You are only required to provide a VPC and either a public or private\n subnet selection. Without a specific subnet provided, the L2 leverages the\n existing [EC2 Subnet Selection](https://docs.aws.amazon.com/cdk/api/v2/python/aws_cdk.aws_ec2/SubnetSelection.html)\n library to make the best choice selection for the subnet.\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## Catalog\n\nThe Glue Data Catalog is a persistent metadata store for your data assets. Every\naccount has an implicit, account-wide catalog that always exists, and you can also\ncreate additional catalogs as `AWS::Glue::Catalog` resources (for example, to\nfederate to another metastore).\n\nA catalog's encryption is fixed when the catalog is created: a catalog either\ncarries encryption settings or it does not. This keeps its configuration easy to\nreason about — there are no mutation methods that change encryption after the fact.\n\n### The account-wide catalog\n\nUse `Catalog.forAccount(scope)` to obtain the implicit account catalog. It is not\na CloudFormation resource — it always exists. Repeated calls within the same stack\nreturn the same instance:\n\n```ts\nconst catalog = glue.Catalog.forAccount(this);\n```\n\nTo configure Data Catalog encryption for the account, use\n`Catalog.encryptAccount(scope, options)`:\n\n```ts\ndeclare const key: kms.Key;\nglue.Catalog.encryptAccount(this, {\n encryptionAtRest: glue.DataCatalogEncryptionAtRest.kms(key),\n});\n```\n\nBecause encryption is fixed at construction, `encryptAccount` must be called\n*before* the account catalog is first used in the stack — before any\n`Catalog.forAccount(this)` call, and before any `Database` that uses the account\ncatalog. Calling it after the account catalog has been materialized throws.\n\nThe account catalog's encryption is an account- and region-wide setting, managed\nthrough the singleton `PutDataCatalogEncryptionSettings` API. Configure it in\nexactly one stack. Configuring it from multiple stacks in the same account and\nregion makes those stacks overwrite one another at deploy time, and the result is\norder-dependent. Unlike duplicate settings within a single stack (which\nCloudFormation rejects), this cross-stack conflict is not caught at synthesis\ntime, because each stack synthesizes to its own template.\n\n### Creating a catalog\n\nTo create a new catalog resource, use the `Catalog` constructor. Encryption is\nconfigured through the `encryptionAtRest` and `connectionPasswordEncryption` props:\n\n```ts\nnew glue.Catalog(this, 'MyCatalog', {\n catalogName: 'my-catalog',\n description: 'my catalog description',\n});\n```\n\n### Encryption at rest\n\nConfigure Data Catalog encryption at rest through the `encryptionAtRest` option\n(on `Catalog.encryptAccount`, the `Catalog` constructor, or the import factories).\nIt accepts a `DataCatalogEncryptionAtRest` describing the mode:\n\n```ts\ndeclare const key: kms.Key;\n\n// SSE-KMS with a customer-managed key\nglue.Catalog.encryptAccount(this, {\n encryptionAtRest: glue.DataCatalogEncryptionAtRest.kms(key),\n});\n\n// SSE-KMS with an AWS-managed key (omit the key)\nnew glue.Catalog(this, 'ManagedKeyCatalog', {\n catalogName: 'managed-key-catalog',\n encryptionAtRest: glue.DataCatalogEncryptionAtRest.kms(),\n});\n\n// Disable encryption at rest\nnew glue.Catalog(this, 'PlaintextCatalog', {\n catalogName: 'plaintext-catalog',\n encryptionAtRest: glue.DataCatalogEncryptionAtRest.disabled(),\n});\n```\n\nWhen you use `SSE-KMS-WITH-SERVICE-ROLE`, AWS Glue accesses the KMS key through a\nservice role you provide. If you pass a customer-managed key, the role is\nautomatically granted the permissions it needs to encrypt and decrypt catalog data:\n\n```ts\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const key: kms.Key;\ndeclare const role: iam.IRole;\nglue.Catalog.encryptAccount(this, {\n encryptionAtRest: glue.DataCatalogEncryptionAtRest.kmsWithServiceRole(role, key),\n});\n```\n\nThe customer-managed key, when configured, is exposed on the catalog as\n`encryptionKey` (and the connection-password key as `connectionPasswordKey`), so\nyou can reference it to grant additional access. It is undefined when encryption is\ndisabled or an AWS-managed key is used.\n\n### Connection password encryption\n\nIndependently from encryption at rest, the Data Catalog can encrypt the passwords\nstored in connection properties. Configure it through the\n`connectionPasswordEncryption` option:\n\n```ts\ndeclare const key: kms.Key;\nglue.Catalog.encryptAccount(this, {\n connectionPasswordEncryption: {\n kmsKey: key,\n // Whether GetConnection/GetConnections return the password encrypted (default: true)\n returnConnectionPasswordEncrypted: true,\n },\n});\n```\n\nThe two encryption blocks are independent: enabling one does not require the other,\nand each may use a different KMS key. The customer-managed key for connection\npasswords is exposed as `connectionPasswordKey`.\n\n### Importing a catalog\n\nYou can import an existing catalog by ARN or by id. An imported catalog is a pure\nidentity handle — it emits no resources and does not manage the catalog's\nencryption:\n\n```ts\nconst byId = glue.Catalog.fromCatalogId(this, 'ById', 'my-catalog-id');\nconst byArn = glue.Catalog.fromCatalogArn(this, 'ByArn', 'arn:aws:glue:us-east-1:123456789012:catalog/my-catalog-id');\n```\n\nTo manage the Data Catalog encryption of a catalog you did not create in this\nstack, add a `CfnDataCatalogEncryptionSettings` resource targeting its id\ndirectly. Do this from exactly one stack: like the account catalog, a catalog has\na single encryption configuration, so two settings resources targeting the same id\nrace to overwrite one another at deploy time. Within a single stack this is caught\nby CloudFormation template validation (E3019, duplicate primary identifiers);\nacross stacks it is not, since each stack synthesizes to its own template.\n\n```ts\nimport { CfnDataCatalogEncryptionSettings } from 'aws-cdk-lib/aws-glue';\n\nnew CfnDataCatalogEncryptionSettings(this, 'Encryption', {\n catalogId: 'my-catalog-id',\n dataCatalogEncryptionSettings: {\n encryptionAtRest: { catalogEncryptionMode: 'SSE-KMS' },\n },\n});\n```\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 databaseName: 'my_database',\n description: 'my_database_description',\n});\n```\n\n## Table\n\nA Glue table describes a table of data in S3: its structure (column names and types), location of data (S3 objects with a common prefix in a S3 bucket), and format for the files (Json, Avro, Parquet, etc.):\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }, {\n name: 'col2',\n type: glue.Schema.array(glue.Schema.STRING),\n comment: 'col2 is an array of strings' // comment is optional\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\nBy default, a S3 bucket will be created to store the table's data but you can manually pass the `bucket` and `s3Prefix`:\n\n```ts\ndeclare const myBucket: s3.Bucket;\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n bucket: myBucket,\n s3Prefix: 'my-table/',\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\nGlue tables can be configured to contain user-defined properties, to describe the physical storage of table data, through the `storageParameters` property:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n storageParameters: [\n glue.StorageParameter.skipHeaderLineCount(1),\n glue.StorageParameter.compressionType(glue.CompressionType.GZIP),\n glue.StorageParameter.custom('separatorChar', ',')\n ],\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\nGlue tables can also be configured to contain user-defined table properties through the [`parameters`](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html#cfn-glue-table-tableinput-parameters) property:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n parameters: {\n key1: 'val1',\n key2: 'val2',\n },\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n### Partition Keys\n\nTo improve query performance, a table can specify `partitionKeys` on which data is stored and queried separately. For example, you might partition a table by `year` and `month` to optimize queries based on a time window:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.SMALL_INT,\n }, {\n name: 'month',\n type: glue.Schema.SMALL_INT,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n### Partition Indexes\n\nAnother way to improve query performance is to specify partition indexes. If no partition indexes are\npresent on the table, AWS Glue loads all partitions of the table and filters the loaded partitions using\nthe query expression. The query takes more time to run as the number of partitions increase. With an\nindex, the query will try to fetch a subset of the partitions instead of loading all partitions of the\ntable.\n\nThe keys of a partition index must be a subset of the partition keys of the table. You can have a\nmaximum of 3 partition indexes per table. To specify a partition index, you can use the `partitionIndexes`\nproperty:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.SMALL_INT,\n }, {\n name: 'month',\n type: glue.Schema.SMALL_INT,\n }],\n partitionIndexes: [{\n indexName: 'my-index', // optional\n keyNames: ['year'],\n }], // supply up to 3 indexes\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\nAlternatively, you can call the `addPartitionIndex()` function on a table:\n\n```ts\ndeclare const myTable: glue.Table;\nmyTable.addPartitionIndex({\n indexName: 'my-index',\n keyNames: ['year'],\n});\n```\n\n### Partition Filtering\n\nIf you have a table with a large number of partitions that grows over time, consider using AWS Glue partition indexing and filtering.\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.SMALL_INT,\n }, {\n name: 'month',\n type: glue.Schema.SMALL_INT,\n }],\n dataFormat: glue.DataFormat.JSON,\n enablePartitionFiltering: true,\n});\n```\n\n### Partition Projection\n\nPartition projection allows Athena to automatically add new partitions as new data arrives, without requiring `ALTER TABLE ADD PARTITION` statements. This improves query performance and reduces management overhead by eliminating the need to manually manage partition metadata.\n\nFor more information, see the [AWS documentation on partition projection](https://docs.aws.amazon.com/athena/latest/ug/partition-projection.html).\n\n#### INTEGER Projection\n\nFor partition keys with sequential numeric values:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'data',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.INTEGER,\n }],\n dataFormat: glue.DataFormat.JSON,\n partitionProjection: {\n year: glue.PartitionProjectionConfiguration.integer({\n min: 2020,\n max: 2023,\n interval: 1, // optional, defaults to 1\n digits: 4, // optional, pads with leading zeros\n }),\n },\n});\n```\n\n#### DATE Projection\n\nFor partition keys with date or timestamp values. Supports both fixed dates and relative dates using `NOW`:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'data',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'date',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n partitionProjection: {\n date: glue.PartitionProjectionConfiguration.date({\n min: '2020-01-01',\n max: '2023-12-31',\n format: 'yyyy-MM-dd',\n interval: 1, // optional, defaults to 1\n intervalUnit: glue.DateIntervalUnit.DAYS, // optional: YEARS, MONTHS, WEEKS, DAYS, HOURS, MINUTES, SECONDS\n }),\n },\n});\n```\n\nYou can also use relative dates with `NOW`:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'data',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'date',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n partitionProjection: {\n date: glue.PartitionProjectionConfiguration.date({\n min: 'NOW-3YEARS',\n max: 'NOW',\n format: 'yyyy-MM-dd',\n }),\n },\n});\n```\n\n#### ENUM Projection\n\nFor partition keys with a known set of values:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'data',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'region',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n partitionProjection: {\n region: glue.PartitionProjectionConfiguration.enum({\n values: ['us-east-1', 'us-west-2', 'eu-west-1'],\n }),\n },\n});\n```\n\n#### INJECTED Projection\n\nFor custom partition values injected at query time:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'data',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'custom',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n partitionProjection: {\n custom: glue.PartitionProjectionConfiguration.injected(),\n },\n});\n```\n\n#### Multiple Partition Projections\n\nYou can configure partition projection for multiple partition keys:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'data',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [\n {\n name: 'year',\n type: glue.Schema.INTEGER,\n },\n {\n name: 'month',\n type: glue.Schema.INTEGER,\n },\n {\n name: 'region',\n type: glue.Schema.STRING,\n },\n ],\n dataFormat: glue.DataFormat.JSON,\n partitionProjection: {\n year: glue.PartitionProjectionConfiguration.integer({\n min: 2020,\n max: 2023,\n }),\n month: glue.PartitionProjectionConfiguration.integer({\n min: 1,\n max: 12,\n digits: 2,\n }),\n region: glue.PartitionProjectionConfiguration.enum({\n values: ['us-east-1', 'us-west-2'],\n }),\n },\n});\n```\n\n### Glue Connections\n\nGlue connections allow external data connections to third party databases and data warehouses. However, these connections can also be assigned to Glue Tables, allowing you to query external data sources using the Glue Data Catalog.\n\nWhereas `S3Table` will point to (and if needed, create) a bucket to store the tables' data, `ExternalTable` will point to an existing table in a data source. For example, to create a table in Glue that points to a table in Redshift:\n\n```ts\ndeclare const myConnection: glue.Connection;\ndeclare const myDatabase: glue.Database;\nnew glue.ExternalTable(this, 'MyTable', {\n connection: myConnection,\n externalDataLocation: 'default_db_public_example', // A table in Redshift\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n## [Encryption](https://docs.aws.amazon.com/athena/latest/ug/encryption.html)\n\nWhen the table creates its own S3 bucket (i.e. you do not pass an explicit `bucket`), that bucket enforces SSL: a bucket policy denies any request made over plain HTTP. If you provide your own bucket, enabling `enforceSSL` on it is your responsibility.\n\nYou can enable encryption on a Table's data:\n\n* [S3Managed](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html) - (default) Server side encryption (`SSE-S3`) with an Amazon S3-managed key.\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n encryption: glue.TableEncryption.S3_MANAGED,\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n* [Kms](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html) - Server-side encryption (`SSE-KMS`) with an AWS KMS Key managed by the account owner.\n\n```ts\ndeclare const myDatabase: glue.Database;\n// KMS key is created automatically\nnew glue.S3Table(this, 'MyTable', {\n encryption: glue.TableEncryption.KMS,\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n\n// with an explicit KMS key\nnew glue.S3Table(this, 'MyTable', {\n encryption: glue.TableEncryption.KMS,\n encryptionKey: new kms.Key(this, 'MyKey'),\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n* [KmsManaged](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html) - Server-side encryption (`SSE-KMS`), like `Kms`, except with an AWS KMS Key managed by the AWS Key Management Service.\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n encryption: glue.TableEncryption.KMS_MANAGED,\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n* [ClientSideKms](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html#client-side-encryption-kms-managed-master-key-intro) - Client-side encryption (`CSE-KMS`) with an AWS KMS Key managed by the account owner.\n\n```ts\ndeclare const myDatabase: glue.Database;\n// KMS key is created automatically\nnew glue.S3Table(this, 'MyTable', {\n encryption: glue.TableEncryption.CLIENT_SIDE_KMS,\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n\n// with an explicit KMS key\nnew glue.S3Table(this, 'MyTable', {\n encryption: glue.TableEncryption.CLIENT_SIDE_KMS,\n encryptionKey: new kms.Key(this, 'MyKey'),\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n*Note: you cannot provide a `Bucket` when creating the `S3Table` if you wish to use server-side encryption (`KMS`, `KMS_MANAGED` or `S3_MANAGED`)*.\n\n## Types\n\nA table's schema is a collection of columns, each of which have a `name` and a `type`. Types are recursive structures, consisting of primitive and complex types:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n columns: [{\n name: 'primitive_column',\n type: glue.Schema.STRING,\n }, {\n name: 'array_column',\n type: glue.Schema.array(glue.Schema.INTEGER),\n comment: 'array<integer>',\n }, {\n name: 'map_column',\n type: glue.Schema.map(\n glue.Schema.STRING,\n glue.Schema.TIMESTAMP),\n comment: 'map<string,string>',\n }, {\n name: 'struct_column',\n type: glue.Schema.struct([{\n name: 'nested_column',\n type: glue.Schema.DATE,\n comment: 'nested comment',\n }]),\n comment: \"struct<nested_column:date COMMENT 'nested comment'>\",\n }],\n // ...\n database: myDatabase,\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n## Public FAQ\n\n### What are we launching today?\n\nWe’re launching new features to an AWS CDK Glue L2 Construct to provide\nbest-practice defaults and convenience methods to create Glue Jobs, Connections,\nTriggers, Workflows, and the underlying permissions and configuration.\n\n### Why should I use this Construct?\n\nDevelopers should use this Construct to reduce the amount of boilerplate\ncode and complexity each individual has to navigate, and make it easier to\ncreate best-practice Glue resources.\n\n### What’s not in scope?\n\nGlue Crawlers and other resources that are now managed by the AWS LakeFormation\nteam are not in scope for this effort. Developers should use existing methods\nto create these resources, and the new Glue L2 construct assumes they already\nexist as inputs. While best practice is for application and infrastructure code\nto be as close as possible for teams using fully-implemented DevOps mechanisms,\nin practice these ETL scripts are likely managed by a data science team who\nknow Python or Scala and don’t necessarily own or manage their own\ninfrastructure deployments. We want to meet developers where they are, and not\nassume that all of the code resides in the same repository, Developers can\nautomate this themselves via the CDK, however, if they do own both.\n\nValidating Glue version and feature use per AWS region at synth time is also\nnot in scope. AWS’ intention is for all features to eventually be propagated to\nall Global regions, so the complexity involved in creating and updating region-\nspecific configuration to match shifting feature sets does not out-weigh the\nlikelihood that a developer will use this construct to deploy resources to a\nregion without a particular new feature to a region that doesn’t yet support\nit without researching or manually attempting to use that feature before\ndeveloping it via IaC. The developer will, of course, still get feedback from\nthe underlying Glue APIs as CloudFormation deploys the resources similar to the\ncurrent CDK L1 Glue experience.\n"
9412
+ "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## README\n\n[AWS Glue](https://aws.amazon.com/glue/) is a serverless data integration\nservice that makes it easier to discover, prepare, move, and integrate data\nfrom multiple sources for analytics, machine learning (ML), and application\ndevelopment.\n\nThe Glue L2 construct has convenience methods working backwards from common\nuse cases and sets required parameters to defaults that align with recommended\nbest practices for each job type. It also provides customers with a balance\nbetween flexibility via optional parameter overrides, and opinionated\ninterfaces that discouraging anti-patterns, resulting in reduced time to develop\nand deploy new resources.\n\n### References\n\n* [Glue Launch Announcement](https://aws.amazon.com/blogs/aws/launch-aws-glue-now-generally-available/)\n* [Glue Documentation](https://docs.aws.amazon.com/glue/index.html)\n* [Glue L1 (CloudFormation) Constructs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Glue.html)\n* Prior version of the [@aws-cdk/aws-glue-alpha module](https://github.com/aws/aws-cdk/blob/v2.51.1/packages/%40aws-cdk/aws-glue/README.md)\n\n## Create a Glue Job\n\nA Job encapsulates a script that connects to data sources, processes\nthem, and then writes output to a data target. There are four types of Glue\nJobs: Spark (ETL and Streaming), Python Shell, and Flex Jobs. Most\nof the required parameters for these jobs are common across all types,\nbut there are a few differences depending on the languages supported\nand features provided by each type. For all job types, the L2 defaults\nto AWS best practice recommendations, such as:\n\n* Use of Secrets Manager for Connection JDBC strings\n* Glue job autoscaling\n* Default parameter values for Glue job creation\n\nThis iteration of the L2 construct introduces breaking changes to\nthe existing glue-alpha-module, but these changes streamline the developer\nexperience, introduce new constants for defaults, and replacing synth-time\nvalidations with interface contracts for enforcement of the parameter combinations\nthat Glue supports. As an opinionated construct, the Glue L2 construct does\nnot allow developers to create resources that use non-current versions\nof Glue or deprecated language dependencies (e.g. deprecated versions of Python).\nAs always, L1s allow you to specify a wider range of parameters if you need\nor want to use alternative configurations.\n\nOptional and required parameters for each job are enforced via interface\nrather than validation; see [Glue's public documentation](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api.html)\nfor more granular details.\n\n### Spark Jobs\n\n#### ETL Jobs\n\nETL jobs support pySpark and Scala languages, for which there are separate but\nsimilar constructors. ETL jobs default to the G2 worker type, but you can\noverride this default with other supported worker type values (G1, G2, G4\nand G8). ETL jobs defaults to Glue version 4.0, which you can override to 3.0.\nThe following ETL features are enabled by default:\n`—enable-metrics, —enable-continuous-cloudwatch-log.`\nThe Spark UI (`—enable-spark-ui`) is off by default; enable it by setting the\n`sparkUI` prop.\nYou can find more details about version, worker type and other features in\n[Glue's public documentation](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html).\n\nReference the pyspark-etl-jobs.test.ts and scalaspark-etl-jobs.test.ts unit tests\nfor examples of required-only and optional job parameters when creating these\ntypes of jobs.\n\nFor the sake of brevity, examples are shown using the pySpark job variety.\n\nExample with only required parameters:\n\n```ts\nimport * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkEtlJob(stack, 'PySparkETLJob', {\n role,\n script,\n jobName: 'PySparkETLJob',\n});\n```\n\nExample with optional override parameters:\n\n```ts\nimport * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkEtlJob(stack, 'PySparkETLJob', {\n jobName: 'PySparkETLJobCustomName',\n description: 'This is a description',\n role,\n script,\n glueVersion: glue.GlueVersion.V5_1,\n continuousLogging: { enabled: false },\n workerConfiguration: {\n workerType: glue.WorkerType.G_2X,\n numberOfWorkers: 2,\n },\n maxConcurrentRuns: 100,\n timeout: cdk.Duration.hours(2),\n connections: [glue.Connection.fromConnectionName(stack, 'Connection', 'connectionName')],\n securityConfiguration: glue.SecurityConfiguration.fromSecurityConfigurationName(stack, 'SecurityConfig', 'securityConfigName'),\n tags: {\n FirstTagName: 'FirstTagValue',\n SecondTagName: 'SecondTagValue',\n XTagName: 'XTagValue',\n },\n maxRetries: 2,\n});\n```\n\n#### Streaming Jobs\n\nStreaming jobs are similar to ETL jobs, except that they perform ETL on data\nstreams using the Apache Spark Structured Streaming framework. Some Spark\njob features are not available to Streaming ETL jobs. They support Scala\nand pySpark languages. PySpark streaming jobs run on Python 3. It\ndefaults to the G2 worker type and Glue 4.0, both of which you can override.\nThe following best practice features are enabled by default:\n`—enable-metrics, —enable-continuous-cloudwatch-log`.\nThe Spark UI (`—enable-spark-ui`) is off by default; enable it by setting the\n`sparkUI` prop.\n\nReference the pyspark-streaming-jobs.test.ts and scalaspark-streaming-jobs.test.ts\nunit tests for examples of required-only and optional job parameters when creating\nthese types of jobs.\n\nExample with only required parameters:\n\n```ts\nimport * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkStreamingJob(stack, 'ImportedJob', { role, script });\n```\n\nExample with optional override parameters:\n\n```ts\nimport * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkStreamingJob(stack, 'PySparkStreamingJob', {\n jobName: 'PySparkStreamingJobCustomName',\n description: 'This is a description',\n role,\n script,\n glueVersion: glue.GlueVersion.V5_1,\n continuousLogging: { enabled: false },\n workerConfiguration: {\n workerType: glue.WorkerType.G_2X,\n numberOfWorkers: 2,\n },\n maxConcurrentRuns: 100,\n timeout: cdk.Duration.hours(2),\n connections: [glue.Connection.fromConnectionName(stack, 'Connection', 'connectionName')],\n securityConfiguration: glue.SecurityConfiguration.fromSecurityConfigurationName(stack, 'SecurityConfig', 'securityConfigName'),\n tags: {\n FirstTagName: 'FirstTagValue',\n SecondTagName: 'SecondTagValue',\n XTagName: 'XTagValue',\n },\n maxRetries: 2,\n});\n```\n\n#### Flex Jobs\n\nThe flexible execution class is appropriate for non-urgent jobs such as\npre-production jobs, testing, and one-time data loads. Flexible jobs default\nto Glue version 5.0 and worker type `G_2X`. The following best practice\nfeatures are enabled by default:\n`—enable-metrics, —enable-continuous-cloudwatch-log`\nThe Spark UI (`—enable-spark-ui`) is off by default; enable it by setting the\n`sparkUI` prop.\n\nReference the pyspark-flex-etl-jobs.test.ts and scalaspark-flex-etl-jobs.test.ts\nunit tests for examples of required-only and optional job parameters when creating\nthese types of jobs.\n\nExample with only required parameters:\n\n```ts\nimport * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkFlexEtlJob(stack, 'ImportedJob', { role, script });\n```\n\nExample with optional override parameters:\n\n```ts\nimport * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkFlexEtlJob(stack, 'pySparkFlexEtlJob', {\n jobName: 'pySparkFlexEtlJob',\n description: 'This is a description',\n role,\n script,\n glueVersion: glue.GlueVersion.V5_1,\n continuousLogging: { enabled: false },\n workerConfiguration: {\n workerType: glue.WorkerType.G_2X,\n numberOfWorkers: 2,\n },\n maxConcurrentRuns: 100,\n timeout: cdk.Duration.hours(2),\n connections: [glue.Connection.fromConnectionName(stack, 'Connection', 'connectionName')],\n securityConfiguration: glue.SecurityConfiguration.fromSecurityConfigurationName(stack, 'SecurityConfig', 'securityConfigName'),\n tags: {\n FirstTagName: 'FirstTagValue',\n SecondTagName: 'SecondTagValue',\n XTagName: 'XTagValue',\n },\n maxRetries: 2,\n});\n```\n\n### Python Shell Jobs\n\nPython shell jobs support a Python version that depends on the AWS Glue\nversion you use. These can be used to schedule and run tasks that don't\nrequire an Apache Spark environment. Python shell jobs default to\nPython 3.9 and a MaxCapacity of `0.0625`. Python 3.9 supports pre-loaded\nanalytics libraries using the `library-set=analytics` flag, which is\nenabled by default.\n\nReference the pyspark-shell-job.test.ts unit tests for examples of\nrequired-only and optional job parameters when creating these types of jobs.\n\nExample with only required parameters:\n\n```ts\nimport * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PythonShellJob(stack, 'ImportedJob', { role, script });\n```\n\nExample with optional override parameters:\n\n```ts\nimport * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\ndeclare const extraPythonFile: glue.Code;\nnew glue.PythonShellJob(stack, 'PythonShellJob', {\n jobName: 'PythonShellJobCustomName',\n description: 'This is a description',\n pythonVersion: glue.PythonVersion.THREE_NINE,\n maxCapacity: glue.MaxCapacity.DPU_1,\n role,\n script,\n extraPythonFiles: [extraPythonFile],\n glueVersion: glue.GlueVersion.V3_0,\n continuousLogging: { enabled: false },\n maxConcurrentRuns: 100,\n timeout: cdk.Duration.hours(2),\n connections: [glue.Connection.fromConnectionName(stack, 'Connection', 'connectionName')],\n securityConfiguration: glue.SecurityConfiguration.fromSecurityConfigurationName(stack, 'SecurityConfig', 'securityConfigName'),\n tags: {\n FirstTagName: 'FirstTagValue',\n SecondTagName: 'SecondTagValue',\n XTagName: 'XTagValue',\n },\n maxRetries: 2,\n});\n```\n\n### Ray Jobs\n\n> **⚠️ DEPRECATED:** AWS Glue for Ray is closed to new customers as of April 30, 2026 and is in maintenance mode.\n> Migrate to [Amazon EKS with KubeRay Operator](https://docs.aws.amazon.com/glue/latest/dg/awsglue-ray-jobs-availability-change.html).\n\nThe `RayJob` construct, `Runtime.RAY_TWO_FOUR`, and `JobType.RAY` are deprecated and will be removed in a future release.\n\n### Metrics Control\n\nBy default, Glue jobs enable CloudWatch metrics (`--enable-metrics`) and observability metrics (`--enable-observability-metrics`) for monitoring and debugging. You can disable these metrics to reduce CloudWatch costs:\n\n```ts\nimport * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\n\n// Disable both metrics for cost optimization\nnew glue.PySparkEtlJob(stack, 'CostOptimizedJob', {\n role,\n script,\n enableMetrics: false,\n enableObservabilityMetrics: false,\n});\n\n// Selective control - keep observability, disable profiling\nnew glue.PySparkEtlJob(stack, 'SelectiveJob', {\n role,\n script,\n enableMetrics: false,\n // enableObservabilityMetrics defaults to true\n});\n```\n\nThis feature is available for all Spark job types (ETL, Streaming, Flex).\n\n### Enable Job Run Queuing\n\nAWS Glue job queuing monitors your account level quotas and limits. If quotas or limits are insufficient to start a Glue job run, AWS Glue will automatically queue the job and wait for limits to free up. Once limits become available, AWS Glue will retry the job run. Glue jobs will queue for limits like max concurrent job runs per account, max concurrent Data Processing Units (DPU), and resource unavailable due to IP address exhaustion in Amazon Virtual Private Cloud (Amazon VPC).\n\nEnable job run queuing by setting the `jobRunQueuingEnabled` property to `true`.\n\n```ts\nimport * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkEtlJob(stack, 'PySparkETLJob', {\n role,\n script,\n jobName: 'PySparkETLJob',\n jobRunQueuingEnabled: true\n});\n```\n\n### Uploading scripts from the CDK app repository to S3\n\nSimilar to other L2 constructs, the Glue L2 automates uploading local\nscripts to S3. Use `glue.Code.fromAsset(path)` to point at a script in your\nlocal file structure; it is uploaded to the CDK-managed asset bucket. To\nreference a script that already exists in S3, use\n`glue.Code.fromBucket(bucket, key)`, which performs no upload. A `script` is\nrequired for every job.\n\nReference the unit tests for examples of repo and S3 code target examples.\n\n### Workflow Triggers\n\nYou can use Glue workflows to create and visualize complex\nextract, transform, and load (ETL) activities involving multiple crawlers,\njobs, and triggers. Standalone triggers are an anti-pattern, so you must\ncreate triggers from within a workflow using the L2 construct.\n\nWithin a workflow object, there are functions to create different\ntypes of triggers with actions and predicates. You add triggers to the\nworkflow, and each trigger references the jobs or crawlers it runs as its\nactions.\n\n`startOnCreation` applies to scheduled triggers (and, via\n`ConditionalTriggerOptions`, conditional triggers) only. It defaults to `false`,\nbut you can override it if you prefer for your trigger to start on creation.\n\nReference the workflow-triggers.test.ts unit tests for examples of creating\nworkflows and triggers.\n\n```ts\nimport * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\n\n// Create a job to run from the workflow\nconst job = new glue.PySparkEtlJob(stack, 'Job', { role, script });\n\n// Create a workflow and add a trigger that runs the job\nconst workflow = new glue.Workflow(stack, 'Workflow');\nworkflow.addOnDemandTrigger('OnDemandTrigger', {\n actions: [{ job }],\n});\n```\n\n#### **1. On-Demand Triggers**\n\nOn-demand triggers can start glue jobs or crawlers. This construct provides\nconvenience functions to create on-demand crawler or job triggers. The constructor\ntakes an optional description parameter, but abstracts the requirement of an\nactions list using the job or crawler objects using conditional types.\n\n#### **2. Scheduled Triggers**\n\nYou can create scheduled triggers using cron expressions. This construct\nprovides daily and weekly convenience functions,\nas well as a custom function that allows you to create your own\ncustom timing using the [existing event Schedule class](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_events.Schedule.html)\nwithout having to build your own cron expressions. The L2 extracts\nthe expression that Glue requires from the Schedule object. The constructor\ntakes an optional description and a list of jobs or crawlers as actions.\n\n#### **3. Notify Event Triggers**\n\nThere are two types of notify event triggers: batching and non-batching.\nFor batching triggers, you must specify `BatchSize`. For non-batching\ntriggers, `BatchSize` defaults to 1. For both triggers, `BatchWindow`\ndefaults to 900 seconds, but you can override the window to align with\nyour workload's requirements.\n\n#### **4. Conditional Triggers**\n\nConditional triggers have a predicate and actions associated with them.\nThe trigger actions are executed when the predicateCondition is true.\n\n### Connection Properties\n\nA `Connection` allows Glue jobs, crawlers and development endpoints to access\ncertain types of data stores.\n\n* **Secrets Management**\n You must specify JDBC connection credentials in Secrets Manager and\n provide the Secrets Manager Key name as a property to the job connection.\n\n* **Networking - the CDK determines the best fit subnet for Glue connection\nconfiguration**\n The prior version of the glue-alpha-module requires the developer to\n specify the subnet of the Connection when it’s defined. Now, you can still\n specify the specific subnet you want to use, but are no longer required\n to. You are only required to provide a VPC and either a public or private\n subnet selection. Without a specific subnet provided, the L2 leverages the\n existing [EC2 Subnet Selection](https://docs.aws.amazon.com/cdk/api/v2/python/aws_cdk.aws_ec2/SubnetSelection.html)\n library to make the best choice selection for the subnet.\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\nConnection `properties` are emitted verbatim into the CloudFormation template, so\nany credential placed there in plaintext is stored in plaintext in the template,\n`cdk.out`, and source control. Reference a Secrets Manager secret through\n`SECRET_ID` (as above) instead. If a property key looks like a credential (for\nexample `PASSWORD`, `SECRET`, or `TOKEN`) and holds a plaintext literal, the\nconstruct emits a synthesis-time warning.\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\nEach encryption config is built with a factory that pairs the encryption mode\nwith its key, so illegal combinations (such as an S3-managed encryption carrying\na KMS key) cannot be expressed:\n\n```ts\nnew glue.SecurityConfiguration(this, 'MySecurityConfiguration', {\n cloudWatchEncryption: glue.CloudWatchEncryption.kms(),\n jobBookmarksEncryption: glue.JobBookmarksEncryption.clientSideKms(),\n s3Encryption: glue.S3Encryption.kms(),\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 to any factory, for example, for CloudWatch encryption:\n\n```ts\ndeclare const key: kms.Key;\nnew glue.SecurityConfiguration(this, 'MySecurityConfiguration', {\n cloudWatchEncryption: glue.CloudWatchEncryption.kms(key),\n});\n```\n\nUse `glue.S3Encryption.s3Managed()` for S3-managed (SSE-S3) encryption, which takes no key.\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## Catalog\n\nThe Glue Data Catalog is a persistent metadata store for your data assets. Every\naccount has an implicit, account-wide catalog that always exists, and you can also\ncreate additional catalogs as `AWS::Glue::Catalog` resources (for example, to\nfederate to another metastore).\n\nA catalog's encryption is fixed when the catalog is created: a catalog either\ncarries encryption settings or it does not. This keeps its configuration easy to\nreason about — there are no mutation methods that change encryption after the fact.\n\n### The account-wide catalog\n\nUse `Catalog.forAccount(scope)` to obtain the implicit account catalog. It is not\na CloudFormation resource — it always exists. Repeated calls within the same stack\nreturn the same instance:\n\n```ts\nconst catalog = glue.Catalog.forAccount(this);\n```\n\nTo configure Data Catalog encryption for the account, use\n`Catalog.encryptAccount(scope, options)`:\n\n```ts\ndeclare const key: kms.Key;\nglue.Catalog.encryptAccount(this, {\n encryptionAtRest: glue.DataCatalogEncryptionAtRest.kms(key),\n});\n```\n\nBecause encryption is fixed at construction, `encryptAccount` must be called\n*before* the account catalog is first used in the stack — before any\n`Catalog.forAccount(this)` call, and before any `Database` that uses the account\ncatalog. Calling it after the account catalog has been materialized throws.\n\nThe account catalog's encryption is an account- and region-wide setting, managed\nthrough the singleton `PutDataCatalogEncryptionSettings` API. Configure it in\nexactly one stack. Configuring it from multiple stacks in the same account and\nregion makes those stacks overwrite one another at deploy time, and the result is\norder-dependent. Unlike duplicate settings within a single stack (which\nCloudFormation rejects), this cross-stack conflict is not caught at synthesis\ntime, because each stack synthesizes to its own template.\n\n### Creating a catalog\n\nTo create a new catalog resource, use the `Catalog` constructor. Encryption is\nconfigured through the `encryptionAtRest` and `connectionPasswordEncryption` props:\n\n```ts\nnew glue.Catalog(this, 'MyCatalog', {\n catalogName: 'my-catalog',\n description: 'my catalog description',\n});\n```\n\n### Encryption at rest\n\nConfigure Data Catalog encryption at rest through the `encryptionAtRest` option\n(on `Catalog.encryptAccount` or the `Catalog` constructor).\nIt accepts a `DataCatalogEncryptionAtRest` describing the mode:\n\n```ts\ndeclare const key: kms.Key;\n\n// SSE-KMS with a customer-managed key\nglue.Catalog.encryptAccount(this, {\n encryptionAtRest: glue.DataCatalogEncryptionAtRest.kms(key),\n});\n\n// SSE-KMS with an AWS-managed key (omit the key)\nnew glue.Catalog(this, 'ManagedKeyCatalog', {\n catalogName: 'managed-key-catalog',\n encryptionAtRest: glue.DataCatalogEncryptionAtRest.kms(),\n});\n\n// Disable encryption at rest\nnew glue.Catalog(this, 'PlaintextCatalog', {\n catalogName: 'plaintext-catalog',\n encryptionAtRest: glue.DataCatalogEncryptionAtRest.disabled(),\n});\n```\n\nWhen you use `SSE-KMS-WITH-SERVICE-ROLE`, AWS Glue accesses the KMS key through a\nservice role you provide. If you pass a customer-managed key, the role is\nautomatically granted the permissions it needs to encrypt and decrypt catalog data:\n\n```ts\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const key: kms.Key;\ndeclare const role: iam.IRole;\nglue.Catalog.encryptAccount(this, {\n encryptionAtRest: glue.DataCatalogEncryptionAtRest.kmsWithServiceRole(role, key),\n});\n```\n\nThe customer-managed key, when configured, is exposed on the catalog as\n`encryptionKey` (and the connection-password key as `connectionPasswordKey`), so\nyou can reference it to grant additional access. It is undefined when encryption is\ndisabled or an AWS-managed key is used.\n\n### Connection password encryption\n\nIndependently from encryption at rest, the Data Catalog can encrypt the passwords\nstored in connection properties. Configure it through the\n`connectionPasswordEncryption` option:\n\n```ts\ndeclare const key: kms.Key;\nglue.Catalog.encryptAccount(this, {\n connectionPasswordEncryption: {\n kmsKey: key,\n // Whether GetConnection/GetConnections return the password encrypted (default: true)\n returnConnectionPasswordEncrypted: true,\n },\n});\n```\n\nThe two encryption blocks are independent: enabling one does not require the other,\nand each may use a different KMS key. The customer-managed key for connection\npasswords is exposed as `connectionPasswordKey`.\n\n### Importing a catalog\n\nYou can import an existing catalog by ARN or by id. An imported catalog is a pure\nidentity handle — it emits no resources and does not manage the catalog's\nencryption:\n\n```ts\nconst byId = glue.Catalog.fromCatalogId(this, 'ById', 'my-catalog-id');\nconst byArn = glue.Catalog.fromCatalogArn(this, 'ByArn', 'arn:aws:glue:us-east-1:123456789012:catalog/my-catalog-id');\n```\n\nTo manage the Data Catalog encryption of a catalog you did not create in this\nstack, add a `CfnDataCatalogEncryptionSettings` resource targeting its id\ndirectly. Do this from exactly one stack: like the account catalog, a catalog has\na single encryption configuration, so two settings resources targeting the same id\nrace to overwrite one another at deploy time. Within a single stack this is caught\nby CloudFormation template validation (E3019, duplicate primary identifiers);\nacross stacks it is not, since each stack synthesizes to its own template.\n\n```ts\nimport { CfnDataCatalogEncryptionSettings } from 'aws-cdk-lib/aws-glue';\n\nnew CfnDataCatalogEncryptionSettings(this, 'Encryption', {\n catalogId: 'my-catalog-id',\n dataCatalogEncryptionSettings: {\n encryptionAtRest: { catalogEncryptionMode: 'SSE-KMS' },\n },\n});\n```\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 databaseName: 'my_database',\n description: 'my_database_description',\n});\n```\n\nBecause a database is a container for tables and their metadata, it is retained\nby default when removed from the stack, to avoid accidental data loss. Set\n`removalPolicy` to `RemovalPolicy.DESTROY` to have it deleted instead:\n\n```ts\nimport { RemovalPolicy } from 'aws-cdk-lib';\n\nnew glue.Database(this, 'MyDatabase', {\n databaseName: 'my_database',\n removalPolicy: RemovalPolicy.DESTROY,\n});\n```\n\n## Table\n\nA Glue table describes a table of data in S3: its structure (column names and types), location of data (S3 objects with a common prefix in a S3 bucket), and format for the files (Json, Avro, Parquet, etc.):\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }, {\n name: 'col2',\n type: glue.Schema.array(glue.Schema.STRING),\n comment: 'col2 is an array of strings' // comment is optional\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\nBy default, a S3 bucket will be created to store the table's data but you can manually pass the `bucket` and `s3Prefix`:\n\n```ts\ndeclare const myBucket: s3.Bucket;\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n bucket: myBucket,\n s3Prefix: 'my-table/',\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\nGlue tables can be configured to contain user-defined properties, to describe the physical storage of table data, through the `storageParameters` property:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n storageParameters: [\n glue.StorageParameter.skipHeaderLineCount(1),\n glue.StorageParameter.compressionType(glue.CompressionType.GZIP),\n glue.StorageParameter.custom('separatorChar', ',')\n ],\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\nGlue tables can also be configured to contain user-defined table properties through the [`parameters`](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html#cfn-glue-table-tableinput-parameters) property:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n parameters: {\n key1: 'val1',\n key2: 'val2',\n },\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n### Partition Keys\n\nTo improve query performance, a table can specify `partitionKeys` on which data is stored and queried separately. For example, you might partition a table by `year` and `month` to optimize queries based on a time window:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.SMALL_INT,\n }, {\n name: 'month',\n type: glue.Schema.SMALL_INT,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n### Partition Indexes\n\nAnother way to improve query performance is to specify partition indexes. If no partition indexes are\npresent on the table, AWS Glue loads all partitions of the table and filters the loaded partitions using\nthe query expression. The query takes more time to run as the number of partitions increase. With an\nindex, the query will try to fetch a subset of the partitions instead of loading all partitions of the\ntable.\n\nThe keys of a partition index must be a subset of the partition keys of the table. You can have a\nmaximum of 3 partition indexes per table. To specify a partition index, you can use the `partitionIndexes`\nproperty:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.SMALL_INT,\n }, {\n name: 'month',\n type: glue.Schema.SMALL_INT,\n }],\n partitionIndexes: [{\n indexName: 'my-index', // optional\n keyNames: ['year'],\n }], // supply up to 3 indexes\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\nAlternatively, you can call the `addPartitionIndex()` function on a table:\n\n```ts\ndeclare const myTable: glue.S3Table;\nmyTable.addPartitionIndex({\n indexName: 'my-index',\n keyNames: ['year'],\n});\n```\n\n### Partition Filtering\n\nIf you have a table with a large number of partitions that grows over time, consider using AWS Glue partition indexing and filtering.\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.SMALL_INT,\n }, {\n name: 'month',\n type: glue.Schema.SMALL_INT,\n }],\n dataFormat: glue.DataFormat.JSON,\n enablePartitionFiltering: true,\n});\n```\n\n### Partition Projection\n\nPartition projection allows Athena to automatically add new partitions as new data arrives, without requiring `ALTER TABLE ADD PARTITION` statements. This improves query performance and reduces management overhead by eliminating the need to manually manage partition metadata.\n\nFor more information, see the [AWS documentation on partition projection](https://docs.aws.amazon.com/athena/latest/ug/partition-projection.html).\n\n#### INTEGER Projection\n\nFor partition keys with sequential numeric values:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'data',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.INTEGER,\n }],\n dataFormat: glue.DataFormat.JSON,\n partitionProjection: {\n year: glue.PartitionProjectionConfiguration.integer({\n min: 2020,\n max: 2023,\n interval: 1, // optional, defaults to 1\n digits: 4, // optional, pads with leading zeros\n }),\n },\n});\n```\n\n#### DATE Projection\n\nFor partition keys with date or timestamp values. Supports both fixed dates and relative dates using `NOW`:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'data',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'date',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n partitionProjection: {\n date: glue.PartitionProjectionConfiguration.date({\n min: '2020-01-01',\n max: '2023-12-31',\n format: 'yyyy-MM-dd',\n interval: 1, // optional, defaults to 1\n intervalUnit: glue.DateIntervalUnit.DAYS, // optional: YEARS, MONTHS, WEEKS, DAYS, HOURS, MINUTES, SECONDS\n }),\n },\n});\n```\n\nYou can also use relative dates with `NOW`:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'data',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'date',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n partitionProjection: {\n date: glue.PartitionProjectionConfiguration.date({\n min: 'NOW-3YEARS',\n max: 'NOW',\n format: 'yyyy-MM-dd',\n }),\n },\n});\n```\n\n#### ENUM Projection\n\nFor partition keys with a known set of values:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'data',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'region',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n partitionProjection: {\n region: glue.PartitionProjectionConfiguration.enum({\n values: ['us-east-1', 'us-west-2', 'eu-west-1'],\n }),\n },\n});\n```\n\n#### INJECTED Projection\n\nFor custom partition values injected at query time:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'data',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'custom',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n partitionProjection: {\n custom: glue.PartitionProjectionConfiguration.injected(),\n },\n});\n```\n\n#### Multiple Partition Projections\n\nYou can configure partition projection for multiple partition keys:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'data',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [\n {\n name: 'year',\n type: glue.Schema.INTEGER,\n },\n {\n name: 'month',\n type: glue.Schema.INTEGER,\n },\n {\n name: 'region',\n type: glue.Schema.STRING,\n },\n ],\n dataFormat: glue.DataFormat.JSON,\n partitionProjection: {\n year: glue.PartitionProjectionConfiguration.integer({\n min: 2020,\n max: 2023,\n }),\n month: glue.PartitionProjectionConfiguration.integer({\n min: 1,\n max: 12,\n digits: 2,\n }),\n region: glue.PartitionProjectionConfiguration.enum({\n values: ['us-east-1', 'us-west-2'],\n }),\n },\n});\n```\n\n### Glue Connections\n\nGlue connections allow external data connections to third party databases and data warehouses. However, these connections can also be assigned to Glue Tables, allowing you to query external data sources using the Glue Data Catalog.\n\nWhereas `S3Table` will point to (and if needed, create) a bucket to store the tables' data, `ExternalTable` will point to an existing table in a data source. For example, to create a table in Glue that points to a table in Redshift:\n\n```ts\ndeclare const myConnection: glue.Connection;\ndeclare const myDatabase: glue.Database;\nnew glue.ExternalTable(this, 'MyTable', {\n connection: myConnection,\n externalDataLocation: 'default_db_public_example', // A table in Redshift\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n## Data Quality Ruleset\n\nA `DataQualityRuleset` defines a set of data quality rules — authored in Glue's\nData Quality Definition Language (DQDL) — that are evaluated against a table in\nthe Data Catalog.\n\n```ts\nnew glue.DataQualityRuleset(this, 'MyRuleset', {\n rulesetName: 'my_ruleset',\n dqdl: glue.Dqdl.fromString('Rules = [ RowCount > 100, IsComplete \"order_id\" ]'),\n targetTable: new glue.DataQualityTargetTable('my_database', 'my_table'),\n});\n```\n\nBuild the DQDL document with `Dqdl.fromString(...)`. Glue parses and validates the\nDQDL when the ruleset is deployed; see the\n[DQDL reference](https://docs.aws.amazon.com/glue/latest/dg/dqdl.html) for the\nfull rule syntax.\n\n## [Encryption](https://docs.aws.amazon.com/athena/latest/ug/encryption.html)\n\nWhen the table creates its own S3 bucket (i.e. you do not pass an explicit `bucket`), that bucket enforces SSL: a bucket policy denies any request made over plain HTTP. If you provide your own bucket, enabling `enforceSSL` on it is your responsibility.\n\nYou can enable encryption on a Table's data:\n\n* [S3Managed](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html) - (default) Server side encryption (`SSE-S3`) with an Amazon S3-managed key.\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n encryption: glue.TableEncryption.S3_MANAGED,\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n* [Kms](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html) - Server-side encryption (`SSE-KMS`) with an AWS KMS Key managed by the account owner.\n\n```ts\ndeclare const myDatabase: glue.Database;\n// KMS key is created automatically\nnew glue.S3Table(this, 'MyTable', {\n encryption: glue.TableEncryption.KMS,\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n\n// with an explicit KMS key\nnew glue.S3Table(this, 'MyTable', {\n encryption: glue.TableEncryption.KMS,\n encryptionKey: new kms.Key(this, 'MyKey'),\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n* [KmsManaged](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html) - Server-side encryption (`SSE-KMS`), like `Kms`, except with an AWS KMS Key managed by the AWS Key Management Service.\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n encryption: glue.TableEncryption.KMS_MANAGED,\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n* [ClientSideKms](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html#client-side-encryption-kms-managed-master-key-intro) - Client-side encryption (`CSE-KMS`) with an AWS KMS Key managed by the account owner.\n\n```ts\ndeclare const myDatabase: glue.Database;\n// KMS key is created automatically\nnew glue.S3Table(this, 'MyTable', {\n encryption: glue.TableEncryption.CLIENT_SIDE_KMS,\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n\n// with an explicit KMS key\nnew glue.S3Table(this, 'MyTable', {\n encryption: glue.TableEncryption.CLIENT_SIDE_KMS,\n encryptionKey: new kms.Key(this, 'MyKey'),\n // ...\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\n*Note: you cannot provide a `Bucket` when creating the `S3Table` if you wish to use server-side encryption (`KMS`, `KMS_MANAGED` or `S3_MANAGED`)*.\n\n### Marking table data as encrypted\n\nBoth `S3Table` and `ExternalTable` set the `has_encrypted_data` table parameter, which\nAthena reads when querying client-side (`CSE-KMS`) encrypted datasets. It defaults to `true`.\nSet `hasEncryptedData` to `false` when the underlying data is not encrypted:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n hasEncryptedData: false,\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n});\n```\n\nDo not set `has_encrypted_data` through the free-form `parameters` map as well - a value\nthere that conflicts with `hasEncryptedData` is rejected at synthesis time.\n\n## Types\n\nA table's schema is a collection of columns, each of which have a `name` and a `type`. Types are recursive structures, consisting of primitive and complex types:\n\n```ts\ndeclare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n columns: [{\n name: 'primitive_column',\n type: glue.Schema.STRING,\n }, {\n name: 'array_column',\n type: glue.Schema.array(glue.Schema.INTEGER),\n comment: 'array<integer>',\n }, {\n name: 'map_column',\n type: glue.Schema.map(\n glue.Schema.STRING,\n glue.Schema.TIMESTAMP),\n comment: 'map<string,timestamp>',\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## Public FAQ\n\n### What are we launching today?\n\nWe’re launching new features to an AWS CDK Glue L2 Construct to provide\nbest-practice defaults and convenience methods to create Glue Jobs, Connections,\nTriggers, Workflows, and the underlying permissions and configuration.\n\n### Why should I use this Construct?\n\nDevelopers should use this Construct to reduce the amount of boilerplate\ncode and complexity each individual has to navigate, and make it easier to\ncreate best-practice Glue resources.\n\n### What’s not in scope?\n\nGlue Crawlers and other resources that are now managed by the AWS LakeFormation\nteam are not in scope for this effort. Developers should use existing methods\nto create these resources, and the new Glue L2 construct assumes they already\nexist as inputs. While best practice is for application and infrastructure code\nto be as close as possible for teams using fully-implemented DevOps mechanisms,\nin practice these ETL scripts are likely managed by a data science team who\nknow Python or Scala and don’t necessarily own or manage their own\ninfrastructure deployments. We want to meet developers where they are, and not\nassume that all of the code resides in the same repository, Developers can\nautomate this themselves via the CDK, however, if they do own both.\n\nValidating Glue version and feature use per AWS region at synth time is also\nnot in scope. AWS’ intention is for all features to eventually be propagated to\nall Global regions, so the complexity involved in creating and updating region-\nspecific configuration to match shifting feature sets does not out-weigh the\nlikelihood that a developer will use this construct to deploy resources to a\nregion without a particular new feature to a region that doesn’t yet support\nit without researching or manually attempting to use that feature before\ndeveloping it via IaC. The developer will, of course, still get feedback from\nthe underlying Glue APIs as CloudFormation deploys the resources similar to the\ncurrent CDK L1 Glue experience.\n"
9413
9413
  },
9414
9414
  "repository": {
9415
9415
  "directory": "packages/@aws-cdk/aws-glue-alpha",
@@ -10358,97 +10358,63 @@
10358
10358
  },
10359
10359
  "@aws-cdk/aws-glue-alpha.CloudWatchEncryption": {
10360
10360
  "assembly": "@aws-cdk/aws-glue-alpha",
10361
- "datatype": true,
10362
10361
  "docs": {
10362
+ "remarks": "CloudWatch Logs support only server-side encryption with a KMS key.",
10363
10363
  "stability": "experimental",
10364
- "summary": "CloudWatch Logs encryption configuration.",
10365
- "example": "new 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});",
10364
+ "summary": "CloudWatch Logs encryption configuration for a `SecurityConfiguration`.",
10365
+ "example": "new glue.SecurityConfiguration(this, 'MySecurityConfiguration', {\n cloudWatchEncryption: glue.CloudWatchEncryption.kms(),\n jobBookmarksEncryption: glue.JobBookmarksEncryption.clientSideKms(),\n s3Encryption: glue.S3Encryption.kms(),\n});",
10366
10366
  "custom": {
10367
10367
  "exampleMetadata": "infused"
10368
10368
  }
10369
10369
  },
10370
10370
  "fqn": "@aws-cdk/aws-glue-alpha.CloudWatchEncryption",
10371
- "kind": "interface",
10371
+ "kind": "class",
10372
10372
  "locationInModule": {
10373
10373
  "filename": "lib/security-configuration.ts",
10374
- "line": 86
10374
+ "line": 89
10375
10375
  },
10376
- "name": "CloudWatchEncryption",
10377
- "properties": [
10376
+ "methods": [
10378
10377
  {
10379
- "abstract": true,
10380
10378
  "docs": {
10381
10379
  "stability": "experimental",
10382
- "summary": "Encryption mode."
10380
+ "summary": "Server-side encryption (SSE) with an AWS KMS key managed by the account owner."
10383
10381
  },
10384
- "immutable": true,
10385
10382
  "locationInModule": {
10386
10383
  "filename": "lib/security-configuration.ts",
10387
- "line": 90
10388
- },
10389
- "name": "mode",
10390
- "type": {
10391
- "fqn": "@aws-cdk/aws-glue-alpha.CloudWatchEncryptionMode"
10392
- }
10393
- },
10394
- {
10395
- "abstract": true,
10396
- "docs": {
10397
- "default": "A key will be created if one is not provided.",
10398
- "stability": "experimental",
10399
- "summary": "The KMS key to be used to encrypt the data."
10384
+ "line": 95
10400
10385
  },
10401
- "immutable": true,
10402
- "locationInModule": {
10403
- "filename": "lib/security-configuration.ts",
10404
- "line": 96
10386
+ "name": "kms",
10387
+ "parameters": [
10388
+ {
10389
+ "docs": {
10390
+ "remarks": "A key is created if one is not provided.",
10391
+ "summary": "the KMS key used to encrypt the data."
10392
+ },
10393
+ "name": "kmsKey",
10394
+ "optional": true,
10395
+ "type": {
10396
+ "fqn": "aws-cdk-lib.interfaces.aws_kms.IKeyRef"
10397
+ }
10398
+ }
10399
+ ],
10400
+ "returns": {
10401
+ "type": {
10402
+ "fqn": "@aws-cdk/aws-glue-alpha.CloudWatchEncryption"
10403
+ }
10405
10404
  },
10406
- "name": "kmsKey",
10407
- "optional": true,
10408
- "type": {
10409
- "fqn": "aws-cdk-lib.interfaces.aws_kms.IKeyRef"
10410
- }
10405
+ "static": true
10411
10406
  }
10412
10407
  ],
10408
+ "name": "CloudWatchEncryption",
10413
10409
  "symbolId": "lib/security-configuration:CloudWatchEncryption"
10414
10410
  },
10415
- "@aws-cdk/aws-glue-alpha.CloudWatchEncryptionMode": {
10416
- "assembly": "@aws-cdk/aws-glue-alpha",
10417
- "docs": {
10418
- "see": "https://docs.aws.amazon.com/glue/latest/webapi/API_CloudWatchEncryption.html#Glue-Type-CloudWatchEncryption-CloudWatchEncryptionMode",
10419
- "stability": "experimental",
10420
- "summary": "Encryption mode for CloudWatch Logs.",
10421
- "example": "new 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});",
10422
- "custom": {
10423
- "exampleMetadata": "infused"
10424
- }
10425
- },
10426
- "fqn": "@aws-cdk/aws-glue-alpha.CloudWatchEncryptionMode",
10427
- "kind": "enum",
10428
- "locationInModule": {
10429
- "filename": "lib/security-configuration.ts",
10430
- "line": 45
10431
- },
10432
- "members": [
10433
- {
10434
- "docs": {
10435
- "see": "https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html",
10436
- "stability": "experimental",
10437
- "summary": "Server-side encryption (SSE) with an AWS KMS key managed by the account owner."
10438
- },
10439
- "name": "KMS"
10440
- }
10441
- ],
10442
- "name": "CloudWatchEncryptionMode",
10443
- "symbolId": "lib/security-configuration:CloudWatchEncryptionMode"
10444
- },
10445
10411
  "@aws-cdk/aws-glue-alpha.Code": {
10446
10412
  "abstract": true,
10447
10413
  "assembly": "@aws-cdk/aws-glue-alpha",
10448
10414
  "docs": {
10449
10415
  "stability": "experimental",
10450
10416
  "summary": "Represents a Glue Job's Code assets (an asset can be a scripts, a jar, a python file or any other file).",
10451
- "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\n\n// Disable both metrics for cost optimization\nnew glue.PySparkEtlJob(stack, 'CostOptimizedJob', {\n role,\n script,\n enableMetrics: false,\n enableObservabilityMetrics: false,\n});\n\n// Selective control - keep observability, disable profiling\nnew glue.PySparkEtlJob(stack, 'SelectiveJob', {\n role,\n script,\n enableMetrics: false,\n // enableObservabilityMetrics defaults to true\n});",
10417
+ "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\n\n// Create a job to run from the workflow\nconst job = new glue.PySparkEtlJob(stack, 'Job', { role, script });\n\n// Create a workflow and add a trigger that runs the job\nconst workflow = new glue.Workflow(stack, 'Workflow');\nworkflow.addOnDemandTrigger('OnDemandTrigger', {\n actions: [{ job }],\n});",
10452
10418
  "custom": {
10453
10419
  "exampleMetadata": "infused"
10454
10420
  }
@@ -10962,7 +10928,7 @@
10962
10928
  "docs": {
10963
10929
  "stability": "experimental",
10964
10930
  "summary": "An AWS Glue connection to a data source.",
10965
- "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkEtlJob(stack, 'PySparkETLJob', {\n jobName: 'PySparkETLJobCustomName',\n description: 'This is a description',\n role,\n script,\n glueVersion: glue.GlueVersion.V5_1,\n continuousLogging: { enabled: false },\n workerType: glue.WorkerType.G_2X,\n maxConcurrentRuns: 100,\n timeout: cdk.Duration.hours(2),\n connections: [glue.Connection.fromConnectionName(stack, 'Connection', 'connectionName')],\n securityConfiguration: glue.SecurityConfiguration.fromSecurityConfigurationName(stack, 'SecurityConfig', 'securityConfigName'),\n tags: {\n FirstTagName: 'FirstTagValue',\n SecondTagName: 'SecondTagValue',\n XTagName: 'XTagValue',\n },\n numberOfWorkers: 2,\n maxRetries: 2,\n});",
10931
+ "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkEtlJob(stack, 'PySparkETLJob', {\n jobName: 'PySparkETLJobCustomName',\n description: 'This is a description',\n role,\n script,\n glueVersion: glue.GlueVersion.V5_1,\n continuousLogging: { enabled: false },\n workerConfiguration: {\n workerType: glue.WorkerType.G_2X,\n numberOfWorkers: 2,\n },\n maxConcurrentRuns: 100,\n timeout: cdk.Duration.hours(2),\n connections: [glue.Connection.fromConnectionName(stack, 'Connection', 'connectionName')],\n securityConfiguration: glue.SecurityConfiguration.fromSecurityConfigurationName(stack, 'SecurityConfig', 'securityConfigName'),\n tags: {\n FirstTagName: 'FirstTagValue',\n SecondTagName: 'SecondTagValue',\n XTagName: 'XTagValue',\n },\n maxRetries: 2,\n});",
10966
10932
  "custom": {
10967
10933
  "exampleMetadata": "infused"
10968
10934
  }
@@ -10974,7 +10940,7 @@
10974
10940
  },
10975
10941
  "locationInModule": {
10976
10942
  "filename": "lib/connection.ts",
10977
- "line": 358
10943
+ "line": 359
10978
10944
  },
10979
10945
  "parameters": [
10980
10946
  {
@@ -11003,7 +10969,7 @@
11003
10969
  "kind": "class",
11004
10970
  "locationInModule": {
11005
10971
  "filename": "lib/connection.ts",
11006
- "line": 310
10972
+ "line": 311
11007
10973
  },
11008
10974
  "methods": [
11009
10975
  {
@@ -11013,7 +10979,7 @@
11013
10979
  },
11014
10980
  "locationInModule": {
11015
10981
  "filename": "lib/connection.ts",
11016
- "line": 322
10982
+ "line": 323
11017
10983
  },
11018
10984
  "name": "fromConnectionArn",
11019
10985
  "parameters": [
@@ -11059,7 +11025,7 @@
11059
11025
  },
11060
11026
  "locationInModule": {
11061
11027
  "filename": "lib/connection.ts",
11062
- "line": 338
11028
+ "line": 339
11063
11029
  },
11064
11030
  "name": "fromConnectionName",
11065
11031
  "parameters": [
@@ -11105,7 +11071,7 @@
11105
11071
  },
11106
11072
  "locationInModule": {
11107
11073
  "filename": "lib/connection.ts",
11108
- "line": 407
11074
+ "line": 420
11109
11075
  },
11110
11076
  "name": "addProperty",
11111
11077
  "parameters": [
@@ -11141,7 +11107,7 @@
11141
11107
  "immutable": true,
11142
11108
  "locationInModule": {
11143
11109
  "filename": "lib/connection.ts",
11144
- "line": 313
11110
+ "line": 314
11145
11111
  },
11146
11112
  "name": "PROPERTY_INJECTION_ID",
11147
11113
  "static": true,
@@ -11157,7 +11123,7 @@
11157
11123
  "immutable": true,
11158
11124
  "locationInModule": {
11159
11125
  "filename": "lib/connection.ts",
11160
- "line": 397
11126
+ "line": 410
11161
11127
  },
11162
11128
  "name": "connectionArn",
11163
11129
  "overrides": "@aws-cdk/aws-glue-alpha.IConnection",
@@ -11173,7 +11139,7 @@
11173
11139
  "immutable": true,
11174
11140
  "locationInModule": {
11175
11141
  "filename": "lib/connection.ts",
11176
- "line": 389
11142
+ "line": 402
11177
11143
  },
11178
11144
  "name": "connectionName",
11179
11145
  "overrides": "@aws-cdk/aws-glue-alpha.IConnection",
@@ -11199,7 +11165,7 @@
11199
11165
  "kind": "interface",
11200
11166
  "locationInModule": {
11201
11167
  "filename": "lib/connection.ts",
11202
- "line": 257
11168
+ "line": 258
11203
11169
  },
11204
11170
  "name": "ConnectionOptions",
11205
11171
  "properties": [
@@ -11213,7 +11179,7 @@
11213
11179
  "immutable": true,
11214
11180
  "locationInModule": {
11215
11181
  "filename": "lib/connection.ts",
11216
- "line": 262
11182
+ "line": 263
11217
11183
  },
11218
11184
  "name": "connectionName",
11219
11185
  "optional": true,
@@ -11231,7 +11197,7 @@
11231
11197
  "immutable": true,
11232
11198
  "locationInModule": {
11233
11199
  "filename": "lib/connection.ts",
11234
- "line": 268
11200
+ "line": 269
11235
11201
  },
11236
11202
  "name": "description",
11237
11203
  "optional": true,
@@ -11250,7 +11216,7 @@
11250
11216
  "immutable": true,
11251
11217
  "locationInModule": {
11252
11218
  "filename": "lib/connection.ts",
11253
- "line": 282
11219
+ "line": 283
11254
11220
  },
11255
11221
  "name": "matchCriteria",
11256
11222
  "optional": true,
@@ -11274,7 +11240,7 @@
11274
11240
  "immutable": true,
11275
11241
  "locationInModule": {
11276
11242
  "filename": "lib/connection.ts",
11277
- "line": 275
11243
+ "line": 276
11278
11244
  },
11279
11245
  "name": "properties",
11280
11246
  "optional": true,
@@ -11297,7 +11263,7 @@
11297
11263
  "immutable": true,
11298
11264
  "locationInModule": {
11299
11265
  "filename": "lib/connection.ts",
11300
- "line": 288
11266
+ "line": 289
11301
11267
  },
11302
11268
  "name": "securityGroups",
11303
11269
  "optional": true,
@@ -11321,7 +11287,7 @@
11321
11287
  "immutable": true,
11322
11288
  "locationInModule": {
11323
11289
  "filename": "lib/connection.ts",
11324
- "line": 294
11290
+ "line": 295
11325
11291
  },
11326
11292
  "name": "subnet",
11327
11293
  "optional": true,
@@ -11411,7 +11377,7 @@
11411
11377
  "kind": "interface",
11412
11378
  "locationInModule": {
11413
11379
  "filename": "lib/connection.ts",
11414
- "line": 300
11380
+ "line": 301
11415
11381
  },
11416
11382
  "name": "ConnectionProps",
11417
11383
  "properties": [
@@ -11424,7 +11390,7 @@
11424
11390
  "immutable": true,
11425
11391
  "locationInModule": {
11426
11392
  "filename": "lib/connection.ts",
11427
- "line": 304
11393
+ "line": 305
11428
11394
  },
11429
11395
  "name": "type",
11430
11396
  "type": {
@@ -11453,7 +11419,7 @@
11453
11419
  },
11454
11420
  "locationInModule": {
11455
11421
  "filename": "lib/connection.ts",
11456
- "line": 225
11422
+ "line": 226
11457
11423
  },
11458
11424
  "parameters": [
11459
11425
  {
@@ -11467,7 +11433,7 @@
11467
11433
  "kind": "class",
11468
11434
  "locationInModule": {
11469
11435
  "filename": "lib/connection.ts",
11470
- "line": 17
11436
+ "line": 18
11471
11437
  },
11472
11438
  "methods": [
11473
11439
  {
@@ -11477,7 +11443,7 @@
11477
11443
  },
11478
11444
  "locationInModule": {
11479
11445
  "filename": "lib/connection.ts",
11480
- "line": 232
11446
+ "line": 233
11481
11447
  },
11482
11448
  "name": "toString",
11483
11449
  "returns": {
@@ -11498,7 +11464,7 @@
11498
11464
  "immutable": true,
11499
11465
  "locationInModule": {
11500
11466
  "filename": "lib/connection.ts",
11501
- "line": 173
11467
+ "line": 174
11502
11468
  },
11503
11469
  "name": "AZURECOSMOS",
11504
11470
  "static": true,
@@ -11515,7 +11481,7 @@
11515
11481
  "immutable": true,
11516
11482
  "locationInModule": {
11517
11483
  "filename": "lib/connection.ts",
11518
- "line": 168
11484
+ "line": 169
11519
11485
  },
11520
11486
  "name": "AZURESQL",
11521
11487
  "static": true,
@@ -11532,7 +11498,7 @@
11532
11498
  "immutable": true,
11533
11499
  "locationInModule": {
11534
11500
  "filename": "lib/connection.ts",
11535
- "line": 163
11501
+ "line": 164
11536
11502
  },
11537
11503
  "name": "BIGQUERY",
11538
11504
  "static": true,
@@ -11549,7 +11515,7 @@
11549
11515
  "immutable": true,
11550
11516
  "locationInModule": {
11551
11517
  "filename": "lib/connection.ts",
11552
- "line": 58
11518
+ "line": 59
11553
11519
  },
11554
11520
  "name": "CUSTOM",
11555
11521
  "static": true,
@@ -11566,7 +11532,7 @@
11566
11532
  "immutable": true,
11567
11533
  "locationInModule": {
11568
11534
  "filename": "lib/connection.ts",
11569
- "line": 218
11535
+ "line": 219
11570
11536
  },
11571
11537
  "name": "DYNAMODB",
11572
11538
  "static": true,
@@ -11583,7 +11549,7 @@
11583
11549
  "immutable": true,
11584
11550
  "locationInModule": {
11585
11551
  "filename": "lib/connection.ts",
11586
- "line": 63
11552
+ "line": 64
11587
11553
  },
11588
11554
  "name": "FACEBOOKADS",
11589
11555
  "static": true,
@@ -11600,7 +11566,7 @@
11600
11566
  "immutable": true,
11601
11567
  "locationInModule": {
11602
11568
  "filename": "lib/connection.ts",
11603
- "line": 68
11569
+ "line": 69
11604
11570
  },
11605
11571
  "name": "GOOGLEADS",
11606
11572
  "static": true,
@@ -11617,7 +11583,7 @@
11617
11583
  "immutable": true,
11618
11584
  "locationInModule": {
11619
11585
  "filename": "lib/connection.ts",
11620
- "line": 78
11586
+ "line": 79
11621
11587
  },
11622
11588
  "name": "GOOGLEANALYTICS4",
11623
11589
  "static": true,
@@ -11634,7 +11600,7 @@
11634
11600
  "immutable": true,
11635
11601
  "locationInModule": {
11636
11602
  "filename": "lib/connection.ts",
11637
- "line": 73
11603
+ "line": 74
11638
11604
  },
11639
11605
  "name": "GOOGLESHEETS",
11640
11606
  "static": true,
@@ -11651,7 +11617,7 @@
11651
11617
  "immutable": true,
11652
11618
  "locationInModule": {
11653
11619
  "filename": "lib/connection.ts",
11654
- "line": 83
11620
+ "line": 84
11655
11621
  },
11656
11622
  "name": "HUBSPOT",
11657
11623
  "static": true,
@@ -11668,7 +11634,7 @@
11668
11634
  "immutable": true,
11669
11635
  "locationInModule": {
11670
11636
  "filename": "lib/connection.ts",
11671
- "line": 88
11637
+ "line": 89
11672
11638
  },
11673
11639
  "name": "INSTAGRAMADS",
11674
11640
  "static": true,
@@ -11685,7 +11651,7 @@
11685
11651
  "immutable": true,
11686
11652
  "locationInModule": {
11687
11653
  "filename": "lib/connection.ts",
11688
- "line": 93
11654
+ "line": 94
11689
11655
  },
11690
11656
  "name": "INTERCOM",
11691
11657
  "static": true,
@@ -11702,7 +11668,7 @@
11702
11668
  "immutable": true,
11703
11669
  "locationInModule": {
11704
11670
  "filename": "lib/connection.ts",
11705
- "line": 21
11671
+ "line": 22
11706
11672
  },
11707
11673
  "name": "JDBC",
11708
11674
  "static": true,
@@ -11719,7 +11685,7 @@
11719
11685
  "immutable": true,
11720
11686
  "locationInModule": {
11721
11687
  "filename": "lib/connection.ts",
11722
- "line": 98
11688
+ "line": 99
11723
11689
  },
11724
11690
  "name": "JIRACLOUD",
11725
11691
  "static": true,
@@ -11736,7 +11702,7 @@
11736
11702
  "immutable": true,
11737
11703
  "locationInModule": {
11738
11704
  "filename": "lib/connection.ts",
11739
- "line": 26
11705
+ "line": 27
11740
11706
  },
11741
11707
  "name": "KAFKA",
11742
11708
  "static": true,
@@ -11753,7 +11719,7 @@
11753
11719
  "immutable": true,
11754
11720
  "locationInModule": {
11755
11721
  "filename": "lib/connection.ts",
11756
- "line": 103
11722
+ "line": 104
11757
11723
  },
11758
11724
  "name": "MARKETO",
11759
11725
  "static": true,
@@ -11770,7 +11736,7 @@
11770
11736
  "immutable": true,
11771
11737
  "locationInModule": {
11772
11738
  "filename": "lib/connection.ts",
11773
- "line": 52
11739
+ "line": 53
11774
11740
  },
11775
11741
  "name": "MARKETPLACE",
11776
11742
  "static": true,
@@ -11787,7 +11753,7 @@
11787
11753
  "immutable": true,
11788
11754
  "locationInModule": {
11789
11755
  "filename": "lib/connection.ts",
11790
- "line": 31
11756
+ "line": 32
11791
11757
  },
11792
11758
  "name": "MONGODB",
11793
11759
  "static": true,
@@ -11804,7 +11770,7 @@
11804
11770
  "immutable": true,
11805
11771
  "locationInModule": {
11806
11772
  "filename": "lib/connection.ts",
11807
- "line": 183
11773
+ "line": 184
11808
11774
  },
11809
11775
  "name": "MYSQL",
11810
11776
  "static": true,
@@ -11821,7 +11787,7 @@
11821
11787
  "immutable": true,
11822
11788
  "locationInModule": {
11823
11789
  "filename": "lib/connection.ts",
11824
- "line": 108
11790
+ "line": 109
11825
11791
  },
11826
11792
  "name": "NETSUITEERP",
11827
11793
  "static": true,
@@ -11838,7 +11804,7 @@
11838
11804
  "immutable": true,
11839
11805
  "locationInModule": {
11840
11806
  "filename": "lib/connection.ts",
11841
- "line": 46
11807
+ "line": 47
11842
11808
  },
11843
11809
  "name": "NETWORK",
11844
11810
  "static": true,
@@ -11855,7 +11821,7 @@
11855
11821
  "immutable": true,
11856
11822
  "locationInModule": {
11857
11823
  "filename": "lib/connection.ts",
11858
- "line": 178
11824
+ "line": 179
11859
11825
  },
11860
11826
  "name": "OPENSEARCH",
11861
11827
  "static": true,
@@ -11872,7 +11838,7 @@
11872
11838
  "immutable": true,
11873
11839
  "locationInModule": {
11874
11840
  "filename": "lib/connection.ts",
11875
- "line": 193
11841
+ "line": 194
11876
11842
  },
11877
11843
  "name": "ORACLE",
11878
11844
  "static": true,
@@ -11889,7 +11855,7 @@
11889
11855
  "immutable": true,
11890
11856
  "locationInModule": {
11891
11857
  "filename": "lib/connection.ts",
11892
- "line": 188
11858
+ "line": 189
11893
11859
  },
11894
11860
  "name": "POSTGRESQL",
11895
11861
  "static": true,
@@ -11906,7 +11872,7 @@
11906
11872
  "immutable": true,
11907
11873
  "locationInModule": {
11908
11874
  "filename": "lib/connection.ts",
11909
- "line": 113
11875
+ "line": 114
11910
11876
  },
11911
11877
  "name": "SALESFORCE",
11912
11878
  "static": true,
@@ -11923,7 +11889,7 @@
11923
11889
  "immutable": true,
11924
11890
  "locationInModule": {
11925
11891
  "filename": "lib/connection.ts",
11926
- "line": 118
11892
+ "line": 119
11927
11893
  },
11928
11894
  "name": "SALESFORCEMARKETINGCLOUD",
11929
11895
  "static": true,
@@ -11940,7 +11906,7 @@
11940
11906
  "immutable": true,
11941
11907
  "locationInModule": {
11942
11908
  "filename": "lib/connection.ts",
11943
- "line": 123
11909
+ "line": 124
11944
11910
  },
11945
11911
  "name": "SALESFORCEPARDOT",
11946
11912
  "static": true,
@@ -11957,7 +11923,7 @@
11957
11923
  "immutable": true,
11958
11924
  "locationInModule": {
11959
11925
  "filename": "lib/connection.ts",
11960
- "line": 203
11926
+ "line": 204
11961
11927
  },
11962
11928
  "name": "SAPHANA",
11963
11929
  "static": true,
@@ -11974,7 +11940,7 @@
11974
11940
  "immutable": true,
11975
11941
  "locationInModule": {
11976
11942
  "filename": "lib/connection.ts",
11977
- "line": 128
11943
+ "line": 129
11978
11944
  },
11979
11945
  "name": "SAPODATA",
11980
11946
  "static": true,
@@ -11991,7 +11957,7 @@
11991
11957
  "immutable": true,
11992
11958
  "locationInModule": {
11993
11959
  "filename": "lib/connection.ts",
11994
- "line": 133
11960
+ "line": 134
11995
11961
  },
11996
11962
  "name": "SERVICENOW",
11997
11963
  "static": true,
@@ -12008,7 +11974,7 @@
12008
11974
  "immutable": true,
12009
11975
  "locationInModule": {
12010
11976
  "filename": "lib/connection.ts",
12011
- "line": 138
11977
+ "line": 139
12012
11978
  },
12013
11979
  "name": "SLACK",
12014
11980
  "static": true,
@@ -12025,7 +11991,7 @@
12025
11991
  "immutable": true,
12026
11992
  "locationInModule": {
12027
11993
  "filename": "lib/connection.ts",
12028
- "line": 143
11994
+ "line": 144
12029
11995
  },
12030
11996
  "name": "SNAPCHATADS",
12031
11997
  "static": true,
@@ -12042,7 +12008,7 @@
12042
12008
  "immutable": true,
12043
12009
  "locationInModule": {
12044
12010
  "filename": "lib/connection.ts",
12045
- "line": 198
12011
+ "line": 199
12046
12012
  },
12047
12013
  "name": "SQLSERVER",
12048
12014
  "static": true,
@@ -12059,7 +12025,7 @@
12059
12025
  "immutable": true,
12060
12026
  "locationInModule": {
12061
12027
  "filename": "lib/connection.ts",
12062
- "line": 148
12028
+ "line": 149
12063
12029
  },
12064
12030
  "name": "STRIPE",
12065
12031
  "static": true,
@@ -12076,7 +12042,7 @@
12076
12042
  "immutable": true,
12077
12043
  "locationInModule": {
12078
12044
  "filename": "lib/connection.ts",
12079
- "line": 208
12045
+ "line": 209
12080
12046
  },
12081
12047
  "name": "TERADATA",
12082
12048
  "static": true,
@@ -12093,7 +12059,7 @@
12093
12059
  "immutable": true,
12094
12060
  "locationInModule": {
12095
12061
  "filename": "lib/connection.ts",
12096
- "line": 213
12062
+ "line": 214
12097
12063
  },
12098
12064
  "name": "VERTICA",
12099
12065
  "static": true,
@@ -12110,7 +12076,7 @@
12110
12076
  "immutable": true,
12111
12077
  "locationInModule": {
12112
12078
  "filename": "lib/connection.ts",
12113
- "line": 41
12079
+ "line": 42
12114
12080
  },
12115
12081
  "name": "VIEW_VALIDATION_ATHENA",
12116
12082
  "static": true,
@@ -12127,7 +12093,7 @@
12127
12093
  "immutable": true,
12128
12094
  "locationInModule": {
12129
12095
  "filename": "lib/connection.ts",
12130
- "line": 36
12096
+ "line": 37
12131
12097
  },
12132
12098
  "name": "VIEW_VALIDATION_REDSHIFT",
12133
12099
  "static": true,
@@ -12144,7 +12110,7 @@
12144
12110
  "immutable": true,
12145
12111
  "locationInModule": {
12146
12112
  "filename": "lib/connection.ts",
12147
- "line": 153
12113
+ "line": 154
12148
12114
  },
12149
12115
  "name": "ZENDESK",
12150
12116
  "static": true,
@@ -12161,7 +12127,7 @@
12161
12127
  "immutable": true,
12162
12128
  "locationInModule": {
12163
12129
  "filename": "lib/connection.ts",
12164
- "line": 158
12130
+ "line": 159
12165
12131
  },
12166
12132
  "name": "ZOHOCRM",
12167
12133
  "static": true,
@@ -12177,7 +12143,7 @@
12177
12143
  "immutable": true,
12178
12144
  "locationInModule": {
12179
12145
  "filename": "lib/connection.ts",
12180
- "line": 223
12146
+ "line": 224
12181
12147
  },
12182
12148
  "name": "name",
12183
12149
  "type": {
@@ -12194,7 +12160,7 @@
12194
12160
  "see": "https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html",
12195
12161
  "stability": "experimental",
12196
12162
  "summary": "Properties for enabling Continuous Logging for Glue Jobs.",
12197
- "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkEtlJob(stack, 'PySparkETLJob', {\n jobName: 'PySparkETLJobCustomName',\n description: 'This is a description',\n role,\n script,\n glueVersion: glue.GlueVersion.V5_1,\n continuousLogging: { enabled: false },\n workerType: glue.WorkerType.G_2X,\n maxConcurrentRuns: 100,\n timeout: cdk.Duration.hours(2),\n connections: [glue.Connection.fromConnectionName(stack, 'Connection', 'connectionName')],\n securityConfiguration: glue.SecurityConfiguration.fromSecurityConfigurationName(stack, 'SecurityConfig', 'securityConfigName'),\n tags: {\n FirstTagName: 'FirstTagValue',\n SecondTagName: 'SecondTagValue',\n XTagName: 'XTagValue',\n },\n numberOfWorkers: 2,\n maxRetries: 2,\n});",
12163
+ "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkEtlJob(stack, 'PySparkETLJob', {\n jobName: 'PySparkETLJobCustomName',\n description: 'This is a description',\n role,\n script,\n glueVersion: glue.GlueVersion.V5_1,\n continuousLogging: { enabled: false },\n workerConfiguration: {\n workerType: glue.WorkerType.G_2X,\n numberOfWorkers: 2,\n },\n maxConcurrentRuns: 100,\n timeout: cdk.Duration.hours(2),\n connections: [glue.Connection.fromConnectionName(stack, 'Connection', 'connectionName')],\n securityConfiguration: glue.SecurityConfiguration.fromSecurityConfigurationName(stack, 'SecurityConfig', 'securityConfigName'),\n tags: {\n FirstTagName: 'FirstTagValue',\n SecondTagName: 'SecondTagValue',\n XTagName: 'XTagValue',\n },\n maxRetries: 2,\n});",
12198
12164
  "custom": {
12199
12165
  "exampleMetadata": "infused"
12200
12166
  }
@@ -12203,7 +12169,7 @@
12203
12169
  "kind": "interface",
12204
12170
  "locationInModule": {
12205
12171
  "filename": "lib/jobs/job.ts",
12206
- "line": 91
12172
+ "line": 92
12207
12173
  },
12208
12174
  "name": "ContinuousLoggingProps",
12209
12175
  "properties": [
@@ -12216,7 +12182,7 @@
12216
12182
  "immutable": true,
12217
12183
  "locationInModule": {
12218
12184
  "filename": "lib/jobs/job.ts",
12219
- "line": 95
12185
+ "line": 96
12220
12186
  },
12221
12187
  "name": "enabled",
12222
12188
  "type": {
@@ -12234,7 +12200,7 @@
12234
12200
  "immutable": true,
12235
12201
  "locationInModule": {
12236
12202
  "filename": "lib/jobs/job.ts",
12237
- "line": 125
12203
+ "line": 126
12238
12204
  },
12239
12205
  "name": "conversionPattern",
12240
12206
  "optional": true,
@@ -12252,7 +12218,7 @@
12252
12218
  "immutable": true,
12253
12219
  "locationInModule": {
12254
12220
  "filename": "lib/jobs/job.ts",
12255
- "line": 102
12221
+ "line": 103
12256
12222
  },
12257
12223
  "name": "logGroup",
12258
12224
  "optional": true,
@@ -12270,7 +12236,7 @@
12270
12236
  "immutable": true,
12271
12237
  "locationInModule": {
12272
12238
  "filename": "lib/jobs/job.ts",
12273
- "line": 109
12239
+ "line": 110
12274
12240
  },
12275
12241
  "name": "logStreamPrefix",
12276
12242
  "optional": true,
@@ -12288,7 +12254,7 @@
12288
12254
  "immutable": true,
12289
12255
  "locationInModule": {
12290
12256
  "filename": "lib/jobs/job.ts",
12291
- "line": 116
12257
+ "line": 117
12292
12258
  },
12293
12259
  "name": "quiet",
12294
12260
  "optional": true,
@@ -12606,7 +12572,7 @@
12606
12572
  "docs": {
12607
12573
  "stability": "experimental",
12608
12574
  "summary": "Defines the input/output formats and ser/de for a single DataFormat.",
12609
- "example": "declare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'data',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'date',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n partitionProjection: {\n date: glue.PartitionProjectionConfiguration.date({\n min: '2020-01-01',\n max: '2023-12-31',\n format: 'yyyy-MM-dd',\n interval: 1, // optional, defaults to 1\n intervalUnit: glue.DateIntervalUnit.DAYS, // optional: YEARS, MONTHS, WEEKS, DAYS, HOURS, MINUTES, SECONDS\n }),\n },\n});",
12575
+ "example": "declare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'data',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'date',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n partitionProjection: {\n date: glue.PartitionProjectionConfiguration.date({\n min: 'NOW-3YEARS',\n max: 'NOW',\n format: 'yyyy-MM-dd',\n }),\n },\n});",
12610
12576
  "custom": {
12611
12577
  "exampleMetadata": "infused"
12612
12578
  }
@@ -12958,9 +12924,9 @@
12958
12924
  "docs": {
12959
12925
  "stability": "experimental",
12960
12926
  "summary": "A Glue Data Quality ruleset.",
12961
- "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as glue_alpha from '@aws-cdk/aws-glue-alpha';\n\ndeclare const dataQualityTargetTable: glue_alpha.DataQualityTargetTable;\nconst dataQualityRuleset = new glue_alpha.DataQualityRuleset(this, 'MyDataQualityRuleset', {\n rulesetDqdl: 'rulesetDqdl',\n targetTable: dataQualityTargetTable,\n\n // the properties below are optional\n clientToken: 'clientToken',\n description: 'description',\n rulesetName: 'rulesetName',\n tags: {\n tagsKey: 'tags',\n },\n});",
12927
+ "example": "new glue.DataQualityRuleset(this, 'MyRuleset', {\n rulesetName: 'my_ruleset',\n dqdl: glue.Dqdl.fromString('Rules = [ RowCount > 100, IsComplete \"order_id\" ]'),\n targetTable: new glue.DataQualityTargetTable('my_database', 'my_table'),\n});",
12962
12928
  "custom": {
12963
- "exampleMetadata": "fixture=_generated"
12929
+ "exampleMetadata": "infused"
12964
12930
  }
12965
12931
  },
12966
12932
  "fqn": "@aws-cdk/aws-glue-alpha.DataQualityRuleset",
@@ -12970,7 +12936,7 @@
12970
12936
  },
12971
12937
  "locationInModule": {
12972
12938
  "filename": "lib/data-quality-ruleset.ts",
12973
- "line": 121
12939
+ "line": 159
12974
12940
  },
12975
12941
  "parameters": [
12976
12942
  {
@@ -12999,7 +12965,7 @@
12999
12965
  "kind": "class",
13000
12966
  "locationInModule": {
13001
12967
  "filename": "lib/data-quality-ruleset.ts",
13002
- "line": 88
12968
+ "line": 126
13003
12969
  },
13004
12970
  "methods": [
13005
12971
  {
@@ -13008,7 +12974,7 @@
13008
12974
  },
13009
12975
  "locationInModule": {
13010
12976
  "filename": "lib/data-quality-ruleset.ts",
13011
- "line": 93
12977
+ "line": 131
13012
12978
  },
13013
12979
  "name": "fromRulesetArn",
13014
12980
  "parameters": [
@@ -13044,7 +13010,7 @@
13044
13010
  },
13045
13011
  "locationInModule": {
13046
13012
  "filename": "lib/data-quality-ruleset.ts",
13047
- "line": 102
13013
+ "line": 140
13048
13014
  },
13049
13015
  "name": "fromRulesetName",
13050
13016
  "parameters": [
@@ -13086,7 +13052,7 @@
13086
13052
  "immutable": true,
13087
13053
  "locationInModule": {
13088
13054
  "filename": "lib/data-quality-ruleset.ts",
13089
- "line": 91
13055
+ "line": 129
13090
13056
  },
13091
13057
  "name": "PROPERTY_INJECTION_ID",
13092
13058
  "static": true,
@@ -13102,7 +13068,7 @@
13102
13068
  "immutable": true,
13103
13069
  "locationInModule": {
13104
13070
  "filename": "lib/data-quality-ruleset.ts",
13105
- "line": 149
13071
+ "line": 189
13106
13072
  },
13107
13073
  "name": "rulesetArn",
13108
13074
  "overrides": "@aws-cdk/aws-glue-alpha.IDataQualityRuleset",
@@ -13118,7 +13084,7 @@
13118
13084
  "immutable": true,
13119
13085
  "locationInModule": {
13120
13086
  "filename": "lib/data-quality-ruleset.ts",
13121
- "line": 141
13087
+ "line": 181
13122
13088
  },
13123
13089
  "name": "rulesetName",
13124
13090
  "overrides": "@aws-cdk/aws-glue-alpha.IDataQualityRuleset",
@@ -13135,36 +13101,34 @@
13135
13101
  "docs": {
13136
13102
  "stability": "experimental",
13137
13103
  "summary": "Construction properties for `DataQualityRuleset`.",
13138
- "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as glue_alpha from '@aws-cdk/aws-glue-alpha';\n\ndeclare const dataQualityTargetTable: glue_alpha.DataQualityTargetTable;\nconst dataQualityRulesetProps: glue_alpha.DataQualityRulesetProps = {\n rulesetDqdl: 'rulesetDqdl',\n targetTable: dataQualityTargetTable,\n\n // the properties below are optional\n clientToken: 'clientToken',\n description: 'description',\n rulesetName: 'rulesetName',\n tags: {\n tagsKey: 'tags',\n },\n};",
13104
+ "example": "new glue.DataQualityRuleset(this, 'MyRuleset', {\n rulesetName: 'my_ruleset',\n dqdl: glue.Dqdl.fromString('Rules = [ RowCount > 100, IsComplete \"order_id\" ]'),\n targetTable: new glue.DataQualityTargetTable('my_database', 'my_table'),\n});",
13139
13105
  "custom": {
13140
- "exampleMetadata": "fixture=_generated"
13106
+ "exampleMetadata": "infused"
13141
13107
  }
13142
13108
  },
13143
13109
  "fqn": "@aws-cdk/aws-glue-alpha.DataQualityRulesetProps",
13144
13110
  "kind": "interface",
13145
13111
  "locationInModule": {
13146
13112
  "filename": "lib/data-quality-ruleset.ts",
13147
- "line": 47
13113
+ "line": 77
13148
13114
  },
13149
13115
  "name": "DataQualityRulesetProps",
13150
13116
  "properties": [
13151
13117
  {
13152
13118
  "abstract": true,
13153
13119
  "docs": {
13154
- "custom": {
13155
- "attribute": "true"
13156
- },
13120
+ "remarks": "Build it with `Dqdl.fromString(...)`.",
13157
13121
  "stability": "experimental",
13158
- "summary": "The dqdl of the ruleset."
13122
+ "summary": "The DQDL document defining the ruleset's data quality rules."
13159
13123
  },
13160
13124
  "immutable": true,
13161
13125
  "locationInModule": {
13162
13126
  "filename": "lib/data-quality-ruleset.ts",
13163
- "line": 70
13127
+ "line": 101
13164
13128
  },
13165
- "name": "rulesetDqdl",
13129
+ "name": "dqdl",
13166
13130
  "type": {
13167
- "primitive": "string"
13131
+ "fqn": "@aws-cdk/aws-glue-alpha.Dqdl"
13168
13132
  }
13169
13133
  },
13170
13134
  {
@@ -13179,7 +13143,7 @@
13179
13143
  "immutable": true,
13180
13144
  "locationInModule": {
13181
13145
  "filename": "lib/data-quality-ruleset.ts",
13182
- "line": 82
13146
+ "line": 113
13183
13147
  },
13184
13148
  "name": "targetTable",
13185
13149
  "type": {
@@ -13198,7 +13162,7 @@
13198
13162
  "immutable": true,
13199
13163
  "locationInModule": {
13200
13164
  "filename": "lib/data-quality-ruleset.ts",
13201
- "line": 58
13165
+ "line": 88
13202
13166
  },
13203
13167
  "name": "clientToken",
13204
13168
  "optional": true,
@@ -13218,7 +13182,7 @@
13218
13182
  "immutable": true,
13219
13183
  "locationInModule": {
13220
13184
  "filename": "lib/data-quality-ruleset.ts",
13221
- "line": 64
13185
+ "line": 94
13222
13186
  },
13223
13187
  "name": "description",
13224
13188
  "optional": true,
@@ -13226,6 +13190,24 @@
13226
13190
  "primitive": "string"
13227
13191
  }
13228
13192
  },
13193
+ {
13194
+ "abstract": true,
13195
+ "docs": {
13196
+ "default": "- resource will be destroyed",
13197
+ "stability": "experimental",
13198
+ "summary": "Policy to apply when the ruleset is removed from the stack."
13199
+ },
13200
+ "immutable": true,
13201
+ "locationInModule": {
13202
+ "filename": "lib/data-quality-ruleset.ts",
13203
+ "line": 120
13204
+ },
13205
+ "name": "removalPolicy",
13206
+ "optional": true,
13207
+ "type": {
13208
+ "fqn": "aws-cdk-lib.RemovalPolicy"
13209
+ }
13210
+ },
13229
13211
  {
13230
13212
  "abstract": true,
13231
13213
  "docs": {
@@ -13236,7 +13218,7 @@
13236
13218
  "immutable": true,
13237
13219
  "locationInModule": {
13238
13220
  "filename": "lib/data-quality-ruleset.ts",
13239
- "line": 52
13221
+ "line": 82
13240
13222
  },
13241
13223
  "name": "rulesetName",
13242
13224
  "optional": true,
@@ -13254,7 +13236,7 @@
13254
13236
  "immutable": true,
13255
13237
  "locationInModule": {
13256
13238
  "filename": "lib/data-quality-ruleset.ts",
13257
- "line": 76
13239
+ "line": 107
13258
13240
  },
13259
13241
  "name": "tags",
13260
13242
  "optional": true,
@@ -13275,9 +13257,9 @@
13275
13257
  "docs": {
13276
13258
  "stability": "experimental",
13277
13259
  "summary": "Properties of a DataQualityTargetTable.",
13278
- "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as glue_alpha from '@aws-cdk/aws-glue-alpha';\nconst dataQualityTargetTable = new glue_alpha.DataQualityTargetTable('databaseName', 'tableName');",
13260
+ "example": "new glue.DataQualityRuleset(this, 'MyRuleset', {\n rulesetName: 'my_ruleset',\n dqdl: glue.Dqdl.fromString('Rules = [ RowCount > 100, IsComplete \"order_id\" ]'),\n targetTable: new glue.DataQualityTargetTable('my_database', 'my_table'),\n});",
13279
13261
  "custom": {
13280
- "exampleMetadata": "fixture=_generated"
13262
+ "exampleMetadata": "infused"
13281
13263
  }
13282
13264
  },
13283
13265
  "fqn": "@aws-cdk/aws-glue-alpha.DataQualityTargetTable",
@@ -13350,7 +13332,7 @@
13350
13332
  "docs": {
13351
13333
  "stability": "experimental",
13352
13334
  "summary": "A Glue database.",
13353
- "example": "import * as cdk from 'aws-cdk-lib';\nimport { S3Table, Database, DataFormat, Schema } from '@aws-cdk/aws-glue-alpha';\nimport { CfnDataLakeSettings, CfnTag, CfnTagAssociation } from 'aws-cdk-lib/aws-lakeformation';\n\ndeclare const stack: cdk.Stack;\ndeclare const accountId: string;\n\nconst tagKey = 'aws';\nconst tagValues = ['dev'];\n\nconst database = new Database(this, 'Database');\n\nconst table = new S3Table(this, 'Table', {\n database,\n columns: [\n {\n name: 'col1',\n type: Schema.STRING,\n },\n {\n name: 'col2',\n type: Schema.STRING,\n }\n ],\n dataFormat: DataFormat.CSV,\n});\n\nconst synthesizer = stack.synthesizer as cdk.DefaultStackSynthesizer;\nnew CfnDataLakeSettings(this, 'DataLakeSettings', {\n admins: [\n {\n dataLakePrincipalIdentifier: stack.formatArn({\n service: 'iam',\n resource: 'role',\n region: '',\n account: accountId,\n resourceName: 'Admin',\n }),\n },\n {\n // The CDK cloudformation execution role.\n dataLakePrincipalIdentifier: synthesizer.cloudFormationExecutionRoleArn.replace('${AWS::Partition}', 'aws'),\n },\n ],\n});\n\nconst tag = new CfnTag(this, 'Tag', {\n catalogId: accountId,\n tagKey,\n tagValues,\n});\n\nconst lfTagPairProperty: CfnTagAssociation.LFTagPairProperty = {\n catalogId: accountId,\n tagKey,\n tagValues,\n};\n\nconst tagAssociation = new CfnTagAssociation(this, 'TagAssociation', {\n lfTags: [lfTagPairProperty],\n resource: {\n tableWithColumns: {\n databaseName: database.databaseName,\n columnNames: ['col1', 'col2'],\n catalogId: accountId,\n name: table.tableName,\n }\n }\n});\n\ntagAssociation.node.addDependency(tag);\ntagAssociation.node.addDependency(table);",
13335
+ "example": "import { RemovalPolicy } from 'aws-cdk-lib';\n\nnew glue.Database(this, 'MyDatabase', {\n databaseName: 'my_database',\n removalPolicy: RemovalPolicy.DESTROY,\n});",
13354
13336
  "custom": {
13355
13337
  "exampleMetadata": "infused"
13356
13338
  }
@@ -13362,7 +13344,7 @@
13362
13344
  },
13363
13345
  "locationInModule": {
13364
13346
  "filename": "lib/database.ts",
13365
- "line": 99
13347
+ "line": 109
13366
13348
  },
13367
13349
  "parameters": [
13368
13350
  {
@@ -13392,7 +13374,7 @@
13392
13374
  "kind": "class",
13393
13375
  "locationInModule": {
13394
13376
  "filename": "lib/database.ts",
13395
- "line": 67
13377
+ "line": 77
13396
13378
  },
13397
13379
  "methods": [
13398
13380
  {
@@ -13401,7 +13383,7 @@
13401
13383
  },
13402
13384
  "locationInModule": {
13403
13385
  "filename": "lib/database.ts",
13404
- "line": 72
13386
+ "line": 82
13405
13387
  },
13406
13388
  "name": "fromDatabaseArn",
13407
13389
  "parameters": [
@@ -13443,7 +13425,7 @@
13443
13425
  "immutable": true,
13444
13426
  "locationInModule": {
13445
13427
  "filename": "lib/database.ts",
13446
- "line": 70
13428
+ "line": 80
13447
13429
  },
13448
13430
  "name": "PROPERTY_INJECTION_ID",
13449
13431
  "static": true,
@@ -13460,7 +13442,7 @@
13460
13442
  "immutable": true,
13461
13443
  "locationInModule": {
13462
13444
  "filename": "lib/database.ts",
13463
- "line": 145
13445
+ "line": 159
13464
13446
  },
13465
13447
  "name": "catalog",
13466
13448
  "overrides": "@aws-cdk/aws-glue-alpha.IDatabase",
@@ -13476,7 +13458,7 @@
13476
13458
  "immutable": true,
13477
13459
  "locationInModule": {
13478
13460
  "filename": "lib/database.ts",
13479
- "line": 155
13461
+ "line": 169
13480
13462
  },
13481
13463
  "name": "databaseArn",
13482
13464
  "overrides": "@aws-cdk/aws-glue-alpha.IDatabase",
@@ -13492,7 +13474,7 @@
13492
13474
  "immutable": true,
13493
13475
  "locationInModule": {
13494
13476
  "filename": "lib/database.ts",
13495
- "line": 150
13477
+ "line": 164
13496
13478
  },
13497
13479
  "name": "databaseName",
13498
13480
  "overrides": "@aws-cdk/aws-glue-alpha.IDatabase",
@@ -13505,9 +13487,10 @@
13505
13487
  "stability": "experimental",
13506
13488
  "summary": "Location URI of this database."
13507
13489
  },
13490
+ "immutable": true,
13508
13491
  "locationInModule": {
13509
13492
  "filename": "lib/database.ts",
13510
- "line": 93
13493
+ "line": 103
13511
13494
  },
13512
13495
  "name": "locationUri",
13513
13496
  "optional": true,
@@ -13608,6 +13591,25 @@
13608
13591
  "type": {
13609
13592
  "primitive": "string"
13610
13593
  }
13594
+ },
13595
+ {
13596
+ "abstract": true,
13597
+ "docs": {
13598
+ "default": "RemovalPolicy.RETAIN",
13599
+ "remarks": "A database is a container for tables and their metadata, so it is retained\nby default to avoid accidental data loss when it is removed from a stack.",
13600
+ "stability": "experimental",
13601
+ "summary": "Policy to apply when the database is removed from the stack."
13602
+ },
13603
+ "immutable": true,
13604
+ "locationInModule": {
13605
+ "filename": "lib/database.ts",
13606
+ "line": 71
13607
+ },
13608
+ "name": "removalPolicy",
13609
+ "optional": true,
13610
+ "type": {
13611
+ "fqn": "aws-cdk-lib.RemovalPolicy"
13612
+ }
13611
13613
  }
13612
13614
  ],
13613
13615
  "symbolId": "lib/database:DatabaseProps"
@@ -13796,6 +13798,57 @@
13796
13798
  ],
13797
13799
  "symbolId": "lib/partition-projection:DatePartitionProjectionConfigurationProps"
13798
13800
  },
13801
+ "@aws-cdk/aws-glue-alpha.Dqdl": {
13802
+ "assembly": "@aws-cdk/aws-glue-alpha",
13803
+ "docs": {
13804
+ "remarks": "DQDL is an authored string that Glue parses and validates at deploy time. Build\none from a raw DQDL string with {@link Dqdl.fromString}.",
13805
+ "see": "https://docs.aws.amazon.com/glue/latest/dg/dqdl.html",
13806
+ "stability": "experimental",
13807
+ "summary": "The Data Quality Definition Language (DQDL) document for a `DataQualityRuleset`.",
13808
+ "example": "new glue.DataQualityRuleset(this, 'MyRuleset', {\n rulesetName: 'my_ruleset',\n dqdl: glue.Dqdl.fromString('Rules = [ RowCount > 100, IsComplete \"order_id\" ]'),\n targetTable: new glue.DataQualityTargetTable('my_database', 'my_table'),\n});",
13809
+ "custom": {
13810
+ "exampleMetadata": "infused"
13811
+ }
13812
+ },
13813
+ "fqn": "@aws-cdk/aws-glue-alpha.Dqdl",
13814
+ "kind": "class",
13815
+ "locationInModule": {
13816
+ "filename": "lib/data-quality-ruleset.ts",
13817
+ "line": 38
13818
+ },
13819
+ "methods": [
13820
+ {
13821
+ "docs": {
13822
+ "stability": "experimental",
13823
+ "summary": "Create a `Dqdl` from a raw DQDL string."
13824
+ },
13825
+ "locationInModule": {
13826
+ "filename": "lib/data-quality-ruleset.ts",
13827
+ "line": 44
13828
+ },
13829
+ "name": "fromString",
13830
+ "parameters": [
13831
+ {
13832
+ "docs": {
13833
+ "summary": "the DQDL document, e.g. `Rules = [ RowCount > 100 ]`."
13834
+ },
13835
+ "name": "dqdl",
13836
+ "type": {
13837
+ "primitive": "string"
13838
+ }
13839
+ }
13840
+ ],
13841
+ "returns": {
13842
+ "type": {
13843
+ "fqn": "@aws-cdk/aws-glue-alpha.Dqdl"
13844
+ }
13845
+ },
13846
+ "static": true
13847
+ }
13848
+ ],
13849
+ "name": "Dqdl",
13850
+ "symbolId": "lib/data-quality-ruleset:Dqdl"
13851
+ },
13799
13852
  "@aws-cdk/aws-glue-alpha.EnumPartitionProjectionConfigurationProps": {
13800
13853
  "assembly": "@aws-cdk/aws-glue-alpha",
13801
13854
  "datatype": true,
@@ -13983,7 +14036,7 @@
13983
14036
  },
13984
14037
  "locationInModule": {
13985
14038
  "filename": "lib/external-table.ts",
13986
- "line": 137
14039
+ "line": 139
13987
14040
  },
13988
14041
  "name": "grantRead",
13989
14042
  "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
@@ -14011,7 +14064,7 @@
14011
14064
  },
14012
14065
  "locationInModule": {
14013
14066
  "filename": "lib/external-table.ts",
14014
- "line": 161
14067
+ "line": 163
14015
14068
  },
14016
14069
  "name": "grantReadWrite",
14017
14070
  "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
@@ -14039,7 +14092,7 @@
14039
14092
  },
14040
14093
  "locationInModule": {
14041
14094
  "filename": "lib/external-table.ts",
14042
- "line": 149
14095
+ "line": 151
14043
14096
  },
14044
14097
  "name": "grantWrite",
14045
14098
  "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
@@ -14103,7 +14156,7 @@
14103
14156
  "immutable": true,
14104
14157
  "locationInModule": {
14105
14158
  "filename": "lib/external-table.ts",
14106
- "line": 122
14159
+ "line": 124
14107
14160
  },
14108
14161
  "name": "tableArn",
14109
14162
  "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
@@ -14119,7 +14172,7 @@
14119
14172
  "immutable": true,
14120
14173
  "locationInModule": {
14121
14174
  "filename": "lib/external-table.ts",
14122
- "line": 114
14175
+ "line": 116
14123
14176
  },
14124
14177
  "name": "tableName",
14125
14178
  "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
@@ -14233,7 +14286,7 @@
14233
14286
  "see": "https://docs.aws.amazon.com/glue/latest/dg/add-job.html.",
14234
14287
  "stability": "experimental",
14235
14288
  "summary": "AWS Glue version determines the versions of Apache Spark and Python that are available to the job.",
14236
- "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkEtlJob(stack, 'PySparkETLJob', {\n jobName: 'PySparkETLJobCustomName',\n description: 'This is a description',\n role,\n script,\n glueVersion: glue.GlueVersion.V5_1,\n continuousLogging: { enabled: false },\n workerType: glue.WorkerType.G_2X,\n maxConcurrentRuns: 100,\n timeout: cdk.Duration.hours(2),\n connections: [glue.Connection.fromConnectionName(stack, 'Connection', 'connectionName')],\n securityConfiguration: glue.SecurityConfiguration.fromSecurityConfigurationName(stack, 'SecurityConfig', 'securityConfigName'),\n tags: {\n FirstTagName: 'FirstTagValue',\n SecondTagName: 'SecondTagValue',\n XTagName: 'XTagValue',\n },\n numberOfWorkers: 2,\n maxRetries: 2,\n});",
14289
+ "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkEtlJob(stack, 'PySparkETLJob', {\n jobName: 'PySparkETLJobCustomName',\n description: 'This is a description',\n role,\n script,\n glueVersion: glue.GlueVersion.V5_1,\n continuousLogging: { enabled: false },\n workerConfiguration: {\n workerType: glue.WorkerType.G_2X,\n numberOfWorkers: 2,\n },\n maxConcurrentRuns: 100,\n timeout: cdk.Duration.hours(2),\n connections: [glue.Connection.fromConnectionName(stack, 'Connection', 'connectionName')],\n securityConfiguration: glue.SecurityConfiguration.fromSecurityConfigurationName(stack, 'SecurityConfig', 'securityConfigName'),\n tags: {\n FirstTagName: 'FirstTagValue',\n SecondTagName: 'SecondTagValue',\n XTagName: 'XTagValue',\n },\n maxRetries: 2,\n});",
14237
14290
  "custom": {
14238
14291
  "exampleMetadata": "infused"
14239
14292
  }
@@ -14406,7 +14459,7 @@
14406
14459
  "kind": "interface",
14407
14460
  "locationInModule": {
14408
14461
  "filename": "lib/connection.ts",
14409
- "line": 240
14462
+ "line": 241
14410
14463
  },
14411
14464
  "name": "IConnection",
14412
14465
  "properties": [
@@ -14422,7 +14475,7 @@
14422
14475
  "immutable": true,
14423
14476
  "locationInModule": {
14424
14477
  "filename": "lib/connection.ts",
14425
- "line": 251
14478
+ "line": 252
14426
14479
  },
14427
14480
  "name": "connectionArn",
14428
14481
  "type": {
@@ -14441,7 +14494,7 @@
14441
14494
  "immutable": true,
14442
14495
  "locationInModule": {
14443
14496
  "filename": "lib/connection.ts",
14444
- "line": 245
14497
+ "line": 246
14445
14498
  },
14446
14499
  "name": "connectionName",
14447
14500
  "type": {
@@ -14463,7 +14516,7 @@
14463
14516
  "kind": "interface",
14464
14517
  "locationInModule": {
14465
14518
  "filename": "lib/data-quality-ruleset.ts",
14466
- "line": 30
14519
+ "line": 60
14467
14520
  },
14468
14521
  "name": "IDataQualityRuleset",
14469
14522
  "properties": [
@@ -14479,7 +14532,7 @@
14479
14532
  "immutable": true,
14480
14533
  "locationInModule": {
14481
14534
  "filename": "lib/data-quality-ruleset.ts",
14482
- "line": 35
14535
+ "line": 65
14483
14536
  },
14484
14537
  "name": "rulesetArn",
14485
14538
  "type": {
@@ -14498,7 +14551,7 @@
14498
14551
  "immutable": true,
14499
14552
  "locationInModule": {
14500
14553
  "filename": "lib/data-quality-ruleset.ts",
14501
- "line": 41
14554
+ "line": 71
14502
14555
  },
14503
14556
  "name": "rulesetName",
14504
14557
  "type": {
@@ -14595,7 +14648,7 @@
14595
14648
  "kind": "interface",
14596
14649
  "locationInModule": {
14597
14650
  "filename": "lib/jobs/job.ts",
14598
- "line": 17
14651
+ "line": 18
14599
14652
  },
14600
14653
  "methods": [
14601
14654
  {
@@ -14607,7 +14660,7 @@
14607
14660
  },
14608
14661
  "locationInModule": {
14609
14662
  "filename": "lib/jobs/job.ts",
14610
- "line": 67
14663
+ "line": 68
14611
14664
  },
14612
14665
  "name": "metric",
14613
14666
  "parameters": [
@@ -14654,7 +14707,7 @@
14654
14707
  },
14655
14708
  "locationInModule": {
14656
14709
  "filename": "lib/jobs/job.ts",
14657
- "line": 77
14710
+ "line": 78
14658
14711
  },
14659
14712
  "name": "metricFailure",
14660
14713
  "parameters": [
@@ -14680,7 +14733,7 @@
14680
14733
  },
14681
14734
  "locationInModule": {
14682
14735
  "filename": "lib/jobs/job.ts",
14683
- "line": 72
14736
+ "line": 73
14684
14737
  },
14685
14738
  "name": "metricSuccess",
14686
14739
  "parameters": [
@@ -14706,7 +14759,7 @@
14706
14759
  },
14707
14760
  "locationInModule": {
14708
14761
  "filename": "lib/jobs/job.ts",
14709
- "line": 82
14762
+ "line": 83
14710
14763
  },
14711
14764
  "name": "metricTimeout",
14712
14765
  "parameters": [
@@ -14733,7 +14786,7 @@
14733
14786
  },
14734
14787
  "locationInModule": {
14735
14788
  "filename": "lib/jobs/job.ts",
14736
- "line": 35
14789
+ "line": 36
14737
14790
  },
14738
14791
  "name": "onEvent",
14739
14792
  "parameters": [
@@ -14766,7 +14819,7 @@
14766
14819
  },
14767
14820
  "locationInModule": {
14768
14821
  "filename": "lib/jobs/job.ts",
14769
- "line": 49
14822
+ "line": 50
14770
14823
  },
14771
14824
  "name": "onFailure",
14772
14825
  "parameters": [
@@ -14799,7 +14852,7 @@
14799
14852
  },
14800
14853
  "locationInModule": {
14801
14854
  "filename": "lib/jobs/job.ts",
14802
- "line": 42
14855
+ "line": 43
14803
14856
  },
14804
14857
  "name": "onSuccess",
14805
14858
  "parameters": [
@@ -14832,7 +14885,7 @@
14832
14885
  },
14833
14886
  "locationInModule": {
14834
14887
  "filename": "lib/jobs/job.ts",
14835
- "line": 56
14888
+ "line": 57
14836
14889
  },
14837
14890
  "name": "onTimeout",
14838
14891
  "parameters": [
@@ -14871,7 +14924,7 @@
14871
14924
  "immutable": true,
14872
14925
  "locationInModule": {
14873
14926
  "filename": "lib/jobs/job.ts",
14874
- "line": 28
14927
+ "line": 29
14875
14928
  },
14876
14929
  "name": "jobArn",
14877
14930
  "type": {
@@ -14890,7 +14943,7 @@
14890
14943
  "immutable": true,
14891
14944
  "locationInModule": {
14892
14945
  "filename": "lib/jobs/job.ts",
14893
- "line": 22
14946
+ "line": 23
14894
14947
  },
14895
14948
  "name": "jobName",
14896
14949
  "type": {
@@ -15513,7 +15566,7 @@
15513
15566
  "kind": "class",
15514
15567
  "locationInModule": {
15515
15568
  "filename": "lib/jobs/job.ts",
15516
- "line": 459
15569
+ "line": 439
15517
15570
  },
15518
15571
  "methods": [
15519
15572
  {
@@ -15523,7 +15576,7 @@
15523
15576
  },
15524
15577
  "locationInModule": {
15525
15578
  "filename": "lib/jobs/job.ts",
15526
- "line": 468
15579
+ "line": 448
15527
15580
  },
15528
15581
  "name": "fromJobAttributes",
15529
15582
  "parameters": [
@@ -15570,7 +15623,7 @@
15570
15623
  },
15571
15624
  "locationInModule": {
15572
15625
  "filename": "lib/jobs/job.ts",
15573
- "line": 488
15626
+ "line": 468
15574
15627
  },
15575
15628
  "name": "checkNoReservedArgs",
15576
15629
  "parameters": [
@@ -15606,7 +15659,7 @@
15606
15659
  },
15607
15660
  "locationInModule": {
15608
15661
  "filename": "lib/jobs/job.ts",
15609
- "line": 538
15662
+ "line": 524
15610
15663
  },
15611
15664
  "name": "codeS3ObjectUrl",
15612
15665
  "parameters": [
@@ -15632,7 +15685,7 @@
15632
15685
  },
15633
15686
  "locationInModule": {
15634
15687
  "filename": "lib/jobs/job.ts",
15635
- "line": 506
15688
+ "line": 492
15636
15689
  },
15637
15690
  "name": "setupContinuousLogging",
15638
15691
  "parameters": [
@@ -15675,7 +15728,7 @@
15675
15728
  "immutable": true,
15676
15729
  "locationInModule": {
15677
15730
  "filename": "lib/jobs/job.ts",
15678
- "line": 481
15731
+ "line": 461
15679
15732
  },
15680
15733
  "name": "role",
15681
15734
  "type": {
@@ -15701,7 +15754,7 @@
15701
15754
  "kind": "interface",
15702
15755
  "locationInModule": {
15703
15756
  "filename": "lib/jobs/job.ts",
15704
- "line": 290
15757
+ "line": 291
15705
15758
  },
15706
15759
  "name": "JobAttributes",
15707
15760
  "properties": [
@@ -15714,7 +15767,7 @@
15714
15767
  "immutable": true,
15715
15768
  "locationInModule": {
15716
15769
  "filename": "lib/jobs/job.ts",
15717
- "line": 294
15770
+ "line": 295
15718
15771
  },
15719
15772
  "name": "jobName",
15720
15773
  "type": {
@@ -15731,7 +15784,7 @@
15731
15784
  "immutable": true,
15732
15785
  "locationInModule": {
15733
15786
  "filename": "lib/jobs/job.ts",
15734
- "line": 301
15787
+ "line": 302
15735
15788
  },
15736
15789
  "name": "role",
15737
15790
  "optional": true,
@@ -15788,7 +15841,7 @@
15788
15841
  "kind": "class",
15789
15842
  "locationInModule": {
15790
15843
  "filename": "lib/jobs/job.ts",
15791
- "line": 135
15844
+ "line": 136
15792
15845
  },
15793
15846
  "methods": [
15794
15847
  {
@@ -15798,7 +15851,7 @@
15798
15851
  },
15799
15852
  "locationInModule": {
15800
15853
  "filename": "lib/jobs/job.ts",
15801
- "line": 276
15854
+ "line": 277
15802
15855
  },
15803
15856
  "name": "buildJobArn",
15804
15857
  "parameters": [
@@ -15830,7 +15883,7 @@
15830
15883
  },
15831
15884
  "locationInModule": {
15832
15885
  "filename": "lib/jobs/job.ts",
15833
- "line": 223
15886
+ "line": 224
15834
15887
  },
15835
15888
  "name": "metric",
15836
15889
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -15878,7 +15931,7 @@
15878
15931
  },
15879
15932
  "locationInModule": {
15880
15933
  "filename": "lib/jobs/job.ts",
15881
- "line": 250
15934
+ "line": 251
15882
15935
  },
15883
15936
  "name": "metricFailure",
15884
15937
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -15905,7 +15958,7 @@
15905
15958
  },
15906
15959
  "locationInModule": {
15907
15960
  "filename": "lib/jobs/job.ts",
15908
- "line": 241
15961
+ "line": 242
15909
15962
  },
15910
15963
  "name": "metricSuccess",
15911
15964
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -15932,7 +15985,7 @@
15932
15985
  },
15933
15986
  "locationInModule": {
15934
15987
  "filename": "lib/jobs/job.ts",
15935
- "line": 259
15988
+ "line": 260
15936
15989
  },
15937
15990
  "name": "metricTimeout",
15938
15991
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -15959,7 +16012,7 @@
15959
16012
  },
15960
16013
  "locationInModule": {
15961
16014
  "filename": "lib/jobs/job.ts",
15962
- "line": 151
16015
+ "line": 152
15963
16016
  },
15964
16017
  "name": "onEvent",
15965
16018
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -15998,7 +16051,7 @@
15998
16051
  },
15999
16052
  "locationInModule": {
16000
16053
  "filename": "lib/jobs/job.ts",
16001
- "line": 200
16054
+ "line": 201
16002
16055
  },
16003
16056
  "name": "onFailure",
16004
16057
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -16037,7 +16090,7 @@
16037
16090
  },
16038
16091
  "locationInModule": {
16039
16092
  "filename": "lib/jobs/job.ts",
16040
- "line": 171
16093
+ "line": 172
16041
16094
  },
16042
16095
  "name": "onStateChange",
16043
16096
  "parameters": [
@@ -16084,7 +16137,7 @@
16084
16137
  },
16085
16138
  "locationInModule": {
16086
16139
  "filename": "lib/jobs/job.ts",
16087
- "line": 190
16140
+ "line": 191
16088
16141
  },
16089
16142
  "name": "onSuccess",
16090
16143
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -16123,7 +16176,7 @@
16123
16176
  },
16124
16177
  "locationInModule": {
16125
16178
  "filename": "lib/jobs/job.ts",
16126
- "line": 210
16179
+ "line": 211
16127
16180
  },
16128
16181
  "name": "onTimeout",
16129
16182
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -16167,7 +16220,7 @@
16167
16220
  "immutable": true,
16168
16221
  "locationInModule": {
16169
16222
  "filename": "lib/jobs/job.ts",
16170
- "line": 138
16223
+ "line": 139
16171
16224
  },
16172
16225
  "name": "grantPrincipal",
16173
16226
  "overrides": "aws-cdk-lib.aws_iam.IGrantable",
@@ -16184,7 +16237,7 @@
16184
16237
  "immutable": true,
16185
16238
  "locationInModule": {
16186
16239
  "filename": "lib/jobs/job.ts",
16187
- "line": 136
16240
+ "line": 137
16188
16241
  },
16189
16242
  "name": "jobArn",
16190
16243
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -16201,7 +16254,7 @@
16201
16254
  "immutable": true,
16202
16255
  "locationInModule": {
16203
16256
  "filename": "lib/jobs/job.ts",
16204
- "line": 137
16257
+ "line": 138
16205
16258
  },
16206
16259
  "name": "jobName",
16207
16260
  "overrides": "@aws-cdk/aws-glue-alpha.IJob",
@@ -16214,90 +16267,57 @@
16214
16267
  },
16215
16268
  "@aws-cdk/aws-glue-alpha.JobBookmarksEncryption": {
16216
16269
  "assembly": "@aws-cdk/aws-glue-alpha",
16217
- "datatype": true,
16218
16270
  "docs": {
16271
+ "remarks": "Job bookmarks support only client-side encryption with a KMS key.",
16219
16272
  "stability": "experimental",
16220
- "summary": "Job bookmarks encryption configuration.",
16221
- "example": "new 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});",
16273
+ "summary": "Job bookmarks encryption configuration for a `SecurityConfiguration`.",
16274
+ "example": "new glue.SecurityConfiguration(this, 'MySecurityConfiguration', {\n cloudWatchEncryption: glue.CloudWatchEncryption.kms(),\n jobBookmarksEncryption: glue.JobBookmarksEncryption.clientSideKms(),\n s3Encryption: glue.S3Encryption.kms(),\n});",
16222
16275
  "custom": {
16223
16276
  "exampleMetadata": "infused"
16224
16277
  }
16225
16278
  },
16226
16279
  "fqn": "@aws-cdk/aws-glue-alpha.JobBookmarksEncryption",
16227
- "kind": "interface",
16280
+ "kind": "class",
16228
16281
  "locationInModule": {
16229
16282
  "filename": "lib/security-configuration.ts",
16230
- "line": 102
16283
+ "line": 112
16231
16284
  },
16232
- "name": "JobBookmarksEncryption",
16233
- "properties": [
16285
+ "methods": [
16234
16286
  {
16235
- "abstract": true,
16236
16287
  "docs": {
16288
+ "see": "https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html",
16237
16289
  "stability": "experimental",
16238
- "summary": "Encryption mode."
16290
+ "summary": "Client-side encryption (CSE) with an AWS KMS key managed by the account owner."
16239
16291
  },
16240
- "immutable": true,
16241
16292
  "locationInModule": {
16242
16293
  "filename": "lib/security-configuration.ts",
16243
- "line": 106
16244
- },
16245
- "name": "mode",
16246
- "type": {
16247
- "fqn": "@aws-cdk/aws-glue-alpha.JobBookmarksEncryptionMode"
16248
- }
16249
- },
16250
- {
16251
- "abstract": true,
16252
- "docs": {
16253
- "default": "A key will be created if one is not provided.",
16254
- "stability": "experimental",
16255
- "summary": "The KMS key to be used to encrypt the data."
16294
+ "line": 119
16256
16295
  },
16257
- "immutable": true,
16258
- "locationInModule": {
16259
- "filename": "lib/security-configuration.ts",
16260
- "line": 112
16296
+ "name": "clientSideKms",
16297
+ "parameters": [
16298
+ {
16299
+ "docs": {
16300
+ "remarks": "A key is created if one is not provided.",
16301
+ "summary": "the KMS key used to encrypt the data."
16302
+ },
16303
+ "name": "kmsKey",
16304
+ "optional": true,
16305
+ "type": {
16306
+ "fqn": "aws-cdk-lib.interfaces.aws_kms.IKeyRef"
16307
+ }
16308
+ }
16309
+ ],
16310
+ "returns": {
16311
+ "type": {
16312
+ "fqn": "@aws-cdk/aws-glue-alpha.JobBookmarksEncryption"
16313
+ }
16261
16314
  },
16262
- "name": "kmsKey",
16263
- "optional": true,
16264
- "type": {
16265
- "fqn": "aws-cdk-lib.interfaces.aws_kms.IKeyRef"
16266
- }
16315
+ "static": true
16267
16316
  }
16268
16317
  ],
16318
+ "name": "JobBookmarksEncryption",
16269
16319
  "symbolId": "lib/security-configuration:JobBookmarksEncryption"
16270
16320
  },
16271
- "@aws-cdk/aws-glue-alpha.JobBookmarksEncryptionMode": {
16272
- "assembly": "@aws-cdk/aws-glue-alpha",
16273
- "docs": {
16274
- "see": "https://docs.aws.amazon.com/glue/latest/webapi/API_JobBookmarksEncryption.html#Glue-Type-JobBookmarksEncryption-JobBookmarksEncryptionMode",
16275
- "stability": "experimental",
16276
- "summary": "Encryption mode for Job Bookmarks.",
16277
- "example": "new 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});",
16278
- "custom": {
16279
- "exampleMetadata": "infused"
16280
- }
16281
- },
16282
- "fqn": "@aws-cdk/aws-glue-alpha.JobBookmarksEncryptionMode",
16283
- "kind": "enum",
16284
- "locationInModule": {
16285
- "filename": "lib/security-configuration.ts",
16286
- "line": 58
16287
- },
16288
- "members": [
16289
- {
16290
- "docs": {
16291
- "see": "https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html",
16292
- "stability": "experimental",
16293
- "summary": "Client-side encryption (CSE) with an AWS KMS key managed by the account owner."
16294
- },
16295
- "name": "CLIENT_SIDE_KMS"
16296
- }
16297
- ],
16298
- "name": "JobBookmarksEncryptionMode",
16299
- "symbolId": "lib/security-configuration:JobBookmarksEncryptionMode"
16300
- },
16301
16321
  "@aws-cdk/aws-glue-alpha.JobLanguage": {
16302
16322
  "assembly": "@aws-cdk/aws-glue-alpha",
16303
16323
  "docs": {
@@ -16335,7 +16355,7 @@
16335
16355
  "docs": {
16336
16356
  "stability": "experimental",
16337
16357
  "summary": "JobProps will be used to create new Glue Jobs using this L2 Construct.",
16338
- "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';\nimport { aws_logs as logs } from 'aws-cdk-lib';\n\ndeclare const code: glue_alpha.Code;\ndeclare const connection: glue_alpha.Connection;\ndeclare const logGroup: logs.LogGroup;\ndeclare const role: iam.Role;\ndeclare const securityConfiguration: glue_alpha.SecurityConfiguration;\nconst jobProps: glue_alpha.JobProps = {\n role: role,\n script: code,\n\n // the properties below are optional\n connections: [connection],\n continuousLogging: {\n enabled: false,\n\n // the properties below are optional\n conversionPattern: 'conversionPattern',\n logGroup: logGroup,\n logStreamPrefix: 'logStreamPrefix',\n quiet: false,\n },\n defaultArguments: {\n defaultArgumentsKey: 'defaultArguments',\n },\n description: 'description',\n enableProfilingMetrics: false,\n glueVersion: glue_alpha.GlueVersion.V0_9,\n jobName: 'jobName',\n maxConcurrentRuns: 123,\n maxRetries: 123,\n numberOfWorkers: 123,\n securityConfiguration: securityConfiguration,\n tags: {\n tagsKey: 'tags',\n },\n timeout: cdk.Duration.minutes(30),\n workerType: glue_alpha.WorkerType.STANDARD,\n};",
16358
+ "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';\nimport { aws_logs as logs } from 'aws-cdk-lib';\n\ndeclare const code: glue_alpha.Code;\ndeclare const connection: glue_alpha.Connection;\ndeclare const logGroup: logs.LogGroup;\ndeclare const role: iam.Role;\ndeclare const securityConfiguration: glue_alpha.SecurityConfiguration;\nconst jobProps: glue_alpha.JobProps = {\n role: role,\n script: code,\n\n // the properties below are optional\n connections: [connection],\n continuousLogging: {\n enabled: false,\n\n // the properties below are optional\n conversionPattern: 'conversionPattern',\n logGroup: logGroup,\n logStreamPrefix: 'logStreamPrefix',\n quiet: false,\n },\n defaultArguments: {\n defaultArgumentsKey: 'defaultArguments',\n },\n description: 'description',\n glueVersion: glue_alpha.GlueVersion.V0_9,\n jobName: 'jobName',\n maxConcurrentRuns: 123,\n maxRetries: 123,\n securityConfiguration: securityConfiguration,\n tags: {\n tagsKey: 'tags',\n },\n timeout: cdk.Duration.minutes(30),\n};",
16339
16359
  "custom": {
16340
16360
  "exampleMetadata": "fixture=_generated"
16341
16361
  }
@@ -16344,7 +16364,7 @@
16344
16364
  "kind": "interface",
16345
16365
  "locationInModule": {
16346
16366
  "filename": "lib/jobs/job.ts",
16347
- "line": 308
16367
+ "line": 309
16348
16368
  },
16349
16369
  "name": "JobProps",
16350
16370
  "properties": [
@@ -16358,7 +16378,7 @@
16358
16378
  "immutable": true,
16359
16379
  "locationInModule": {
16360
16380
  "filename": "lib/jobs/job.ts",
16361
- "line": 327
16381
+ "line": 328
16362
16382
  },
16363
16383
  "name": "role",
16364
16384
  "type": {
@@ -16375,7 +16395,7 @@
16375
16395
  "immutable": true,
16376
16396
  "locationInModule": {
16377
16397
  "filename": "lib/jobs/job.ts",
16378
- "line": 315
16398
+ "line": 316
16379
16399
  },
16380
16400
  "name": "script",
16381
16401
  "type": {
@@ -16392,7 +16412,7 @@
16392
16412
  "immutable": true,
16393
16413
  "locationInModule": {
16394
16414
  "filename": "lib/jobs/job.ts",
16395
- "line": 391
16415
+ "line": 380
16396
16416
  },
16397
16417
  "name": "connections",
16398
16418
  "optional": true,
@@ -16416,7 +16436,7 @@
16416
16436
  "immutable": true,
16417
16437
  "locationInModule": {
16418
16438
  "filename": "lib/jobs/job.ts",
16419
- "line": 452
16439
+ "line": 432
16420
16440
  },
16421
16441
  "name": "continuousLogging",
16422
16442
  "optional": true,
@@ -16428,6 +16448,7 @@
16428
16448
  "abstract": true,
16429
16449
  "docs": {
16430
16450
  "default": "- no arguments",
16451
+ "remarks": "These are emitted verbatim into the CloudFormation template, so avoid\nplacing secrets here in plaintext. Pass secrets to the job at runtime\nthrough AWS Secrets Manager instead. A synthesis-time warning is emitted\nwhen an argument key looks like a credential and holds a plaintext literal.",
16431
16452
  "see": "https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html\nfor a list of reserved parameters",
16432
16453
  "stability": "experimental",
16433
16454
  "summary": "Default Arguments (optional) The default arguments for every run of this Glue job, specified as name-value pairs."
@@ -16435,7 +16456,7 @@
16435
16456
  "immutable": true,
16436
16457
  "locationInModule": {
16437
16458
  "filename": "lib/jobs/job.ts",
16438
- "line": 382
16459
+ "line": 371
16439
16460
  },
16440
16461
  "name": "defaultArguments",
16441
16462
  "optional": true,
@@ -16458,7 +16479,7 @@
16458
16479
  "immutable": true,
16459
16480
  "locationInModule": {
16460
16481
  "filename": "lib/jobs/job.ts",
16461
- "line": 343
16482
+ "line": 344
16462
16483
  },
16463
16484
  "name": "description",
16464
16485
  "optional": true,
@@ -16466,25 +16487,6 @@
16466
16487
  "primitive": "string"
16467
16488
  }
16468
16489
  },
16469
- {
16470
- "abstract": true,
16471
- "docs": {
16472
- "default": "- no profiling metrics emitted.",
16473
- "see": "https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html",
16474
- "stability": "experimental",
16475
- "summary": "Enables the collection of metrics for job profiling."
16476
- },
16477
- "immutable": true,
16478
- "locationInModule": {
16479
- "filename": "lib/jobs/job.ts",
16480
- "line": 442
16481
- },
16482
- "name": "enableProfilingMetrics",
16483
- "optional": true,
16484
- "type": {
16485
- "primitive": "boolean"
16486
- }
16487
- },
16488
16490
  {
16489
16491
  "abstract": true,
16490
16492
  "docs": {
@@ -16495,7 +16497,7 @@
16495
16497
  "immutable": true,
16496
16498
  "locationInModule": {
16497
16499
  "filename": "lib/jobs/job.ts",
16498
- "line": 433
16500
+ "line": 422
16499
16501
  },
16500
16502
  "name": "glueVersion",
16501
16503
  "optional": true,
@@ -16513,7 +16515,7 @@
16513
16515
  "immutable": true,
16514
16516
  "locationInModule": {
16515
16517
  "filename": "lib/jobs/job.ts",
16516
- "line": 335
16518
+ "line": 336
16517
16519
  },
16518
16520
  "name": "jobName",
16519
16521
  "optional": true,
@@ -16532,7 +16534,7 @@
16532
16534
  "immutable": true,
16533
16535
  "locationInModule": {
16534
16536
  "filename": "lib/jobs/job.ts",
16535
- "line": 371
16537
+ "line": 355
16536
16538
  },
16537
16539
  "name": "maxConcurrentRuns",
16538
16540
  "optional": true,
@@ -16550,7 +16552,7 @@
16550
16552
  "immutable": true,
16551
16553
  "locationInModule": {
16552
16554
  "filename": "lib/jobs/job.ts",
16553
- "line": 399
16555
+ "line": 388
16554
16556
  },
16555
16557
  "name": "maxRetries",
16556
16558
  "optional": true,
@@ -16558,24 +16560,6 @@
16558
16560
  "primitive": "number"
16559
16561
  }
16560
16562
  },
16561
- {
16562
- "abstract": true,
16563
- "docs": {
16564
- "default": "10",
16565
- "stability": "experimental",
16566
- "summary": "Number of Workers (optional) Number of workers for Glue to use during job execution."
16567
- },
16568
- "immutable": true,
16569
- "locationInModule": {
16570
- "filename": "lib/jobs/job.ts",
16571
- "line": 351
16572
- },
16573
- "name": "numberOfWorkers",
16574
- "optional": true,
16575
- "type": {
16576
- "primitive": "number"
16577
- }
16578
- },
16579
16563
  {
16580
16564
  "abstract": true,
16581
16565
  "docs": {
@@ -16586,7 +16570,7 @@
16586
16570
  "immutable": true,
16587
16571
  "locationInModule": {
16588
16572
  "filename": "lib/jobs/job.ts",
16589
- "line": 417
16573
+ "line": 406
16590
16574
  },
16591
16575
  "name": "securityConfiguration",
16592
16576
  "optional": true,
@@ -16604,7 +16588,7 @@
16604
16588
  "immutable": true,
16605
16589
  "locationInModule": {
16606
16590
  "filename": "lib/jobs/job.ts",
16607
- "line": 425
16591
+ "line": 414
16608
16592
  },
16609
16593
  "name": "tags",
16610
16594
  "optional": true,
@@ -16628,32 +16612,13 @@
16628
16612
  "immutable": true,
16629
16613
  "locationInModule": {
16630
16614
  "filename": "lib/jobs/job.ts",
16631
- "line": 409
16615
+ "line": 398
16632
16616
  },
16633
16617
  "name": "timeout",
16634
16618
  "optional": true,
16635
16619
  "type": {
16636
16620
  "fqn": "aws-cdk-lib.Duration"
16637
16621
  }
16638
- },
16639
- {
16640
- "abstract": true,
16641
- "docs": {
16642
- "default": "WorkerType.G_1X",
16643
- "remarks": "G_4X, G_8X, Z_2X",
16644
- "stability": "experimental",
16645
- "summary": "Worker Type (optional) Type of Worker for Glue to use during job execution Enum options: Standard, G_1X, G_2X, G_025X."
16646
- },
16647
- "immutable": true,
16648
- "locationInModule": {
16649
- "filename": "lib/jobs/job.ts",
16650
- "line": 360
16651
- },
16652
- "name": "workerType",
16653
- "optional": true,
16654
- "type": {
16655
- "fqn": "@aws-cdk/aws-glue-alpha.WorkerType"
16656
- }
16657
16622
  }
16658
16623
  ],
16659
16624
  "symbolId": "lib/jobs/job:JobProps"
@@ -16777,7 +16742,7 @@
16777
16742
  "remarks": "A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory.",
16778
16743
  "stability": "experimental",
16779
16744
  "summary": "The number of AWS Glue data processing units (DPUs) that can be allocated when this job runs.",
16780
- "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\ndeclare const extraPythonFile: glue.Code;\nnew glue.PythonShellJob(stack, 'PythonShellJob', {\n jobName: 'PythonShellJobCustomName',\n description: 'This is a description',\n pythonVersion: glue.PythonVersion.TWO,\n maxCapacity: glue.MaxCapacity.DPU_1,\n role,\n script,\n extraPythonFiles: [extraPythonFile],\n glueVersion: glue.GlueVersion.V2_0,\n continuousLogging: { enabled: false },\n workerType: glue.WorkerType.G_2X,\n maxConcurrentRuns: 100,\n timeout: cdk.Duration.hours(2),\n connections: [glue.Connection.fromConnectionName(stack, 'Connection', 'connectionName')],\n securityConfiguration: glue.SecurityConfiguration.fromSecurityConfigurationName(stack, 'SecurityConfig', 'securityConfigName'),\n tags: {\n FirstTagName: 'FirstTagValue',\n SecondTagName: 'SecondTagValue',\n XTagName: 'XTagValue',\n },\n numberOfWorkers: 2,\n maxRetries: 2,\n});",
16745
+ "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\ndeclare const extraPythonFile: glue.Code;\nnew glue.PythonShellJob(stack, 'PythonShellJob', {\n jobName: 'PythonShellJobCustomName',\n description: 'This is a description',\n pythonVersion: glue.PythonVersion.THREE_NINE,\n maxCapacity: glue.MaxCapacity.DPU_1,\n role,\n script,\n extraPythonFiles: [extraPythonFile],\n glueVersion: glue.GlueVersion.V3_0,\n continuousLogging: { enabled: false },\n maxConcurrentRuns: 100,\n timeout: cdk.Duration.hours(2),\n connections: [glue.Connection.fromConnectionName(stack, 'Connection', 'connectionName')],\n securityConfiguration: glue.SecurityConfiguration.fromSecurityConfigurationName(stack, 'SecurityConfig', 'securityConfigName'),\n tags: {\n FirstTagName: 'FirstTagValue',\n SecondTagName: 'SecondTagValue',\n XTagName: 'XTagValue',\n },\n maxRetries: 2,\n});",
16781
16746
  "custom": {
16782
16747
  "exampleMetadata": "infused"
16783
16748
  }
@@ -16934,9 +16899,9 @@
16934
16899
  "docs": {
16935
16900
  "stability": "experimental",
16936
16901
  "summary": "Properties for configuring an on-demand Glue Trigger.",
16937
- "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_glue as glue } from 'aws-cdk-lib';\n\ndeclare const cfnCrawler: glue.CfnCrawler;\ndeclare const job: glue_alpha.Job;\ndeclare const securityConfiguration: glue_alpha.SecurityConfiguration;\nconst onDemandTriggerOptions: glue_alpha.OnDemandTriggerOptions = {\n actions: [{\n arguments: {\n argumentsKey: 'arguments',\n },\n crawler: cfnCrawler,\n job: job,\n securityConfiguration: securityConfiguration,\n timeout: cdk.Duration.minutes(30),\n }],\n\n // the properties below are optional\n description: 'description',\n name: 'name',\n};",
16902
+ "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\n\n// Create a job to run from the workflow\nconst job = new glue.PySparkEtlJob(stack, 'Job', { role, script });\n\n// Create a workflow and add a trigger that runs the job\nconst workflow = new glue.Workflow(stack, 'Workflow');\nworkflow.addOnDemandTrigger('OnDemandTrigger', {\n actions: [{ job }],\n});",
16938
16903
  "custom": {
16939
- "exampleMetadata": "fixture=_generated"
16904
+ "exampleMetadata": "infused"
16940
16905
  }
16941
16906
  },
16942
16907
  "fqn": "@aws-cdk/aws-glue-alpha.OnDemandTriggerOptions",
@@ -16988,7 +16953,7 @@
16988
16953
  "docs": {
16989
16954
  "stability": "experimental",
16990
16955
  "summary": "Absolute class name of the Hadoop `OutputFormat` to use when writing table files.",
16991
- "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as glue_alpha from '@aws-cdk/aws-glue-alpha';\nconst outputFormat = new glue_alpha.OutputFormat('className');",
16956
+ "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as glue_alpha from '@aws-cdk/aws-glue-alpha';\nconst outputFormat = glue_alpha.OutputFormat.AVRO;",
16992
16957
  "custom": {
16993
16958
  "exampleMetadata": "fixture=_generated"
16994
16959
  }
@@ -17033,7 +16998,7 @@
17033
16998
  "name": "AVRO",
17034
16999
  "static": true,
17035
17000
  "type": {
17036
- "fqn": "@aws-cdk/aws-glue-alpha.InputFormat"
17001
+ "fqn": "@aws-cdk/aws-glue-alpha.OutputFormat"
17037
17002
  }
17038
17003
  },
17039
17004
  {
@@ -17069,7 +17034,7 @@
17069
17034
  "name": "ORC",
17070
17035
  "static": true,
17071
17036
  "type": {
17072
- "fqn": "@aws-cdk/aws-glue-alpha.InputFormat"
17037
+ "fqn": "@aws-cdk/aws-glue-alpha.OutputFormat"
17073
17038
  }
17074
17039
  },
17075
17040
  {
@@ -17113,7 +17078,7 @@
17113
17078
  "docs": {
17114
17079
  "stability": "experimental",
17115
17080
  "summary": "Properties of a Partition Index.",
17116
- "example": "declare const myTable: glue.Table;\nmyTable.addPartitionIndex({\n indexName: 'my-index',\n keyNames: ['year'],\n});",
17081
+ "example": "declare const myTable: glue.S3Table;\nmyTable.addPartitionIndex({\n indexName: 'my-index',\n keyNames: ['year'],\n});",
17117
17082
  "custom": {
17118
17083
  "exampleMetadata": "infused"
17119
17084
  }
@@ -17574,10 +17539,10 @@
17574
17539
  "assembly": "@aws-cdk/aws-glue-alpha",
17575
17540
  "base": "@aws-cdk/aws-glue-alpha.SparkJob",
17576
17541
  "docs": {
17577
- "remarks": "ETL jobs support pySpark and Scala languages, for which there are separate\nbut similar constructors. ETL jobs default to the G2 worker type, but you\ncan override this default with other supported worker type values\n(G1, G2, G4 and G8). ETL jobs defaults to Glue version 4.0, which you can\noverride to 3.0. The following ETL features are enabled by default:\nenable-metrics, enable-spark-ui, enable-continuous-cloudwatch-log.\nYou can find more details about version, worker type and other features\nin Glue's public documentation.",
17542
+ "remarks": "ETL jobs support pySpark and Scala languages, for which there are separate\nbut similar constructors. ETL jobs default to the G2 worker type, but you\ncan override this default with other supported worker type values\n(G1, G2, G4 and G8). ETL jobs defaults to Glue version 4.0, which you can\noverride to 3.0. The following ETL features are enabled by default:\n--enable-metrics, --enable-continuous-cloudwatch-log. The Spark UI\n(--enable-spark-ui) is off by default; enable it by setting the `sparkUI` prop.\nYou can find more details about version, worker type and other features\nin Glue's public documentation.",
17578
17543
  "stability": "experimental",
17579
17544
  "summary": "PySpark ETL Jobs class.",
17580
- "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\n\n// Disable both metrics for cost optimization\nnew glue.PySparkEtlJob(stack, 'CostOptimizedJob', {\n role,\n script,\n enableMetrics: false,\n enableObservabilityMetrics: false,\n});\n\n// Selective control - keep observability, disable profiling\nnew glue.PySparkEtlJob(stack, 'SelectiveJob', {\n role,\n script,\n enableMetrics: false,\n // enableObservabilityMetrics defaults to true\n});",
17545
+ "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\n\n// Create a job to run from the workflow\nconst job = new glue.PySparkEtlJob(stack, 'Job', { role, script });\n\n// Create a workflow and add a trigger that runs the job\nconst workflow = new glue.Workflow(stack, 'Workflow');\nworkflow.addOnDemandTrigger('OnDemandTrigger', {\n actions: [{ job }],\n});",
17581
17546
  "custom": {
17582
17547
  "exampleMetadata": "infused"
17583
17548
  }
@@ -17590,7 +17555,7 @@
17590
17555
  },
17591
17556
  "locationInModule": {
17592
17557
  "filename": "lib/jobs/pyspark-etl-job.ts",
17593
- "line": 90
17558
+ "line": 92
17594
17559
  },
17595
17560
  "parameters": [
17596
17561
  {
@@ -17616,7 +17581,7 @@
17616
17581
  "kind": "class",
17617
17582
  "locationInModule": {
17618
17583
  "filename": "lib/jobs/pyspark-etl-job.ts",
17619
- "line": 81
17584
+ "line": 83
17620
17585
  },
17621
17586
  "name": "PySparkEtlJob",
17622
17587
  "properties": [
@@ -17629,7 +17594,7 @@
17629
17594
  "immutable": true,
17630
17595
  "locationInModule": {
17631
17596
  "filename": "lib/jobs/pyspark-etl-job.ts",
17632
- "line": 84
17597
+ "line": 86
17633
17598
  },
17634
17599
  "name": "PROPERTY_INJECTION_ID",
17635
17600
  "static": true,
@@ -17645,7 +17610,7 @@
17645
17610
  "immutable": true,
17646
17611
  "locationInModule": {
17647
17612
  "filename": "lib/jobs/pyspark-etl-job.ts",
17648
- "line": 125
17613
+ "line": 132
17649
17614
  },
17650
17615
  "name": "jobArn",
17651
17616
  "overrides": "@aws-cdk/aws-glue-alpha.JobBase",
@@ -17661,7 +17626,7 @@
17661
17626
  "immutable": true,
17662
17627
  "locationInModule": {
17663
17628
  "filename": "lib/jobs/pyspark-etl-job.ts",
17664
- "line": 130
17629
+ "line": 137
17665
17630
  },
17666
17631
  "name": "jobName",
17667
17632
  "overrides": "@aws-cdk/aws-glue-alpha.JobBase",
@@ -17678,7 +17643,7 @@
17678
17643
  "docs": {
17679
17644
  "stability": "experimental",
17680
17645
  "summary": "Properties for creating a Python Spark ETL job.",
17681
- "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\n\n// Disable both metrics for cost optimization\nnew glue.PySparkEtlJob(stack, 'CostOptimizedJob', {\n role,\n script,\n enableMetrics: false,\n enableObservabilityMetrics: false,\n});\n\n// Selective control - keep observability, disable profiling\nnew glue.PySparkEtlJob(stack, 'SelectiveJob', {\n role,\n script,\n enableMetrics: false,\n // enableObservabilityMetrics defaults to true\n});",
17646
+ "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\n\n// Create a job to run from the workflow\nconst job = new glue.PySparkEtlJob(stack, 'Job', { role, script });\n\n// Create a workflow and add a trigger that runs the job\nconst workflow = new glue.Workflow(stack, 'Workflow');\nworkflow.addOnDemandTrigger('OnDemandTrigger', {\n actions: [{ job }],\n});",
17682
17647
  "custom": {
17683
17648
  "exampleMetadata": "infused"
17684
17649
  }
@@ -17690,7 +17655,7 @@
17690
17655
  "kind": "interface",
17691
17656
  "locationInModule": {
17692
17657
  "filename": "lib/jobs/pyspark-etl-job.ts",
17693
- "line": 15
17658
+ "line": 16
17694
17659
  },
17695
17660
  "name": "PySparkEtlJobProps",
17696
17661
  "properties": [
@@ -17705,7 +17670,7 @@
17705
17670
  "immutable": true,
17706
17671
  "locationInModule": {
17707
17672
  "filename": "lib/jobs/pyspark-etl-job.ts",
17708
- "line": 38
17673
+ "line": 39
17709
17674
  },
17710
17675
  "name": "extraFiles",
17711
17676
  "optional": true,
@@ -17728,7 +17693,7 @@
17728
17693
  "immutable": true,
17729
17694
  "locationInModule": {
17730
17695
  "filename": "lib/jobs/pyspark-etl-job.ts",
17731
- "line": 45
17696
+ "line": 46
17732
17697
  },
17733
17698
  "name": "extraJars",
17734
17699
  "optional": true,
@@ -17752,7 +17717,7 @@
17752
17717
  "immutable": true,
17753
17718
  "locationInModule": {
17754
17719
  "filename": "lib/jobs/pyspark-etl-job.ts",
17755
- "line": 54
17720
+ "line": 55
17756
17721
  },
17757
17722
  "name": "extraJarsFirst",
17758
17723
  "optional": true,
@@ -17770,7 +17735,7 @@
17770
17735
  "immutable": true,
17771
17736
  "locationInModule": {
17772
17737
  "filename": "lib/jobs/pyspark-etl-job.ts",
17773
- "line": 29
17738
+ "line": 30
17774
17739
  },
17775
17740
  "name": "extraPythonFiles",
17776
17741
  "optional": true,
@@ -17794,7 +17759,7 @@
17794
17759
  "immutable": true,
17795
17760
  "locationInModule": {
17796
17761
  "filename": "lib/jobs/pyspark-etl-job.ts",
17797
- "line": 66
17762
+ "line": 67
17798
17763
  },
17799
17764
  "name": "jobRunQueuingEnabled",
17800
17765
  "optional": true,
@@ -17813,7 +17778,7 @@
17813
17778
  "immutable": true,
17814
17779
  "locationInModule": {
17815
17780
  "filename": "lib/jobs/pyspark-etl-job.ts",
17816
- "line": 21
17781
+ "line": 22
17817
17782
  },
17818
17783
  "name": "notifyDelayAfter",
17819
17784
  "optional": true,
@@ -17828,7 +17793,7 @@
17828
17793
  "assembly": "@aws-cdk/aws-glue-alpha",
17829
17794
  "base": "@aws-cdk/aws-glue-alpha.SparkJob",
17830
17795
  "docs": {
17831
- "remarks": "Flex jobs supports Python and Scala language.\nThe flexible execution class is appropriate for non-urgent jobs such as\npre-production jobs, testing, and one-time data loads.\nFlexible job runs are supported for jobs using AWS Glue version 3.0 or later and G.1X or\nG.2X worker types but will default to the latest version of Glue (currently Glue 3.0.)\n\nSimilar to ETL, we’ll enable these features: enable-metrics, —enable-spark-ui,\nenable-continuous-cloudwatch-log",
17796
+ "remarks": "Flex jobs supports Python and Scala language.\nThe flexible execution class is appropriate for non-urgent jobs such as\npre-production jobs, testing, and one-time data loads.\nFlexible job runs are supported for jobs using AWS Glue version 3.0 or later and G.1X or\nG.2X worker types but will default to the latest version of Glue (currently Glue 3.0.)\n\nSimilar to ETL, we’ll enable these features: --enable-metrics,\n--enable-continuous-cloudwatch-log. The Spark UI (--enable-spark-ui) is off by\ndefault; enable it by setting the `sparkUI` prop.",
17832
17797
  "stability": "experimental",
17833
17798
  "summary": "Flex Jobs class.",
17834
17799
  "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkFlexEtlJob(stack, 'ImportedJob', { role, script });",
@@ -17844,7 +17809,7 @@
17844
17809
  },
17845
17810
  "locationInModule": {
17846
17811
  "filename": "lib/jobs/pyspark-flex-etl-job.ts",
17847
- "line": 78
17812
+ "line": 79
17848
17813
  },
17849
17814
  "parameters": [
17850
17815
  {
@@ -17870,7 +17835,7 @@
17870
17835
  "kind": "class",
17871
17836
  "locationInModule": {
17872
17837
  "filename": "lib/jobs/pyspark-flex-etl-job.ts",
17873
- "line": 69
17838
+ "line": 70
17874
17839
  },
17875
17840
  "name": "PySparkFlexEtlJob",
17876
17841
  "properties": [
@@ -17883,7 +17848,7 @@
17883
17848
  "immutable": true,
17884
17849
  "locationInModule": {
17885
17850
  "filename": "lib/jobs/pyspark-flex-etl-job.ts",
17886
- "line": 72
17851
+ "line": 73
17887
17852
  },
17888
17853
  "name": "PROPERTY_INJECTION_ID",
17889
17854
  "static": true,
@@ -17899,7 +17864,7 @@
17899
17864
  "immutable": true,
17900
17865
  "locationInModule": {
17901
17866
  "filename": "lib/jobs/pyspark-flex-etl-job.ts",
17902
- "line": 115
17867
+ "line": 116
17903
17868
  },
17904
17869
  "name": "jobArn",
17905
17870
  "overrides": "@aws-cdk/aws-glue-alpha.JobBase",
@@ -17915,7 +17880,7 @@
17915
17880
  "immutable": true,
17916
17881
  "locationInModule": {
17917
17882
  "filename": "lib/jobs/pyspark-flex-etl-job.ts",
17918
- "line": 120
17883
+ "line": 121
17919
17884
  },
17920
17885
  "name": "jobName",
17921
17886
  "overrides": "@aws-cdk/aws-glue-alpha.JobBase",
@@ -18063,7 +18028,7 @@
18063
18028
  "assembly": "@aws-cdk/aws-glue-alpha",
18064
18029
  "base": "@aws-cdk/aws-glue-alpha.SparkJob",
18065
18030
  "docs": {
18066
- "remarks": "A Streaming job is similar to an ETL job, except that it performs ETL on data streams\nusing the Apache Spark Structured Streaming framework.\nThese jobs will default to use Python 3.9.\n\nSimilar to ETL jobs, streaming job supports Scala and Python languages. Similar to ETL,\nit supports G1 and G2 worker type and 2.0, 3.0 and 4.0 version. We’ll default to G2 worker\nand 4.0 version for streaming jobs which developers can override.\nWe will enable enable-metrics, enable-spark-ui, —enable-continuous-cloudwatch-log.",
18031
+ "remarks": "A Streaming job is similar to an ETL job, except that it performs ETL on data streams\nusing the Apache Spark Structured Streaming framework.\nThese jobs will default to use Python 3.9.\n\nSimilar to ETL jobs, streaming job supports Scala and Python languages. Similar to ETL,\nit supports G1 and G2 worker type and 2.0, 3.0 and 4.0 version. We’ll default to G2 worker\nand 4.0 version for streaming jobs which developers can override.\nWe will enable --enable-metrics, --enable-continuous-cloudwatch-log. The Spark UI\n(--enable-spark-ui) is off by default; enable it by setting the `sparkUI` prop.",
18067
18032
  "stability": "experimental",
18068
18033
  "summary": "Python Spark Streaming Jobs class.",
18069
18034
  "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkStreamingJob(stack, 'ImportedJob', { role, script });",
@@ -18079,7 +18044,7 @@
18079
18044
  },
18080
18045
  "locationInModule": {
18081
18046
  "filename": "lib/jobs/pyspark-streaming-job.ts",
18082
- "line": 82
18047
+ "line": 83
18083
18048
  },
18084
18049
  "parameters": [
18085
18050
  {
@@ -18105,7 +18070,7 @@
18105
18070
  "kind": "class",
18106
18071
  "locationInModule": {
18107
18072
  "filename": "lib/jobs/pyspark-streaming-job.ts",
18108
- "line": 73
18073
+ "line": 74
18109
18074
  },
18110
18075
  "name": "PySparkStreamingJob",
18111
18076
  "properties": [
@@ -18118,7 +18083,7 @@
18118
18083
  "immutable": true,
18119
18084
  "locationInModule": {
18120
18085
  "filename": "lib/jobs/pyspark-streaming-job.ts",
18121
- "line": 76
18086
+ "line": 77
18122
18087
  },
18123
18088
  "name": "PROPERTY_INJECTION_ID",
18124
18089
  "static": true,
@@ -18134,7 +18099,7 @@
18134
18099
  "immutable": true,
18135
18100
  "locationInModule": {
18136
18101
  "filename": "lib/jobs/pyspark-streaming-job.ts",
18137
- "line": 116
18102
+ "line": 117
18138
18103
  },
18139
18104
  "name": "jobArn",
18140
18105
  "overrides": "@aws-cdk/aws-glue-alpha.JobBase",
@@ -18150,7 +18115,7 @@
18150
18115
  "immutable": true,
18151
18116
  "locationInModule": {
18152
18117
  "filename": "lib/jobs/pyspark-streaming-job.ts",
18153
- "line": 121
18118
+ "line": 122
18154
18119
  },
18155
18120
  "name": "jobName",
18156
18121
  "overrides": "@aws-cdk/aws-glue-alpha.JobBase",
@@ -18538,7 +18503,7 @@
18538
18503
  "docs": {
18539
18504
  "stability": "experimental",
18540
18505
  "summary": "Python version.",
18541
- "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\ndeclare const extraPythonFile: glue.Code;\nnew glue.PythonShellJob(stack, 'PythonShellJob', {\n jobName: 'PythonShellJobCustomName',\n description: 'This is a description',\n pythonVersion: glue.PythonVersion.TWO,\n maxCapacity: glue.MaxCapacity.DPU_1,\n role,\n script,\n extraPythonFiles: [extraPythonFile],\n glueVersion: glue.GlueVersion.V2_0,\n continuousLogging: { enabled: false },\n workerType: glue.WorkerType.G_2X,\n maxConcurrentRuns: 100,\n timeout: cdk.Duration.hours(2),\n connections: [glue.Connection.fromConnectionName(stack, 'Connection', 'connectionName')],\n securityConfiguration: glue.SecurityConfiguration.fromSecurityConfigurationName(stack, 'SecurityConfig', 'securityConfigName'),\n tags: {\n FirstTagName: 'FirstTagValue',\n SecondTagName: 'SecondTagValue',\n XTagName: 'XTagValue',\n },\n numberOfWorkers: 2,\n maxRetries: 2,\n});",
18506
+ "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\ndeclare const extraPythonFile: glue.Code;\nnew glue.PythonShellJob(stack, 'PythonShellJob', {\n jobName: 'PythonShellJobCustomName',\n description: 'This is a description',\n pythonVersion: glue.PythonVersion.THREE_NINE,\n maxCapacity: glue.MaxCapacity.DPU_1,\n role,\n script,\n extraPythonFiles: [extraPythonFile],\n glueVersion: glue.GlueVersion.V3_0,\n continuousLogging: { enabled: false },\n maxConcurrentRuns: 100,\n timeout: cdk.Duration.hours(2),\n connections: [glue.Connection.fromConnectionName(stack, 'Connection', 'connectionName')],\n securityConfiguration: glue.SecurityConfiguration.fromSecurityConfigurationName(stack, 'SecurityConfig', 'securityConfigName'),\n tags: {\n FirstTagName: 'FirstTagValue',\n SecondTagName: 'SecondTagValue',\n XTagName: 'XTagValue',\n },\n maxRetries: 2,\n});",
18542
18507
  "custom": {
18543
18508
  "exampleMetadata": "infused"
18544
18509
  }
@@ -18583,7 +18548,7 @@
18583
18548
  "remarks": "Glue Ray jobs use worker type Z.2X and Glue version 4.0.\nThese are not overrideable since these are the only configuration that\nGlue Ray jobs currently support. The runtime defaults to Ray2.4 and min\nworkers defaults to 3.",
18584
18549
  "stability": "deprecated",
18585
18550
  "summary": "Ray Jobs class.",
18586
- "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';\nimport { aws_logs as logs } from 'aws-cdk-lib';\n\ndeclare const code: glue_alpha.Code;\ndeclare const connection: glue_alpha.Connection;\ndeclare const logGroup: logs.LogGroup;\ndeclare const role: iam.Role;\ndeclare const securityConfiguration: glue_alpha.SecurityConfiguration;\nconst rayJob = new glue_alpha.RayJob(this, 'MyRayJob', {\n role: role,\n script: code,\n\n // the properties below are optional\n connections: [connection],\n continuousLogging: {\n enabled: false,\n\n // the properties below are optional\n conversionPattern: 'conversionPattern',\n logGroup: logGroup,\n logStreamPrefix: 'logStreamPrefix',\n quiet: false,\n },\n defaultArguments: {\n defaultArgumentsKey: 'defaultArguments',\n },\n description: 'description',\n enableMetrics: false,\n enableObservabilityMetrics: false,\n enableProfilingMetrics: false,\n glueVersion: glue_alpha.GlueVersion.V0_9,\n jobName: 'jobName',\n jobRunQueuingEnabled: false,\n maxConcurrentRuns: 123,\n maxRetries: 123,\n numberOfWorkers: 123,\n runtime: glue_alpha.Runtime.RAY_TWO_FOUR,\n securityConfiguration: securityConfiguration,\n tags: {\n tagsKey: 'tags',\n },\n timeout: cdk.Duration.minutes(30),\n workerType: glue_alpha.WorkerType.STANDARD,\n});",
18551
+ "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';\nimport { aws_logs as logs } from 'aws-cdk-lib';\n\ndeclare const code: glue_alpha.Code;\ndeclare const connection: glue_alpha.Connection;\ndeclare const logGroup: logs.LogGroup;\ndeclare const role: iam.Role;\ndeclare const securityConfiguration: glue_alpha.SecurityConfiguration;\nconst rayJob = new glue_alpha.RayJob(this, 'MyRayJob', {\n role: role,\n script: code,\n\n // the properties below are optional\n connections: [connection],\n continuousLogging: {\n enabled: false,\n\n // the properties below are optional\n conversionPattern: 'conversionPattern',\n logGroup: logGroup,\n logStreamPrefix: 'logStreamPrefix',\n quiet: false,\n },\n defaultArguments: {\n defaultArgumentsKey: 'defaultArguments',\n },\n description: 'description',\n enableMetrics: false,\n enableObservabilityMetrics: false,\n glueVersion: glue_alpha.GlueVersion.V0_9,\n jobName: 'jobName',\n jobRunQueuingEnabled: false,\n maxConcurrentRuns: 123,\n maxRetries: 123,\n numberOfWorkers: 123,\n runtime: glue_alpha.Runtime.RAY_TWO_FOUR,\n securityConfiguration: securityConfiguration,\n tags: {\n tagsKey: 'tags',\n },\n timeout: cdk.Duration.minutes(30),\n});",
18587
18552
  "custom": {
18588
18553
  "exampleMetadata": "fixture=_generated"
18589
18554
  }
@@ -18596,7 +18561,7 @@
18596
18561
  },
18597
18562
  "locationInModule": {
18598
18563
  "filename": "lib/jobs/ray-job.ts",
18599
- "line": 81
18564
+ "line": 89
18600
18565
  },
18601
18566
  "parameters": [
18602
18567
  {
@@ -18622,7 +18587,7 @@
18622
18587
  "kind": "class",
18623
18588
  "locationInModule": {
18624
18589
  "filename": "lib/jobs/ray-job.ts",
18625
- "line": 70
18590
+ "line": 78
18626
18591
  },
18627
18592
  "name": "RayJob",
18628
18593
  "properties": [
@@ -18635,7 +18600,7 @@
18635
18600
  "immutable": true,
18636
18601
  "locationInModule": {
18637
18602
  "filename": "lib/jobs/ray-job.ts",
18638
- "line": 73
18603
+ "line": 81
18639
18604
  },
18640
18605
  "name": "PROPERTY_INJECTION_ID",
18641
18606
  "static": true,
@@ -18651,7 +18616,7 @@
18651
18616
  "immutable": true,
18652
18617
  "locationInModule": {
18653
18618
  "filename": "lib/jobs/ray-job.ts",
18654
- "line": 75
18619
+ "line": 83
18655
18620
  },
18656
18621
  "name": "grantPrincipal",
18657
18622
  "overrides": "@aws-cdk/aws-glue-alpha.JobBase",
@@ -18667,7 +18632,7 @@
18667
18632
  "immutable": true,
18668
18633
  "locationInModule": {
18669
18634
  "filename": "lib/jobs/ray-job.ts",
18670
- "line": 134
18635
+ "line": 138
18671
18636
  },
18672
18637
  "name": "jobArn",
18673
18638
  "overrides": "@aws-cdk/aws-glue-alpha.JobBase",
@@ -18683,7 +18648,7 @@
18683
18648
  "immutable": true,
18684
18649
  "locationInModule": {
18685
18650
  "filename": "lib/jobs/ray-job.ts",
18686
- "line": 139
18651
+ "line": 143
18687
18652
  },
18688
18653
  "name": "jobName",
18689
18654
  "overrides": "@aws-cdk/aws-glue-alpha.JobBase",
@@ -18699,7 +18664,7 @@
18699
18664
  "immutable": true,
18700
18665
  "locationInModule": {
18701
18666
  "filename": "lib/jobs/ray-job.ts",
18702
- "line": 74
18667
+ "line": 82
18703
18668
  },
18704
18669
  "name": "role",
18705
18670
  "overrides": "@aws-cdk/aws-glue-alpha.Job",
@@ -18717,7 +18682,7 @@
18717
18682
  "deprecated": "AWS Glue for Ray is closed to new customers as of April 30, 2026.\nMigrate to Amazon EKS with KubeRay Operator. See\nhttps://docs.aws.amazon.com/glue/latest/dg/awsglue-ray-jobs-availability-change.html",
18718
18683
  "stability": "deprecated",
18719
18684
  "summary": "Properties for creating a Ray Glue job.",
18720
- "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';\nimport { aws_logs as logs } from 'aws-cdk-lib';\n\ndeclare const code: glue_alpha.Code;\ndeclare const connection: glue_alpha.Connection;\ndeclare const logGroup: logs.LogGroup;\ndeclare const role: iam.Role;\ndeclare const securityConfiguration: glue_alpha.SecurityConfiguration;\nconst rayJobProps: glue_alpha.RayJobProps = {\n role: role,\n script: code,\n\n // the properties below are optional\n connections: [connection],\n continuousLogging: {\n enabled: false,\n\n // the properties below are optional\n conversionPattern: 'conversionPattern',\n logGroup: logGroup,\n logStreamPrefix: 'logStreamPrefix',\n quiet: false,\n },\n defaultArguments: {\n defaultArgumentsKey: 'defaultArguments',\n },\n description: 'description',\n enableMetrics: false,\n enableObservabilityMetrics: false,\n enableProfilingMetrics: false,\n glueVersion: glue_alpha.GlueVersion.V0_9,\n jobName: 'jobName',\n jobRunQueuingEnabled: false,\n maxConcurrentRuns: 123,\n maxRetries: 123,\n numberOfWorkers: 123,\n runtime: glue_alpha.Runtime.RAY_TWO_FOUR,\n securityConfiguration: securityConfiguration,\n tags: {\n tagsKey: 'tags',\n },\n timeout: cdk.Duration.minutes(30),\n workerType: glue_alpha.WorkerType.STANDARD,\n};",
18685
+ "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';\nimport { aws_logs as logs } from 'aws-cdk-lib';\n\ndeclare const code: glue_alpha.Code;\ndeclare const connection: glue_alpha.Connection;\ndeclare const logGroup: logs.LogGroup;\ndeclare const role: iam.Role;\ndeclare const securityConfiguration: glue_alpha.SecurityConfiguration;\nconst rayJobProps: glue_alpha.RayJobProps = {\n role: role,\n script: code,\n\n // the properties below are optional\n connections: [connection],\n continuousLogging: {\n enabled: false,\n\n // the properties below are optional\n conversionPattern: 'conversionPattern',\n logGroup: logGroup,\n logStreamPrefix: 'logStreamPrefix',\n quiet: false,\n },\n defaultArguments: {\n defaultArgumentsKey: 'defaultArguments',\n },\n description: 'description',\n enableMetrics: false,\n enableObservabilityMetrics: false,\n glueVersion: glue_alpha.GlueVersion.V0_9,\n jobName: 'jobName',\n jobRunQueuingEnabled: false,\n maxConcurrentRuns: 123,\n maxRetries: 123,\n numberOfWorkers: 123,\n runtime: glue_alpha.Runtime.RAY_TWO_FOUR,\n securityConfiguration: securityConfiguration,\n tags: {\n tagsKey: 'tags',\n },\n timeout: cdk.Duration.minutes(30),\n};",
18721
18686
  "custom": {
18722
18687
  "exampleMetadata": "fixture=_generated"
18723
18688
  }
@@ -18729,7 +18694,7 @@
18729
18694
  "kind": "interface",
18730
18695
  "locationInModule": {
18731
18696
  "filename": "lib/jobs/ray-job.ts",
18732
- "line": 19
18697
+ "line": 18
18733
18698
  },
18734
18699
  "name": "RayJobProps",
18735
18700
  "properties": [
@@ -18744,7 +18709,7 @@
18744
18709
  "immutable": true,
18745
18710
  "locationInModule": {
18746
18711
  "filename": "lib/jobs/ray-job.ts",
18747
- "line": 46
18712
+ "line": 54
18748
18713
  },
18749
18714
  "name": "enableMetrics",
18750
18715
  "optional": true,
@@ -18763,7 +18728,7 @@
18763
18728
  "immutable": true,
18764
18729
  "locationInModule": {
18765
18730
  "filename": "lib/jobs/ray-job.ts",
18766
- "line": 55
18731
+ "line": 63
18767
18732
  },
18768
18733
  "name": "enableObservabilityMetrics",
18769
18734
  "optional": true,
@@ -18782,7 +18747,7 @@
18782
18747
  "immutable": true,
18783
18748
  "locationInModule": {
18784
18749
  "filename": "lib/jobs/ray-job.ts",
18785
- "line": 37
18750
+ "line": 45
18786
18751
  },
18787
18752
  "name": "jobRunQueuingEnabled",
18788
18753
  "optional": true,
@@ -18790,6 +18755,25 @@
18790
18755
  "primitive": "boolean"
18791
18756
  }
18792
18757
  },
18758
+ {
18759
+ "abstract": true,
18760
+ "docs": {
18761
+ "default": "3",
18762
+ "remarks": "Ray jobs only support the Z.2X worker type, so the worker type is not configurable.",
18763
+ "stability": "deprecated",
18764
+ "summary": "The number of workers allocated when a job runs."
18765
+ },
18766
+ "immutable": true,
18767
+ "locationInModule": {
18768
+ "filename": "lib/jobs/ray-job.ts",
18769
+ "line": 33
18770
+ },
18771
+ "name": "numberOfWorkers",
18772
+ "optional": true,
18773
+ "type": {
18774
+ "primitive": "number"
18775
+ }
18776
+ },
18793
18777
  {
18794
18778
  "abstract": true,
18795
18779
  "docs": {
@@ -18800,7 +18784,7 @@
18800
18784
  "immutable": true,
18801
18785
  "locationInModule": {
18802
18786
  "filename": "lib/jobs/ray-job.ts",
18803
- "line": 25
18787
+ "line": 24
18804
18788
  },
18805
18789
  "name": "runtime",
18806
18790
  "optional": true,
@@ -18914,58 +18898,73 @@
18914
18898
  },
18915
18899
  "@aws-cdk/aws-glue-alpha.S3Encryption": {
18916
18900
  "assembly": "@aws-cdk/aws-glue-alpha",
18917
- "datatype": true,
18918
18901
  "docs": {
18902
+ "remarks": "Use {@link S3Encryption.s3Managed} for SSE-S3 or {@link S3Encryption.kms} for\nSSE-KMS. Because these are separate factories, a KMS key can never be paired\nwith S3-managed encryption.",
18919
18903
  "stability": "experimental",
18920
- "summary": "S3 encryption configuration.",
18921
- "example": "new 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});",
18904
+ "summary": "S3 encryption configuration for a `SecurityConfiguration`.",
18905
+ "example": "new glue.SecurityConfiguration(this, 'MySecurityConfiguration', {\n cloudWatchEncryption: glue.CloudWatchEncryption.kms(),\n jobBookmarksEncryption: glue.JobBookmarksEncryption.clientSideKms(),\n s3Encryption: glue.S3Encryption.kms(),\n});",
18922
18906
  "custom": {
18923
18907
  "exampleMetadata": "infused"
18924
18908
  }
18925
18909
  },
18926
18910
  "fqn": "@aws-cdk/aws-glue-alpha.S3Encryption",
18927
- "kind": "interface",
18911
+ "kind": "class",
18928
18912
  "locationInModule": {
18929
18913
  "filename": "lib/security-configuration.ts",
18930
- "line": 70
18914
+ "line": 52
18931
18915
  },
18932
- "name": "S3Encryption",
18933
- "properties": [
18916
+ "methods": [
18934
18917
  {
18935
- "abstract": true,
18936
18918
  "docs": {
18919
+ "see": "https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html",
18937
18920
  "stability": "experimental",
18938
- "summary": "Encryption mode."
18921
+ "summary": "Server-side encryption (SSE) with an AWS KMS key managed by the account owner."
18939
18922
  },
18940
- "immutable": true,
18941
18923
  "locationInModule": {
18942
18924
  "filename": "lib/security-configuration.ts",
18943
- "line": 74
18925
+ "line": 68
18944
18926
  },
18945
- "name": "mode",
18946
- "type": {
18947
- "fqn": "@aws-cdk/aws-glue-alpha.S3EncryptionMode"
18948
- }
18927
+ "name": "kms",
18928
+ "parameters": [
18929
+ {
18930
+ "docs": {
18931
+ "remarks": "A key is created if one is not provided.",
18932
+ "summary": "the KMS key used to encrypt the data."
18933
+ },
18934
+ "name": "kmsKey",
18935
+ "optional": true,
18936
+ "type": {
18937
+ "fqn": "aws-cdk-lib.interfaces.aws_kms.IKeyRef"
18938
+ }
18939
+ }
18940
+ ],
18941
+ "returns": {
18942
+ "type": {
18943
+ "fqn": "@aws-cdk/aws-glue-alpha.S3Encryption"
18944
+ }
18945
+ },
18946
+ "static": true
18949
18947
  },
18950
18948
  {
18951
- "abstract": true,
18952
18949
  "docs": {
18953
- "default": "no kms key if mode = S3_MANAGED. A key will be created if one is not provided and mode = KMS.",
18950
+ "see": "https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html",
18954
18951
  "stability": "experimental",
18955
- "summary": "The KMS key to be used to encrypt the data."
18952
+ "summary": "Server-side encryption (SSE) with an Amazon S3-managed key."
18956
18953
  },
18957
- "immutable": true,
18958
18954
  "locationInModule": {
18959
18955
  "filename": "lib/security-configuration.ts",
18960
- "line": 80
18956
+ "line": 58
18961
18957
  },
18962
- "name": "kmsKey",
18963
- "optional": true,
18964
- "type": {
18965
- "fqn": "aws-cdk-lib.interfaces.aws_kms.IKeyRef"
18966
- }
18958
+ "name": "s3Managed",
18959
+ "returns": {
18960
+ "type": {
18961
+ "fqn": "@aws-cdk/aws-glue-alpha.S3Encryption"
18962
+ }
18963
+ },
18964
+ "static": true
18967
18965
  }
18968
18966
  ],
18967
+ "name": "S3Encryption",
18969
18968
  "symbolId": "lib/security-configuration:S3Encryption"
18970
18969
  },
18971
18970
  "@aws-cdk/aws-glue-alpha.S3EncryptionMode": {
@@ -18973,11 +18972,7 @@
18973
18972
  "docs": {
18974
18973
  "see": "https://docs.aws.amazon.com/glue/latest/webapi/API_S3Encryption.html#Glue-Type-S3Encryption-S3EncryptionMode",
18975
18974
  "stability": "experimental",
18976
- "summary": "Encryption mode for S3.",
18977
- "example": "new 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});",
18978
- "custom": {
18979
- "exampleMetadata": "infused"
18980
- }
18975
+ "summary": "Encryption mode for S3."
18981
18976
  },
18982
18977
  "fqn": "@aws-cdk/aws-glue-alpha.S3EncryptionMode",
18983
18978
  "kind": "enum",
@@ -19016,7 +19011,7 @@
19016
19011
  },
19017
19012
  "stability": "experimental",
19018
19013
  "summary": "A Glue table that targets a S3 dataset.",
19019
- "example": "declare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'data',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'date',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n partitionProjection: {\n date: glue.PartitionProjectionConfiguration.date({\n min: '2020-01-01',\n max: '2023-12-31',\n format: 'yyyy-MM-dd',\n interval: 1, // optional, defaults to 1\n intervalUnit: glue.DateIntervalUnit.DAYS, // optional: YEARS, MONTHS, WEEKS, DAYS, HOURS, MINUTES, SECONDS\n }),\n },\n});"
19014
+ "example": "declare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'data',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'date',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n partitionProjection: {\n date: glue.PartitionProjectionConfiguration.date({\n min: 'NOW-3YEARS',\n max: 'NOW',\n format: 'yyyy-MM-dd',\n }),\n },\n});"
19020
19015
  },
19021
19016
  "fqn": "@aws-cdk/aws-glue-alpha.S3Table",
19022
19017
  "initializer": {
@@ -19025,7 +19020,7 @@
19025
19020
  },
19026
19021
  "locationInModule": {
19027
19022
  "filename": "lib/s3-table.ts",
19028
- "line": 122
19023
+ "line": 134
19029
19024
  },
19030
19025
  "parameters": [
19031
19026
  {
@@ -19051,7 +19046,7 @@
19051
19046
  "kind": "class",
19052
19047
  "locationInModule": {
19053
19048
  "filename": "lib/s3-table.ts",
19054
- "line": 88
19049
+ "line": 93
19055
19050
  },
19056
19051
  "methods": [
19057
19052
  {
@@ -19060,7 +19055,7 @@
19060
19055
  },
19061
19056
  "locationInModule": {
19062
19057
  "filename": "lib/s3-table.ts",
19063
- "line": 245
19058
+ "line": 260
19064
19059
  },
19065
19060
  "name": "generateS3PrefixForGrant",
19066
19061
  "protected": true,
@@ -19078,7 +19073,7 @@
19078
19073
  },
19079
19074
  "locationInModule": {
19080
19075
  "filename": "lib/s3-table.ts",
19081
- "line": 209
19076
+ "line": 224
19082
19077
  },
19083
19078
  "name": "grantRead",
19084
19079
  "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
@@ -19107,7 +19102,7 @@
19107
19102
  },
19108
19103
  "locationInModule": {
19109
19104
  "filename": "lib/s3-table.ts",
19110
- "line": 237
19105
+ "line": 252
19111
19106
  },
19112
19107
  "name": "grantReadWrite",
19113
19108
  "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
@@ -19136,7 +19131,7 @@
19136
19131
  },
19137
19132
  "locationInModule": {
19138
19133
  "filename": "lib/s3-table.ts",
19139
- "line": 223
19134
+ "line": 238
19140
19135
  },
19141
19136
  "name": "grantWrite",
19142
19137
  "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
@@ -19169,7 +19164,7 @@
19169
19164
  "immutable": true,
19170
19165
  "locationInModule": {
19171
19166
  "filename": "lib/s3-table.ts",
19172
- "line": 91
19167
+ "line": 96
19173
19168
  },
19174
19169
  "name": "PROPERTY_INJECTION_ID",
19175
19170
  "static": true,
@@ -19185,7 +19180,7 @@
19185
19180
  "immutable": true,
19186
19181
  "locationInModule": {
19187
19182
  "filename": "lib/s3-table.ts",
19188
- "line": 98
19183
+ "line": 103
19189
19184
  },
19190
19185
  "name": "bucket",
19191
19186
  "type": {
@@ -19200,7 +19195,7 @@
19200
19195
  "immutable": true,
19201
19196
  "locationInModule": {
19202
19197
  "filename": "lib/s3-table.ts",
19203
- "line": 108
19198
+ "line": 113
19204
19199
  },
19205
19200
  "name": "encryption",
19206
19201
  "type": {
@@ -19215,7 +19210,7 @@
19215
19210
  "immutable": true,
19216
19211
  "locationInModule": {
19217
19212
  "filename": "lib/s3-table.ts",
19218
- "line": 103
19213
+ "line": 108
19219
19214
  },
19220
19215
  "name": "s3Prefix",
19221
19216
  "type": {
@@ -19230,7 +19225,7 @@
19230
19225
  "immutable": true,
19231
19226
  "locationInModule": {
19232
19227
  "filename": "lib/s3-table.ts",
19233
- "line": 194
19228
+ "line": 209
19234
19229
  },
19235
19230
  "name": "tableArn",
19236
19231
  "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
@@ -19246,7 +19241,7 @@
19246
19241
  "immutable": true,
19247
19242
  "locationInModule": {
19248
19243
  "filename": "lib/s3-table.ts",
19249
- "line": 186
19244
+ "line": 201
19250
19245
  },
19251
19246
  "name": "tableName",
19252
19247
  "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
@@ -19261,7 +19256,7 @@
19261
19256
  "immutable": true,
19262
19257
  "locationInModule": {
19263
19258
  "filename": "lib/s3-table.ts",
19264
- "line": 120
19259
+ "line": 125
19265
19260
  },
19266
19261
  "name": "tableResource",
19267
19262
  "overrides": "@aws-cdk/aws-glue-alpha.TableBase",
@@ -19279,7 +19274,7 @@
19279
19274
  "immutable": true,
19280
19275
  "locationInModule": {
19281
19276
  "filename": "lib/s3-table.ts",
19282
- "line": 113
19277
+ "line": 118
19283
19278
  },
19284
19279
  "name": "encryptionKey",
19285
19280
  "optional": true,
@@ -19295,7 +19290,7 @@
19295
19290
  "immutable": true,
19296
19291
  "locationInModule": {
19297
19292
  "filename": "lib/s3-table.ts",
19298
- "line": 118
19293
+ "line": 123
19299
19294
  },
19300
19295
  "name": "partitionIndexes",
19301
19296
  "optional": true,
@@ -19355,14 +19350,14 @@
19355
19350
  "abstract": true,
19356
19351
  "docs": {
19357
19352
  "default": "BucketEncryption.S3_MANAGED",
19358
- "remarks": "You can only provide this option if you are not explicitly passing in a bucket.\n\nIf you choose `SSE-KMS`, you *can* provide an un-managed KMS key with `encryptionKey`.\nIf you choose `CSE-KMS`, you *must* provide an un-managed KMS key with `encryptionKey`.",
19353
+ "remarks": "You can only provide this option if you are not explicitly passing in a bucket.\n\nIf you choose `SSE-KMS`, you *can* provide an un-managed KMS key with `encryptionKey`.\nIf you choose `CSE-KMS`, you *may* provide an un-managed KMS key with `encryptionKey`;\none is created automatically if omitted.",
19359
19354
  "stability": "experimental",
19360
19355
  "summary": "The kind of encryption to secure the data with."
19361
19356
  },
19362
19357
  "immutable": true,
19363
19358
  "locationInModule": {
19364
19359
  "filename": "lib/s3-table.ts",
19365
- "line": 72
19360
+ "line": 77
19366
19361
  },
19367
19362
  "name": "encryption",
19368
19363
  "optional": true,
@@ -19381,7 +19376,7 @@
19381
19376
  "immutable": true,
19382
19377
  "locationInModule": {
19383
19378
  "filename": "lib/s3-table.ts",
19384
- "line": 81
19379
+ "line": 86
19385
19380
  },
19386
19381
  "name": "encryptionKey",
19387
19382
  "optional": true,
@@ -19393,13 +19388,14 @@
19393
19388
  "abstract": true,
19394
19389
  "docs": {
19395
19390
  "default": "- No prefix. The data will be stored under the root of the bucket.",
19391
+ "remarks": "When the table shares a bucket with other tables or consumers, set this so\nthat the `grant*` methods scope S3 access to this table's data. Without a\nprefix, those grants cover the entire bucket.",
19396
19392
  "stability": "experimental",
19397
19393
  "summary": "S3 prefix under which table objects are stored."
19398
19394
  },
19399
19395
  "immutable": true,
19400
19396
  "locationInModule": {
19401
19397
  "filename": "lib/s3-table.ts",
19402
- "line": 60
19398
+ "line": 64
19403
19399
  },
19404
19400
  "name": "s3Prefix",
19405
19401
  "optional": true,
@@ -19417,7 +19413,7 @@
19417
19413
  "remarks": "ETL jobs support pySpark and Scala languages, for which there are separate\nbut similar constructors. ETL jobs default to the G2 worker type, but you\ncan override this default with other supported worker type values\n(G1, G2, G4 and G8). ETL jobs defaults to Glue version 4.0, which you can\noverride to 3.0. The following ETL features are enabled by default:\n—enable-metrics, —enable-spark-ui, —enable-continuous-cloudwatch-log.\nYou can find more details about version, worker type and other features\nin Glue's public documentation.",
19418
19414
  "stability": "experimental",
19419
19415
  "summary": "Spark ETL Jobs class.",
19420
- "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';\nimport { aws_logs as logs } from 'aws-cdk-lib';\nimport { aws_s3 as s3 } from 'aws-cdk-lib';\n\ndeclare const bucket: s3.Bucket;\ndeclare const code: glue_alpha.Code;\ndeclare const connection: glue_alpha.Connection;\ndeclare const logGroup: logs.LogGroup;\ndeclare const role: iam.Role;\ndeclare const securityConfiguration: glue_alpha.SecurityConfiguration;\nconst scalaSparkEtlJob = new glue_alpha.ScalaSparkEtlJob(this, 'MyScalaSparkEtlJob', {\n className: 'className',\n role: role,\n script: code,\n\n // the properties below are optional\n connections: [connection],\n continuousLogging: {\n enabled: false,\n\n // the properties below are optional\n conversionPattern: 'conversionPattern',\n logGroup: logGroup,\n logStreamPrefix: 'logStreamPrefix',\n quiet: false,\n },\n defaultArguments: {\n defaultArgumentsKey: 'defaultArguments',\n },\n description: 'description',\n enableMetrics: false,\n enableObservabilityMetrics: false,\n enableProfilingMetrics: false,\n extraFiles: [code],\n extraJars: [code],\n extraJarsFirst: false,\n glueVersion: glue_alpha.GlueVersion.V0_9,\n jobName: 'jobName',\n jobRunQueuingEnabled: false,\n maxConcurrentRuns: 123,\n maxRetries: 123,\n notifyDelayAfter: cdk.Duration.minutes(30),\n numberOfWorkers: 123,\n securityConfiguration: securityConfiguration,\n sparkUI: {\n bucket: bucket,\n prefix: 'prefix',\n },\n tags: {\n tagsKey: 'tags',\n },\n timeout: cdk.Duration.minutes(30),\n workerType: glue_alpha.WorkerType.STANDARD,\n});",
19416
+ "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';\nimport { aws_logs as logs } from 'aws-cdk-lib';\nimport { aws_s3 as s3 } from 'aws-cdk-lib';\n\ndeclare const bucket: s3.Bucket;\ndeclare const code: glue_alpha.Code;\ndeclare const connection: glue_alpha.Connection;\ndeclare const logGroup: logs.LogGroup;\ndeclare const role: iam.Role;\ndeclare const securityConfiguration: glue_alpha.SecurityConfiguration;\nconst scalaSparkEtlJob = new glue_alpha.ScalaSparkEtlJob(this, 'MyScalaSparkEtlJob', {\n className: 'className',\n role: role,\n script: code,\n\n // the properties below are optional\n connections: [connection],\n continuousLogging: {\n enabled: false,\n\n // the properties below are optional\n conversionPattern: 'conversionPattern',\n logGroup: logGroup,\n logStreamPrefix: 'logStreamPrefix',\n quiet: false,\n },\n defaultArguments: {\n defaultArgumentsKey: 'defaultArguments',\n },\n description: 'description',\n enableMetrics: false,\n enableObservabilityMetrics: false,\n extraFiles: [code],\n extraJars: [code],\n extraJarsFirst: false,\n glueVersion: glue_alpha.GlueVersion.V0_9,\n jobName: 'jobName',\n jobRunQueuingEnabled: false,\n maxConcurrentRuns: 123,\n maxRetries: 123,\n notifyDelayAfter: cdk.Duration.minutes(30),\n securityConfiguration: securityConfiguration,\n sparkUI: {\n bucket: bucket,\n prefix: 'prefix',\n },\n tags: {\n tagsKey: 'tags',\n },\n timeout: cdk.Duration.minutes(30),\n workerConfiguration: {\n numberOfWorkers: 123,\n workerType: glue_alpha.WorkerType.STANDARD,\n },\n});",
19421
19417
  "custom": {
19422
19418
  "exampleMetadata": "fixture=_generated"
19423
19419
  }
@@ -19430,7 +19426,7 @@
19430
19426
  },
19431
19427
  "locationInModule": {
19432
19428
  "filename": "lib/jobs/scala-spark-etl-job.ts",
19433
- "line": 90
19429
+ "line": 89
19434
19430
  },
19435
19431
  "parameters": [
19436
19432
  {
@@ -19456,7 +19452,7 @@
19456
19452
  "kind": "class",
19457
19453
  "locationInModule": {
19458
19454
  "filename": "lib/jobs/scala-spark-etl-job.ts",
19459
- "line": 81
19455
+ "line": 80
19460
19456
  },
19461
19457
  "name": "ScalaSparkEtlJob",
19462
19458
  "properties": [
@@ -19469,7 +19465,7 @@
19469
19465
  "immutable": true,
19470
19466
  "locationInModule": {
19471
19467
  "filename": "lib/jobs/scala-spark-etl-job.ts",
19472
- "line": 84
19468
+ "line": 83
19473
19469
  },
19474
19470
  "name": "PROPERTY_INJECTION_ID",
19475
19471
  "static": true,
@@ -19485,7 +19481,7 @@
19485
19481
  "immutable": true,
19486
19482
  "locationInModule": {
19487
19483
  "filename": "lib/jobs/scala-spark-etl-job.ts",
19488
- "line": 128
19484
+ "line": 123
19489
19485
  },
19490
19486
  "name": "jobArn",
19491
19487
  "overrides": "@aws-cdk/aws-glue-alpha.JobBase",
@@ -19501,7 +19497,7 @@
19501
19497
  "immutable": true,
19502
19498
  "locationInModule": {
19503
19499
  "filename": "lib/jobs/scala-spark-etl-job.ts",
19504
- "line": 133
19500
+ "line": 128
19505
19501
  },
19506
19502
  "name": "jobName",
19507
19503
  "overrides": "@aws-cdk/aws-glue-alpha.JobBase",
@@ -19518,7 +19514,7 @@
19518
19514
  "docs": {
19519
19515
  "stability": "experimental",
19520
19516
  "summary": "Properties for creating a Scala Spark ETL job.",
19521
- "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';\nimport { aws_logs as logs } from 'aws-cdk-lib';\nimport { aws_s3 as s3 } from 'aws-cdk-lib';\n\ndeclare const bucket: s3.Bucket;\ndeclare const code: glue_alpha.Code;\ndeclare const connection: glue_alpha.Connection;\ndeclare const logGroup: logs.LogGroup;\ndeclare const role: iam.Role;\ndeclare const securityConfiguration: glue_alpha.SecurityConfiguration;\nconst scalaSparkEtlJobProps: glue_alpha.ScalaSparkEtlJobProps = {\n className: 'className',\n role: role,\n script: code,\n\n // the properties below are optional\n connections: [connection],\n continuousLogging: {\n enabled: false,\n\n // the properties below are optional\n conversionPattern: 'conversionPattern',\n logGroup: logGroup,\n logStreamPrefix: 'logStreamPrefix',\n quiet: false,\n },\n defaultArguments: {\n defaultArgumentsKey: 'defaultArguments',\n },\n description: 'description',\n enableMetrics: false,\n enableObservabilityMetrics: false,\n enableProfilingMetrics: false,\n extraFiles: [code],\n extraJars: [code],\n extraJarsFirst: false,\n glueVersion: glue_alpha.GlueVersion.V0_9,\n jobName: 'jobName',\n jobRunQueuingEnabled: false,\n maxConcurrentRuns: 123,\n maxRetries: 123,\n notifyDelayAfter: cdk.Duration.minutes(30),\n numberOfWorkers: 123,\n securityConfiguration: securityConfiguration,\n sparkUI: {\n bucket: bucket,\n prefix: 'prefix',\n },\n tags: {\n tagsKey: 'tags',\n },\n timeout: cdk.Duration.minutes(30),\n workerType: glue_alpha.WorkerType.STANDARD,\n};",
19517
+ "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';\nimport { aws_logs as logs } from 'aws-cdk-lib';\nimport { aws_s3 as s3 } from 'aws-cdk-lib';\n\ndeclare const bucket: s3.Bucket;\ndeclare const code: glue_alpha.Code;\ndeclare const connection: glue_alpha.Connection;\ndeclare const logGroup: logs.LogGroup;\ndeclare const role: iam.Role;\ndeclare const securityConfiguration: glue_alpha.SecurityConfiguration;\nconst scalaSparkEtlJobProps: glue_alpha.ScalaSparkEtlJobProps = {\n className: 'className',\n role: role,\n script: code,\n\n // the properties below are optional\n connections: [connection],\n continuousLogging: {\n enabled: false,\n\n // the properties below are optional\n conversionPattern: 'conversionPattern',\n logGroup: logGroup,\n logStreamPrefix: 'logStreamPrefix',\n quiet: false,\n },\n defaultArguments: {\n defaultArgumentsKey: 'defaultArguments',\n },\n description: 'description',\n enableMetrics: false,\n enableObservabilityMetrics: false,\n extraFiles: [code],\n extraJars: [code],\n extraJarsFirst: false,\n glueVersion: glue_alpha.GlueVersion.V0_9,\n jobName: 'jobName',\n jobRunQueuingEnabled: false,\n maxConcurrentRuns: 123,\n maxRetries: 123,\n notifyDelayAfter: cdk.Duration.minutes(30),\n securityConfiguration: securityConfiguration,\n sparkUI: {\n bucket: bucket,\n prefix: 'prefix',\n },\n tags: {\n tagsKey: 'tags',\n },\n timeout: cdk.Duration.minutes(30),\n workerConfiguration: {\n numberOfWorkers: 123,\n workerType: glue_alpha.WorkerType.STANDARD,\n },\n};",
19522
19518
  "custom": {
19523
19519
  "exampleMetadata": "fixture=_generated"
19524
19520
  }
@@ -19530,7 +19526,7 @@
19530
19526
  "kind": "interface",
19531
19527
  "locationInModule": {
19532
19528
  "filename": "lib/jobs/scala-spark-etl-job.ts",
19533
- "line": 16
19529
+ "line": 15
19534
19530
  },
19535
19531
  "name": "ScalaSparkEtlJobProps",
19536
19532
  "properties": [
@@ -19543,7 +19539,7 @@
19543
19539
  "immutable": true,
19544
19540
  "locationInModule": {
19545
19541
  "filename": "lib/jobs/scala-spark-etl-job.ts",
19546
- "line": 22
19542
+ "line": 21
19547
19543
  },
19548
19544
  "name": "className",
19549
19545
  "type": {
@@ -19561,7 +19557,7 @@
19561
19557
  "immutable": true,
19562
19558
  "locationInModule": {
19563
19559
  "filename": "lib/jobs/scala-spark-etl-job.ts",
19564
- "line": 38
19560
+ "line": 37
19565
19561
  },
19566
19562
  "name": "extraFiles",
19567
19563
  "optional": true,
@@ -19584,7 +19580,7 @@
19584
19580
  "immutable": true,
19585
19581
  "locationInModule": {
19586
19582
  "filename": "lib/jobs/scala-spark-etl-job.ts",
19587
- "line": 45
19583
+ "line": 44
19588
19584
  },
19589
19585
  "name": "extraJars",
19590
19586
  "optional": true,
@@ -19608,7 +19604,7 @@
19608
19604
  "immutable": true,
19609
19605
  "locationInModule": {
19610
19606
  "filename": "lib/jobs/scala-spark-etl-job.ts",
19611
- "line": 54
19607
+ "line": 53
19612
19608
  },
19613
19609
  "name": "extraJarsFirst",
19614
19610
  "optional": true,
@@ -19627,7 +19623,7 @@
19627
19623
  "immutable": true,
19628
19624
  "locationInModule": {
19629
19625
  "filename": "lib/jobs/scala-spark-etl-job.ts",
19630
- "line": 66
19626
+ "line": 65
19631
19627
  },
19632
19628
  "name": "jobRunQueuingEnabled",
19633
19629
  "optional": true,
@@ -19646,7 +19642,7 @@
19646
19642
  "immutable": true,
19647
19643
  "locationInModule": {
19648
19644
  "filename": "lib/jobs/scala-spark-etl-job.ts",
19649
- "line": 29
19645
+ "line": 28
19650
19646
  },
19651
19647
  "name": "notifyDelayAfter",
19652
19648
  "optional": true,
@@ -19664,7 +19660,7 @@
19664
19660
  "remarks": "ETL jobs support pySpark and Scala languages, for which there are separate\nbut similar constructors. ETL jobs default to the G2 worker type, but you\ncan override this default with other supported worker type values\n(G1, G2, G4 and G8). ETL jobs defaults to Glue version 4.0, which you can\noverride to 3.0. The following ETL features are enabled by default:\n—enable-metrics, —enable-spark-ui, —enable-continuous-cloudwatch-log.\nYou can find more details about version, worker type and other features\nin Glue's public documentation.",
19665
19661
  "stability": "experimental",
19666
19662
  "summary": "Spark ETL Jobs class.",
19667
- "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';\nimport { aws_logs as logs } from 'aws-cdk-lib';\nimport { aws_s3 as s3 } from 'aws-cdk-lib';\n\ndeclare const bucket: s3.Bucket;\ndeclare const code: glue_alpha.Code;\ndeclare const connection: glue_alpha.Connection;\ndeclare const logGroup: logs.LogGroup;\ndeclare const role: iam.Role;\ndeclare const securityConfiguration: glue_alpha.SecurityConfiguration;\nconst scalaSparkFlexEtlJob = new glue_alpha.ScalaSparkFlexEtlJob(this, 'MyScalaSparkFlexEtlJob', {\n className: 'className',\n role: role,\n script: code,\n\n // the properties below are optional\n connections: [connection],\n continuousLogging: {\n enabled: false,\n\n // the properties below are optional\n conversionPattern: 'conversionPattern',\n logGroup: logGroup,\n logStreamPrefix: 'logStreamPrefix',\n quiet: false,\n },\n defaultArguments: {\n defaultArgumentsKey: 'defaultArguments',\n },\n description: 'description',\n enableMetrics: false,\n enableObservabilityMetrics: false,\n enableProfilingMetrics: false,\n extraFiles: [code],\n extraJars: [code],\n extraJarsFirst: false,\n glueVersion: glue_alpha.GlueVersion.V0_9,\n jobName: 'jobName',\n maxConcurrentRuns: 123,\n maxRetries: 123,\n notifyDelayAfter: cdk.Duration.minutes(30),\n numberOfWorkers: 123,\n securityConfiguration: securityConfiguration,\n sparkUI: {\n bucket: bucket,\n prefix: 'prefix',\n },\n tags: {\n tagsKey: 'tags',\n },\n timeout: cdk.Duration.minutes(30),\n workerType: glue_alpha.WorkerType.STANDARD,\n});",
19663
+ "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';\nimport { aws_logs as logs } from 'aws-cdk-lib';\nimport { aws_s3 as s3 } from 'aws-cdk-lib';\n\ndeclare const bucket: s3.Bucket;\ndeclare const code: glue_alpha.Code;\ndeclare const connection: glue_alpha.Connection;\ndeclare const logGroup: logs.LogGroup;\ndeclare const role: iam.Role;\ndeclare const securityConfiguration: glue_alpha.SecurityConfiguration;\nconst scalaSparkFlexEtlJob = new glue_alpha.ScalaSparkFlexEtlJob(this, 'MyScalaSparkFlexEtlJob', {\n className: 'className',\n role: role,\n script: code,\n\n // the properties below are optional\n connections: [connection],\n continuousLogging: {\n enabled: false,\n\n // the properties below are optional\n conversionPattern: 'conversionPattern',\n logGroup: logGroup,\n logStreamPrefix: 'logStreamPrefix',\n quiet: false,\n },\n defaultArguments: {\n defaultArgumentsKey: 'defaultArguments',\n },\n description: 'description',\n enableMetrics: false,\n enableObservabilityMetrics: false,\n extraFiles: [code],\n extraJars: [code],\n extraJarsFirst: false,\n glueVersion: glue_alpha.GlueVersion.V0_9,\n jobName: 'jobName',\n maxConcurrentRuns: 123,\n maxRetries: 123,\n notifyDelayAfter: cdk.Duration.minutes(30),\n securityConfiguration: securityConfiguration,\n sparkUI: {\n bucket: bucket,\n prefix: 'prefix',\n },\n tags: {\n tagsKey: 'tags',\n },\n timeout: cdk.Duration.minutes(30),\n workerConfiguration: {\n numberOfWorkers: 123,\n workerType: glue_alpha.WorkerType.STANDARD,\n },\n});",
19668
19664
  "custom": {
19669
19665
  "exampleMetadata": "fixture=_generated"
19670
19666
  }
@@ -19766,7 +19762,7 @@
19766
19762
  "remarks": "Flex jobs supports Python and Scala language.\nThe flexible execution class is appropriate for non-urgent jobs such as\npre-production jobs, testing, and one-time data loads.\nFlexible job runs are supported for jobs using AWS Glue version 3.0 or later and G.1X or\nG.2X worker types but will default to the latest version of Glue (currently Glue 3.0.)\n\nSimilar to ETL, we’ll enable these features: —enable-metrics, —enable-spark-ui,\n—enable-continuous-cloudwatch-log",
19767
19763
  "stability": "experimental",
19768
19764
  "summary": "Flex Jobs class.",
19769
- "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';\nimport { aws_logs as logs } from 'aws-cdk-lib';\nimport { aws_s3 as s3 } from 'aws-cdk-lib';\n\ndeclare const bucket: s3.Bucket;\ndeclare const code: glue_alpha.Code;\ndeclare const connection: glue_alpha.Connection;\ndeclare const logGroup: logs.LogGroup;\ndeclare const role: iam.Role;\ndeclare const securityConfiguration: glue_alpha.SecurityConfiguration;\nconst scalaSparkFlexEtlJobProps: glue_alpha.ScalaSparkFlexEtlJobProps = {\n className: 'className',\n role: role,\n script: code,\n\n // the properties below are optional\n connections: [connection],\n continuousLogging: {\n enabled: false,\n\n // the properties below are optional\n conversionPattern: 'conversionPattern',\n logGroup: logGroup,\n logStreamPrefix: 'logStreamPrefix',\n quiet: false,\n },\n defaultArguments: {\n defaultArgumentsKey: 'defaultArguments',\n },\n description: 'description',\n enableMetrics: false,\n enableObservabilityMetrics: false,\n enableProfilingMetrics: false,\n extraFiles: [code],\n extraJars: [code],\n extraJarsFirst: false,\n glueVersion: glue_alpha.GlueVersion.V0_9,\n jobName: 'jobName',\n maxConcurrentRuns: 123,\n maxRetries: 123,\n notifyDelayAfter: cdk.Duration.minutes(30),\n numberOfWorkers: 123,\n securityConfiguration: securityConfiguration,\n sparkUI: {\n bucket: bucket,\n prefix: 'prefix',\n },\n tags: {\n tagsKey: 'tags',\n },\n timeout: cdk.Duration.minutes(30),\n workerType: glue_alpha.WorkerType.STANDARD,\n};",
19765
+ "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';\nimport { aws_logs as logs } from 'aws-cdk-lib';\nimport { aws_s3 as s3 } from 'aws-cdk-lib';\n\ndeclare const bucket: s3.Bucket;\ndeclare const code: glue_alpha.Code;\ndeclare const connection: glue_alpha.Connection;\ndeclare const logGroup: logs.LogGroup;\ndeclare const role: iam.Role;\ndeclare const securityConfiguration: glue_alpha.SecurityConfiguration;\nconst scalaSparkFlexEtlJobProps: glue_alpha.ScalaSparkFlexEtlJobProps = {\n className: 'className',\n role: role,\n script: code,\n\n // the properties below are optional\n connections: [connection],\n continuousLogging: {\n enabled: false,\n\n // the properties below are optional\n conversionPattern: 'conversionPattern',\n logGroup: logGroup,\n logStreamPrefix: 'logStreamPrefix',\n quiet: false,\n },\n defaultArguments: {\n defaultArgumentsKey: 'defaultArguments',\n },\n description: 'description',\n enableMetrics: false,\n enableObservabilityMetrics: false,\n extraFiles: [code],\n extraJars: [code],\n extraJarsFirst: false,\n glueVersion: glue_alpha.GlueVersion.V0_9,\n jobName: 'jobName',\n maxConcurrentRuns: 123,\n maxRetries: 123,\n notifyDelayAfter: cdk.Duration.minutes(30),\n securityConfiguration: securityConfiguration,\n sparkUI: {\n bucket: bucket,\n prefix: 'prefix',\n },\n tags: {\n tagsKey: 'tags',\n },\n timeout: cdk.Duration.minutes(30),\n workerConfiguration: {\n numberOfWorkers: 123,\n workerType: glue_alpha.WorkerType.STANDARD,\n },\n};",
19770
19766
  "custom": {
19771
19767
  "exampleMetadata": "fixture=_generated"
19772
19768
  }
@@ -19894,7 +19890,7 @@
19894
19890
  "remarks": "A Streaming job is similar to an ETL job, except that it performs ETL on data streams\nusing the Apache Spark Structured Streaming framework.\nThese jobs will default to use Python 3.9.\n\nSimilar to ETL jobs, streaming job supports Scala and Python languages. Similar to ETL,\nit supports G1 and G2 worker type and 2.0, 3.0 and 4.0 version. We’ll default to G2 worker\nand 4.0 version for streaming jobs which developers can override.\nWe will enable —enable-metrics, —enable-spark-ui, —enable-continuous-cloudwatch-log.",
19895
19891
  "stability": "experimental",
19896
19892
  "summary": "Scala Streaming Jobs class.",
19897
- "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';\nimport { aws_logs as logs } from 'aws-cdk-lib';\nimport { aws_s3 as s3 } from 'aws-cdk-lib';\n\ndeclare const bucket: s3.Bucket;\ndeclare const code: glue_alpha.Code;\ndeclare const connection: glue_alpha.Connection;\ndeclare const logGroup: logs.LogGroup;\ndeclare const role: iam.Role;\ndeclare const securityConfiguration: glue_alpha.SecurityConfiguration;\nconst scalaSparkStreamingJob = new glue_alpha.ScalaSparkStreamingJob(this, 'MyScalaSparkStreamingJob', {\n className: 'className',\n role: role,\n script: code,\n\n // the properties below are optional\n connections: [connection],\n continuousLogging: {\n enabled: false,\n\n // the properties below are optional\n conversionPattern: 'conversionPattern',\n logGroup: logGroup,\n logStreamPrefix: 'logStreamPrefix',\n quiet: false,\n },\n defaultArguments: {\n defaultArgumentsKey: 'defaultArguments',\n },\n description: 'description',\n enableMetrics: false,\n enableObservabilityMetrics: false,\n enableProfilingMetrics: false,\n extraFiles: [code],\n extraJars: [code],\n extraJarsFirst: false,\n glueVersion: glue_alpha.GlueVersion.V0_9,\n jobName: 'jobName',\n jobRunQueuingEnabled: false,\n maxConcurrentRuns: 123,\n maxRetries: 123,\n numberOfWorkers: 123,\n securityConfiguration: securityConfiguration,\n sparkUI: {\n bucket: bucket,\n prefix: 'prefix',\n },\n tags: {\n tagsKey: 'tags',\n },\n timeout: cdk.Duration.minutes(30),\n workerType: glue_alpha.WorkerType.STANDARD,\n});",
19893
+ "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';\nimport { aws_logs as logs } from 'aws-cdk-lib';\nimport { aws_s3 as s3 } from 'aws-cdk-lib';\n\ndeclare const bucket: s3.Bucket;\ndeclare const code: glue_alpha.Code;\ndeclare const connection: glue_alpha.Connection;\ndeclare const logGroup: logs.LogGroup;\ndeclare const role: iam.Role;\ndeclare const securityConfiguration: glue_alpha.SecurityConfiguration;\nconst scalaSparkStreamingJob = new glue_alpha.ScalaSparkStreamingJob(this, 'MyScalaSparkStreamingJob', {\n className: 'className',\n role: role,\n script: code,\n\n // the properties below are optional\n connections: [connection],\n continuousLogging: {\n enabled: false,\n\n // the properties below are optional\n conversionPattern: 'conversionPattern',\n logGroup: logGroup,\n logStreamPrefix: 'logStreamPrefix',\n quiet: false,\n },\n defaultArguments: {\n defaultArgumentsKey: 'defaultArguments',\n },\n description: 'description',\n enableMetrics: false,\n enableObservabilityMetrics: false,\n extraFiles: [code],\n extraJars: [code],\n extraJarsFirst: false,\n glueVersion: glue_alpha.GlueVersion.V0_9,\n jobName: 'jobName',\n jobRunQueuingEnabled: false,\n maxConcurrentRuns: 123,\n maxRetries: 123,\n securityConfiguration: securityConfiguration,\n sparkUI: {\n bucket: bucket,\n prefix: 'prefix',\n },\n tags: {\n tagsKey: 'tags',\n },\n timeout: cdk.Duration.minutes(30),\n workerConfiguration: {\n numberOfWorkers: 123,\n workerType: glue_alpha.WorkerType.STANDARD,\n },\n});",
19898
19894
  "custom": {
19899
19895
  "exampleMetadata": "fixture=_generated"
19900
19896
  }
@@ -19907,7 +19903,7 @@
19907
19903
  },
19908
19904
  "locationInModule": {
19909
19905
  "filename": "lib/jobs/scala-spark-streaming-job.ts",
19910
- "line": 82
19906
+ "line": 81
19911
19907
  },
19912
19908
  "parameters": [
19913
19909
  {
@@ -19933,7 +19929,7 @@
19933
19929
  "kind": "class",
19934
19930
  "locationInModule": {
19935
19931
  "filename": "lib/jobs/scala-spark-streaming-job.ts",
19936
- "line": 73
19932
+ "line": 72
19937
19933
  },
19938
19934
  "name": "ScalaSparkStreamingJob",
19939
19935
  "properties": [
@@ -19946,7 +19942,7 @@
19946
19942
  "immutable": true,
19947
19943
  "locationInModule": {
19948
19944
  "filename": "lib/jobs/scala-spark-streaming-job.ts",
19949
- "line": 76
19945
+ "line": 75
19950
19946
  },
19951
19947
  "name": "PROPERTY_INJECTION_ID",
19952
19948
  "static": true,
@@ -19962,7 +19958,7 @@
19962
19958
  "immutable": true,
19963
19959
  "locationInModule": {
19964
19960
  "filename": "lib/jobs/scala-spark-streaming-job.ts",
19965
- "line": 119
19961
+ "line": 114
19966
19962
  },
19967
19963
  "name": "jobArn",
19968
19964
  "overrides": "@aws-cdk/aws-glue-alpha.JobBase",
@@ -19978,7 +19974,7 @@
19978
19974
  "immutable": true,
19979
19975
  "locationInModule": {
19980
19976
  "filename": "lib/jobs/scala-spark-streaming-job.ts",
19981
- "line": 124
19977
+ "line": 119
19982
19978
  },
19983
19979
  "name": "jobName",
19984
19980
  "overrides": "@aws-cdk/aws-glue-alpha.JobBase",
@@ -19995,7 +19991,7 @@
19995
19991
  "docs": {
19996
19992
  "stability": "experimental",
19997
19993
  "summary": "Properties for creating a Scala Spark ETL job.",
19998
- "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';\nimport { aws_logs as logs } from 'aws-cdk-lib';\nimport { aws_s3 as s3 } from 'aws-cdk-lib';\n\ndeclare const bucket: s3.Bucket;\ndeclare const code: glue_alpha.Code;\ndeclare const connection: glue_alpha.Connection;\ndeclare const logGroup: logs.LogGroup;\ndeclare const role: iam.Role;\ndeclare const securityConfiguration: glue_alpha.SecurityConfiguration;\nconst scalaSparkStreamingJobProps: glue_alpha.ScalaSparkStreamingJobProps = {\n className: 'className',\n role: role,\n script: code,\n\n // the properties below are optional\n connections: [connection],\n continuousLogging: {\n enabled: false,\n\n // the properties below are optional\n conversionPattern: 'conversionPattern',\n logGroup: logGroup,\n logStreamPrefix: 'logStreamPrefix',\n quiet: false,\n },\n defaultArguments: {\n defaultArgumentsKey: 'defaultArguments',\n },\n description: 'description',\n enableMetrics: false,\n enableObservabilityMetrics: false,\n enableProfilingMetrics: false,\n extraFiles: [code],\n extraJars: [code],\n extraJarsFirst: false,\n glueVersion: glue_alpha.GlueVersion.V0_9,\n jobName: 'jobName',\n jobRunQueuingEnabled: false,\n maxConcurrentRuns: 123,\n maxRetries: 123,\n numberOfWorkers: 123,\n securityConfiguration: securityConfiguration,\n sparkUI: {\n bucket: bucket,\n prefix: 'prefix',\n },\n tags: {\n tagsKey: 'tags',\n },\n timeout: cdk.Duration.minutes(30),\n workerType: glue_alpha.WorkerType.STANDARD,\n};",
19994
+ "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';\nimport { aws_logs as logs } from 'aws-cdk-lib';\nimport { aws_s3 as s3 } from 'aws-cdk-lib';\n\ndeclare const bucket: s3.Bucket;\ndeclare const code: glue_alpha.Code;\ndeclare const connection: glue_alpha.Connection;\ndeclare const logGroup: logs.LogGroup;\ndeclare const role: iam.Role;\ndeclare const securityConfiguration: glue_alpha.SecurityConfiguration;\nconst scalaSparkStreamingJobProps: glue_alpha.ScalaSparkStreamingJobProps = {\n className: 'className',\n role: role,\n script: code,\n\n // the properties below are optional\n connections: [connection],\n continuousLogging: {\n enabled: false,\n\n // the properties below are optional\n conversionPattern: 'conversionPattern',\n logGroup: logGroup,\n logStreamPrefix: 'logStreamPrefix',\n quiet: false,\n },\n defaultArguments: {\n defaultArgumentsKey: 'defaultArguments',\n },\n description: 'description',\n enableMetrics: false,\n enableObservabilityMetrics: false,\n extraFiles: [code],\n extraJars: [code],\n extraJarsFirst: false,\n glueVersion: glue_alpha.GlueVersion.V0_9,\n jobName: 'jobName',\n jobRunQueuingEnabled: false,\n maxConcurrentRuns: 123,\n maxRetries: 123,\n securityConfiguration: securityConfiguration,\n sparkUI: {\n bucket: bucket,\n prefix: 'prefix',\n },\n tags: {\n tagsKey: 'tags',\n },\n timeout: cdk.Duration.minutes(30),\n workerConfiguration: {\n numberOfWorkers: 123,\n workerType: glue_alpha.WorkerType.STANDARD,\n },\n};",
19999
19995
  "custom": {
20000
19996
  "exampleMetadata": "fixture=_generated"
20001
19997
  }
@@ -20007,7 +20003,7 @@
20007
20003
  "kind": "interface",
20008
20004
  "locationInModule": {
20009
20005
  "filename": "lib/jobs/scala-spark-streaming-job.ts",
20010
- "line": 15
20006
+ "line": 14
20011
20007
  },
20012
20008
  "name": "ScalaSparkStreamingJobProps",
20013
20009
  "properties": [
@@ -20020,7 +20016,7 @@
20020
20016
  "immutable": true,
20021
20017
  "locationInModule": {
20022
20018
  "filename": "lib/jobs/scala-spark-streaming-job.ts",
20023
- "line": 21
20019
+ "line": 20
20024
20020
  },
20025
20021
  "name": "className",
20026
20022
  "type": {
@@ -20038,7 +20034,7 @@
20038
20034
  "immutable": true,
20039
20035
  "locationInModule": {
20040
20036
  "filename": "lib/jobs/scala-spark-streaming-job.ts",
20041
- "line": 30
20037
+ "line": 29
20042
20038
  },
20043
20039
  "name": "extraFiles",
20044
20040
  "optional": true,
@@ -20061,7 +20057,7 @@
20061
20057
  "immutable": true,
20062
20058
  "locationInModule": {
20063
20059
  "filename": "lib/jobs/scala-spark-streaming-job.ts",
20064
- "line": 37
20060
+ "line": 36
20065
20061
  },
20066
20062
  "name": "extraJars",
20067
20063
  "optional": true,
@@ -20085,7 +20081,7 @@
20085
20081
  "immutable": true,
20086
20082
  "locationInModule": {
20087
20083
  "filename": "lib/jobs/scala-spark-streaming-job.ts",
20088
- "line": 46
20084
+ "line": 45
20089
20085
  },
20090
20086
  "name": "extraJarsFirst",
20091
20087
  "optional": true,
@@ -20104,7 +20100,7 @@
20104
20100
  "immutable": true,
20105
20101
  "locationInModule": {
20106
20102
  "filename": "lib/jobs/scala-spark-streaming-job.ts",
20107
- "line": 58
20103
+ "line": 57
20108
20104
  },
20109
20105
  "name": "jobRunQueuingEnabled",
20110
20106
  "optional": true,
@@ -20120,7 +20116,7 @@
20120
20116
  "docs": {
20121
20117
  "see": "https://docs.aws.amazon.com/athena/latest/ug/data-types.html",
20122
20118
  "stability": "experimental",
20123
- "example": "declare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'data',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'date',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n partitionProjection: {\n date: glue.PartitionProjectionConfiguration.date({\n min: 'NOW-3YEARS',\n max: 'NOW',\n format: 'yyyy-MM-dd',\n }),\n },\n});",
20119
+ "example": "declare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'col1',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'year',\n type: glue.Schema.SMALL_INT,\n }, {\n name: 'month',\n type: glue.Schema.SMALL_INT,\n }],\n dataFormat: glue.DataFormat.JSON,\n enablePartitionFiltering: true,\n});",
20124
20120
  "custom": {
20125
20121
  "exampleMetadata": "infused"
20126
20122
  }
@@ -20526,7 +20522,7 @@
20526
20522
  "remarks": "The following scenarios show some of the ways that you can use a security configuration.\n- Attach a security configuration to an AWS Glue crawler to write encrypted Amazon CloudWatch Logs.\n- Attach a security configuration to an extract, transform, and load (ETL) job to write encrypted Amazon Simple Storage Service (Amazon S3) targets and encrypted CloudWatch Logs.\n- Attach a security configuration to an ETL job to write its jobs bookmarks as encrypted Amazon S3 data.\n- Attach a security configuration to a development endpoint to write encrypted Amazon S3 targets.",
20527
20523
  "stability": "experimental",
20528
20524
  "summary": "A security configuration is a set of security properties that can be used by AWS Glue to encrypt data at rest.",
20529
- "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkEtlJob(stack, 'PySparkETLJob', {\n jobName: 'PySparkETLJobCustomName',\n description: 'This is a description',\n role,\n script,\n glueVersion: glue.GlueVersion.V5_1,\n continuousLogging: { enabled: false },\n workerType: glue.WorkerType.G_2X,\n maxConcurrentRuns: 100,\n timeout: cdk.Duration.hours(2),\n connections: [glue.Connection.fromConnectionName(stack, 'Connection', 'connectionName')],\n securityConfiguration: glue.SecurityConfiguration.fromSecurityConfigurationName(stack, 'SecurityConfig', 'securityConfigName'),\n tags: {\n FirstTagName: 'FirstTagValue',\n SecondTagName: 'SecondTagValue',\n XTagName: 'XTagValue',\n },\n numberOfWorkers: 2,\n maxRetries: 2,\n});",
20525
+ "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkEtlJob(stack, 'PySparkETLJob', {\n jobName: 'PySparkETLJobCustomName',\n description: 'This is a description',\n role,\n script,\n glueVersion: glue.GlueVersion.V5_1,\n continuousLogging: { enabled: false },\n workerConfiguration: {\n workerType: glue.WorkerType.G_2X,\n numberOfWorkers: 2,\n },\n maxConcurrentRuns: 100,\n timeout: cdk.Duration.hours(2),\n connections: [glue.Connection.fromConnectionName(stack, 'Connection', 'connectionName')],\n securityConfiguration: glue.SecurityConfiguration.fromSecurityConfigurationName(stack, 'SecurityConfig', 'securityConfigName'),\n tags: {\n FirstTagName: 'FirstTagValue',\n SecondTagName: 'SecondTagValue',\n XTagName: 'XTagValue',\n },\n maxRetries: 2,\n});",
20530
20526
  "custom": {
20531
20527
  "exampleMetadata": "infused"
20532
20528
  }
@@ -20538,7 +20534,7 @@
20538
20534
  },
20539
20535
  "locationInModule": {
20540
20536
  "filename": "lib/security-configuration.ts",
20541
- "line": 191
20537
+ "line": 214
20542
20538
  },
20543
20539
  "parameters": [
20544
20540
  {
@@ -20568,7 +20564,7 @@
20568
20564
  "kind": "class",
20569
20565
  "locationInModule": {
20570
20566
  "filename": "lib/security-configuration.ts",
20571
- "line": 154
20567
+ "line": 177
20572
20568
  },
20573
20569
  "methods": [
20574
20570
  {
@@ -20578,7 +20574,7 @@
20578
20574
  },
20579
20575
  "locationInModule": {
20580
20576
  "filename": "lib/security-configuration.ts",
20581
- "line": 166
20577
+ "line": 189
20582
20578
  },
20583
20579
  "name": "fromSecurityConfigurationName",
20584
20580
  "parameters": [
@@ -20629,7 +20625,7 @@
20629
20625
  "immutable": true,
20630
20626
  "locationInModule": {
20631
20627
  "filename": "lib/security-configuration.ts",
20632
- "line": 157
20628
+ "line": 180
20633
20629
  },
20634
20630
  "name": "PROPERTY_INJECTION_ID",
20635
20631
  "static": true,
@@ -20645,7 +20641,7 @@
20645
20641
  "immutable": true,
20646
20642
  "locationInModule": {
20647
20643
  "filename": "lib/security-configuration.ts",
20648
- "line": 253
20644
+ "line": 278
20649
20645
  },
20650
20646
  "name": "securityConfigurationName",
20651
20647
  "overrides": "@aws-cdk/aws-glue-alpha.ISecurityConfiguration",
@@ -20661,7 +20657,7 @@
20661
20657
  "immutable": true,
20662
20658
  "locationInModule": {
20663
20659
  "filename": "lib/security-configuration.ts",
20664
- "line": 177
20660
+ "line": 200
20665
20661
  },
20666
20662
  "name": "cloudWatchEncryptionKey",
20667
20663
  "optional": true,
@@ -20677,7 +20673,7 @@
20677
20673
  "immutable": true,
20678
20674
  "locationInModule": {
20679
20675
  "filename": "lib/security-configuration.ts",
20680
- "line": 182
20676
+ "line": 205
20681
20677
  },
20682
20678
  "name": "jobBookmarksEncryptionKey",
20683
20679
  "optional": true,
@@ -20693,7 +20689,7 @@
20693
20689
  "immutable": true,
20694
20690
  "locationInModule": {
20695
20691
  "filename": "lib/security-configuration.ts",
20696
- "line": 187
20692
+ "line": 210
20697
20693
  },
20698
20694
  "name": "s3EncryptionKey",
20699
20695
  "optional": true,
@@ -20710,7 +20706,7 @@
20710
20706
  "docs": {
20711
20707
  "stability": "experimental",
20712
20708
  "summary": "Constructions properties of `SecurityConfiguration`.",
20713
- "example": "new 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});",
20709
+ "example": "new glue.SecurityConfiguration(this, 'MySecurityConfiguration', {\n cloudWatchEncryption: glue.CloudWatchEncryption.kms(),\n jobBookmarksEncryption: glue.JobBookmarksEncryption.clientSideKms(),\n s3Encryption: glue.S3Encryption.kms(),\n});",
20714
20710
  "custom": {
20715
20711
  "exampleMetadata": "infused"
20716
20712
  }
@@ -20719,7 +20715,7 @@
20719
20715
  "kind": "interface",
20720
20716
  "locationInModule": {
20721
20717
  "filename": "lib/security-configuration.ts",
20722
- "line": 118
20718
+ "line": 134
20723
20719
  },
20724
20720
  "name": "SecurityConfigurationProps",
20725
20721
  "properties": [
@@ -20733,7 +20729,7 @@
20733
20729
  "immutable": true,
20734
20730
  "locationInModule": {
20735
20731
  "filename": "lib/security-configuration.ts",
20736
- "line": 130
20732
+ "line": 146
20737
20733
  },
20738
20734
  "name": "cloudWatchEncryption",
20739
20735
  "optional": true,
@@ -20751,7 +20747,7 @@
20751
20747
  "immutable": true,
20752
20748
  "locationInModule": {
20753
20749
  "filename": "lib/security-configuration.ts",
20754
- "line": 136
20750
+ "line": 152
20755
20751
  },
20756
20752
  "name": "jobBookmarksEncryption",
20757
20753
  "optional": true,
@@ -20759,6 +20755,24 @@
20759
20755
  "fqn": "@aws-cdk/aws-glue-alpha.JobBookmarksEncryption"
20760
20756
  }
20761
20757
  },
20758
+ {
20759
+ "abstract": true,
20760
+ "docs": {
20761
+ "default": "- resource will be destroyed",
20762
+ "stability": "experimental",
20763
+ "summary": "Policy to apply when the security configuration is removed from the stack."
20764
+ },
20765
+ "immutable": true,
20766
+ "locationInModule": {
20767
+ "filename": "lib/security-configuration.ts",
20768
+ "line": 165
20769
+ },
20770
+ "name": "removalPolicy",
20771
+ "optional": true,
20772
+ "type": {
20773
+ "fqn": "aws-cdk-lib.RemovalPolicy"
20774
+ }
20775
+ },
20762
20776
  {
20763
20777
  "abstract": true,
20764
20778
  "docs": {
@@ -20769,7 +20783,7 @@
20769
20783
  "immutable": true,
20770
20784
  "locationInModule": {
20771
20785
  "filename": "lib/security-configuration.ts",
20772
- "line": 142
20786
+ "line": 158
20773
20787
  },
20774
20788
  "name": "s3Encryption",
20775
20789
  "optional": true,
@@ -20787,7 +20801,7 @@
20787
20801
  "immutable": true,
20788
20802
  "locationInModule": {
20789
20803
  "filename": "lib/security-configuration.ts",
20790
- "line": 124
20804
+ "line": 140
20791
20805
  },
20792
20806
  "name": "securityConfigurationName",
20793
20807
  "optional": true,
@@ -21036,7 +21050,7 @@
21036
21050
  "kind": "interface",
21037
21051
  "locationInModule": {
21038
21052
  "filename": "lib/jobs/spark-job.ts",
21039
- "line": 15
21053
+ "line": 16
21040
21054
  },
21041
21055
  "name": "SparkExtraCodeProps",
21042
21056
  "properties": [
@@ -21051,7 +21065,7 @@
21051
21065
  "immutable": true,
21052
21066
  "locationInModule": {
21053
21067
  "filename": "lib/jobs/spark-job.ts",
21054
- "line": 31
21068
+ "line": 32
21055
21069
  },
21056
21070
  "name": "extraFiles",
21057
21071
  "optional": true,
@@ -21074,7 +21088,7 @@
21074
21088
  "immutable": true,
21075
21089
  "locationInModule": {
21076
21090
  "filename": "lib/jobs/spark-job.ts",
21077
- "line": 38
21091
+ "line": 39
21078
21092
  },
21079
21093
  "name": "extraJars",
21080
21094
  "optional": true,
@@ -21098,7 +21112,7 @@
21098
21112
  "immutable": true,
21099
21113
  "locationInModule": {
21100
21114
  "filename": "lib/jobs/spark-job.ts",
21101
- "line": 47
21115
+ "line": 48
21102
21116
  },
21103
21117
  "name": "extraJarsFirst",
21104
21118
  "optional": true,
@@ -21116,7 +21130,7 @@
21116
21130
  "immutable": true,
21117
21131
  "locationInModule": {
21118
21132
  "filename": "lib/jobs/spark-job.ts",
21119
- "line": 22
21133
+ "line": 23
21120
21134
  },
21121
21135
  "name": "extraPythonFiles",
21122
21136
  "optional": true,
@@ -21151,7 +21165,7 @@
21151
21165
  },
21152
21166
  "locationInModule": {
21153
21167
  "filename": "lib/jobs/spark-job.ts",
21154
- "line": 141
21168
+ "line": 170
21155
21169
  },
21156
21170
  "parameters": [
21157
21171
  {
@@ -21177,7 +21191,7 @@
21177
21191
  "kind": "class",
21178
21192
  "locationInModule": {
21179
21193
  "filename": "lib/jobs/spark-job.ts",
21180
- "line": 129
21194
+ "line": 158
21181
21195
  },
21182
21196
  "methods": [
21183
21197
  {
@@ -21186,7 +21200,7 @@
21186
21200
  },
21187
21201
  "locationInModule": {
21188
21202
  "filename": "lib/jobs/spark-job.ts",
21189
- "line": 154
21203
+ "line": 183
21190
21204
  },
21191
21205
  "name": "nonExecutableCommonArguments",
21192
21206
  "parameters": [
@@ -21216,7 +21230,7 @@
21216
21230
  },
21217
21231
  "locationInModule": {
21218
21232
  "filename": "lib/jobs/spark-job.ts",
21219
- "line": 180
21233
+ "line": 209
21220
21234
  },
21221
21235
  "name": "setupExtraCodeArguments",
21222
21236
  "parameters": [
@@ -21251,7 +21265,7 @@
21251
21265
  "immutable": true,
21252
21266
  "locationInModule": {
21253
21267
  "filename": "lib/jobs/spark-job.ts",
21254
- "line": 131
21268
+ "line": 160
21255
21269
  },
21256
21270
  "name": "grantPrincipal",
21257
21271
  "overrides": "@aws-cdk/aws-glue-alpha.JobBase",
@@ -21267,7 +21281,7 @@
21267
21281
  "immutable": true,
21268
21282
  "locationInModule": {
21269
21283
  "filename": "lib/jobs/spark-job.ts",
21270
- "line": 130
21284
+ "line": 159
21271
21285
  },
21272
21286
  "name": "role",
21273
21287
  "overrides": "@aws-cdk/aws-glue-alpha.Job",
@@ -21284,7 +21298,7 @@
21284
21298
  "immutable": true,
21285
21299
  "locationInModule": {
21286
21300
  "filename": "lib/jobs/spark-job.ts",
21287
- "line": 139
21301
+ "line": 168
21288
21302
  },
21289
21303
  "name": "sparkUILoggingLocation",
21290
21304
  "optional": true,
@@ -21301,7 +21315,7 @@
21301
21315
  "docs": {
21302
21316
  "stability": "experimental",
21303
21317
  "summary": "Common properties for different types of Spark jobs.",
21304
- "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';\nimport { aws_logs as logs } from 'aws-cdk-lib';\nimport { aws_s3 as s3 } from 'aws-cdk-lib';\n\ndeclare const bucket: s3.Bucket;\ndeclare const code: glue_alpha.Code;\ndeclare const connection: glue_alpha.Connection;\ndeclare const logGroup: logs.LogGroup;\ndeclare const role: iam.Role;\ndeclare const securityConfiguration: glue_alpha.SecurityConfiguration;\nconst sparkJobProps: glue_alpha.SparkJobProps = {\n role: role,\n script: code,\n\n // the properties below are optional\n connections: [connection],\n continuousLogging: {\n enabled: false,\n\n // the properties below are optional\n conversionPattern: 'conversionPattern',\n logGroup: logGroup,\n logStreamPrefix: 'logStreamPrefix',\n quiet: false,\n },\n defaultArguments: {\n defaultArgumentsKey: 'defaultArguments',\n },\n description: 'description',\n enableMetrics: false,\n enableObservabilityMetrics: false,\n enableProfilingMetrics: false,\n glueVersion: glue_alpha.GlueVersion.V0_9,\n jobName: 'jobName',\n maxConcurrentRuns: 123,\n maxRetries: 123,\n numberOfWorkers: 123,\n securityConfiguration: securityConfiguration,\n sparkUI: {\n bucket: bucket,\n prefix: 'prefix',\n },\n tags: {\n tagsKey: 'tags',\n },\n timeout: cdk.Duration.minutes(30),\n workerType: glue_alpha.WorkerType.STANDARD,\n};",
21318
+ "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';\nimport { aws_logs as logs } from 'aws-cdk-lib';\nimport { aws_s3 as s3 } from 'aws-cdk-lib';\n\ndeclare const bucket: s3.Bucket;\ndeclare const code: glue_alpha.Code;\ndeclare const connection: glue_alpha.Connection;\ndeclare const logGroup: logs.LogGroup;\ndeclare const role: iam.Role;\ndeclare const securityConfiguration: glue_alpha.SecurityConfiguration;\nconst sparkJobProps: glue_alpha.SparkJobProps = {\n role: role,\n script: code,\n\n // the properties below are optional\n connections: [connection],\n continuousLogging: {\n enabled: false,\n\n // the properties below are optional\n conversionPattern: 'conversionPattern',\n logGroup: logGroup,\n logStreamPrefix: 'logStreamPrefix',\n quiet: false,\n },\n defaultArguments: {\n defaultArgumentsKey: 'defaultArguments',\n },\n description: 'description',\n enableMetrics: false,\n enableObservabilityMetrics: false,\n glueVersion: glue_alpha.GlueVersion.V0_9,\n jobName: 'jobName',\n maxConcurrentRuns: 123,\n maxRetries: 123,\n securityConfiguration: securityConfiguration,\n sparkUI: {\n bucket: bucket,\n prefix: 'prefix',\n },\n tags: {\n tagsKey: 'tags',\n },\n timeout: cdk.Duration.minutes(30),\n workerConfiguration: {\n numberOfWorkers: 123,\n workerType: glue_alpha.WorkerType.STANDARD,\n },\n};",
21305
21319
  "custom": {
21306
21320
  "exampleMetadata": "fixture=_generated"
21307
21321
  }
@@ -21313,7 +21327,7 @@
21313
21327
  "kind": "interface",
21314
21328
  "locationInModule": {
21315
21329
  "filename": "lib/jobs/spark-job.ts",
21316
- "line": 96
21330
+ "line": 118
21317
21331
  },
21318
21332
  "name": "SparkJobProps",
21319
21333
  "properties": [
@@ -21328,7 +21342,7 @@
21328
21342
  "immutable": true,
21329
21343
  "locationInModule": {
21330
21344
  "filename": "lib/jobs/spark-job.ts",
21331
- "line": 114
21345
+ "line": 143
21332
21346
  },
21333
21347
  "name": "enableMetrics",
21334
21348
  "optional": true,
@@ -21347,7 +21361,7 @@
21347
21361
  "immutable": true,
21348
21362
  "locationInModule": {
21349
21363
  "filename": "lib/jobs/spark-job.ts",
21350
- "line": 123
21364
+ "line": 152
21351
21365
  },
21352
21366
  "name": "enableObservabilityMetrics",
21353
21367
  "optional": true,
@@ -21366,13 +21380,31 @@
21366
21380
  "immutable": true,
21367
21381
  "locationInModule": {
21368
21382
  "filename": "lib/jobs/spark-job.ts",
21369
- "line": 105
21383
+ "line": 134
21370
21384
  },
21371
21385
  "name": "sparkUI",
21372
21386
  "optional": true,
21373
21387
  "type": {
21374
21388
  "fqn": "@aws-cdk/aws-glue-alpha.SparkUIProps"
21375
21389
  }
21390
+ },
21391
+ {
21392
+ "abstract": true,
21393
+ "docs": {
21394
+ "default": "- the job runs with the G_1X worker type and 10 workers.",
21395
+ "stability": "experimental",
21396
+ "summary": "The worker type and the number of workers allocated when a job runs."
21397
+ },
21398
+ "immutable": true,
21399
+ "locationInModule": {
21400
+ "filename": "lib/jobs/spark-job.ts",
21401
+ "line": 124
21402
+ },
21403
+ "name": "workerConfiguration",
21404
+ "optional": true,
21405
+ "type": {
21406
+ "fqn": "@aws-cdk/aws-glue-alpha.WorkerConfiguration"
21407
+ }
21376
21408
  }
21377
21409
  ],
21378
21410
  "symbolId": "lib/jobs/spark-job:SparkJobProps"
@@ -21393,7 +21425,7 @@
21393
21425
  "kind": "interface",
21394
21426
  "locationInModule": {
21395
21427
  "filename": "lib/jobs/spark-job.ts",
21396
- "line": 79
21428
+ "line": 80
21397
21429
  },
21398
21430
  "name": "SparkUILoggingLocation",
21399
21431
  "properties": [
@@ -21406,7 +21438,7 @@
21406
21438
  "immutable": true,
21407
21439
  "locationInModule": {
21408
21440
  "filename": "lib/jobs/spark-job.ts",
21409
- "line": 83
21441
+ "line": 84
21410
21442
  },
21411
21443
  "name": "bucket",
21412
21444
  "type": {
@@ -21423,7 +21455,7 @@
21423
21455
  "immutable": true,
21424
21456
  "locationInModule": {
21425
21457
  "filename": "lib/jobs/spark-job.ts",
21426
- "line": 90
21458
+ "line": 91
21427
21459
  },
21428
21460
  "name": "prefix",
21429
21461
  "optional": true,
@@ -21450,7 +21482,7 @@
21450
21482
  "kind": "interface",
21451
21483
  "locationInModule": {
21452
21484
  "filename": "lib/jobs/spark-job.ts",
21453
- "line": 56
21485
+ "line": 57
21454
21486
  },
21455
21487
  "name": "SparkUIProps",
21456
21488
  "properties": [
@@ -21464,7 +21496,7 @@
21464
21496
  "immutable": true,
21465
21497
  "locationInModule": {
21466
21498
  "filename": "lib/jobs/spark-job.ts",
21467
- "line": 62
21499
+ "line": 63
21468
21500
  },
21469
21501
  "name": "bucket",
21470
21502
  "optional": true,
@@ -21483,7 +21515,7 @@
21483
21515
  "immutable": true,
21484
21516
  "locationInModule": {
21485
21517
  "filename": "lib/jobs/spark-job.ts",
21486
- "line": 70
21518
+ "line": 71
21487
21519
  },
21488
21520
  "name": "prefix",
21489
21521
  "optional": true,
@@ -22254,7 +22286,7 @@
22254
22286
  },
22255
22287
  "locationInModule": {
22256
22288
  "filename": "lib/s3-table.ts",
22257
- "line": 122
22289
+ "line": 134
22258
22290
  },
22259
22291
  "parameters": [
22260
22292
  {
@@ -22375,7 +22407,7 @@
22375
22407
  },
22376
22408
  "locationInModule": {
22377
22409
  "filename": "lib/table-base.ts",
22378
- "line": 261
22410
+ "line": 284
22379
22411
  },
22380
22412
  "parameters": [
22381
22413
  {
@@ -22404,7 +22436,7 @@
22404
22436
  "kind": "class",
22405
22437
  "locationInModule": {
22406
22438
  "filename": "lib/table-base.ts",
22407
- "line": 182
22439
+ "line": 199
22408
22440
  },
22409
22441
  "methods": [
22410
22442
  {
@@ -22413,7 +22445,7 @@
22413
22445
  },
22414
22446
  "locationInModule": {
22415
22447
  "filename": "lib/table-base.ts",
22416
- "line": 183
22448
+ "line": 200
22417
22449
  },
22418
22450
  "name": "fromTableArn",
22419
22451
  "parameters": [
@@ -22450,7 +22482,7 @@
22450
22482
  },
22451
22483
  "locationInModule": {
22452
22484
  "filename": "lib/table-base.ts",
22453
- "line": 199
22485
+ "line": 216
22454
22486
  },
22455
22487
  "name": "fromTableAttributes",
22456
22488
  "parameters": [
@@ -22498,7 +22530,7 @@
22498
22530
  },
22499
22531
  "locationInModule": {
22500
22532
  "filename": "lib/table-base.ts",
22501
- "line": 295
22533
+ "line": 321
22502
22534
  },
22503
22535
  "name": "addPartitionIndex",
22504
22536
  "parameters": [
@@ -22512,23 +22544,29 @@
22512
22544
  },
22513
22545
  {
22514
22546
  "docs": {
22515
- "remarks": "[disable-awslint:no-grants]",
22547
+ "remarks": "This is a low-level escape hatch: the `actions` are applied verbatim,\nscoped to this table's ARN. Prefer the intent-based `grantRead` /\n`grantWrite` / `grantReadWrite` methods, which grant a curated set of\nactions and also cover the underlying S3 data. Only pass the specific\nactions the grantee needs - avoid service wildcards such as `glue:*`.\n[disable-awslint:no-grants]",
22516
22548
  "stability": "experimental",
22517
- "summary": "Grant the given identity custom permissions."
22549
+ "summary": "Grant the given identity custom permissions on this table."
22518
22550
  },
22519
22551
  "locationInModule": {
22520
22552
  "filename": "lib/table-base.ts",
22521
- "line": 472
22553
+ "line": 536
22522
22554
  },
22523
22555
  "name": "grant",
22524
22556
  "parameters": [
22525
22557
  {
22558
+ "docs": {
22559
+ "summary": "the principal."
22560
+ },
22526
22561
  "name": "grantee",
22527
22562
  "type": {
22528
22563
  "fqn": "aws-cdk-lib.aws_iam.IGrantable"
22529
22564
  }
22530
22565
  },
22531
22566
  {
22567
+ "docs": {
22568
+ "summary": "the set of Glue actions to allow (for example `glue:GetTable`)."
22569
+ },
22532
22570
  "name": "actions",
22533
22571
  "type": {
22534
22572
  "collection": {
@@ -22553,7 +22591,7 @@
22553
22591
  },
22554
22592
  "locationInModule": {
22555
22593
  "filename": "lib/table-base.ts",
22556
- "line": 284
22594
+ "line": 310
22557
22595
  },
22558
22596
  "name": "grantRead",
22559
22597
  "parameters": [
@@ -22577,7 +22615,7 @@
22577
22615
  },
22578
22616
  "locationInModule": {
22579
22617
  "filename": "lib/table-base.ts",
22580
- "line": 286
22618
+ "line": 312
22581
22619
  },
22582
22620
  "name": "grantReadWrite",
22583
22621
  "parameters": [
@@ -22596,23 +22634,29 @@
22596
22634
  },
22597
22635
  {
22598
22636
  "docs": {
22599
- "remarks": "Permissions will be granted to the catalog, the database, and the table.\n[disable-awslint:no-grants]",
22637
+ "remarks": "This is a low-level escape hatch for actions (such as certain Lake\nFormation or crawler operations) that must be authorized against the\ncatalog and database in addition to the table. The `actions` are applied\nverbatim to all three ARNs (table, catalog, database), so scope them\ntightly: pass only the specific actions the grantee needs and avoid\nservice wildcards such as `glue:*`, which would grant broad access across\nevery resource in the catalog and database.\n[disable-awslint:no-grants]",
22600
22638
  "stability": "experimental",
22601
- "summary": "Grant the given identity custom permissions to ALL underlying resources of the table."
22639
+ "summary": "Grant the given identity custom permissions on this table AND its parent catalog and database."
22602
22640
  },
22603
22641
  "locationInModule": {
22604
22642
  "filename": "lib/table-base.ts",
22605
- "line": 485
22643
+ "line": 560
22606
22644
  },
22607
22645
  "name": "grantToUnderlyingResources",
22608
22646
  "parameters": [
22609
22647
  {
22648
+ "docs": {
22649
+ "summary": "the principal."
22650
+ },
22610
22651
  "name": "grantee",
22611
22652
  "type": {
22612
22653
  "fqn": "aws-cdk-lib.aws_iam.IGrantable"
22613
22654
  }
22614
22655
  },
22615
22656
  {
22657
+ "docs": {
22658
+ "summary": "the set of Glue actions to allow (for example `glue:GetTable`)."
22659
+ },
22616
22660
  "name": "actions",
22617
22661
  "type": {
22618
22662
  "collection": {
@@ -22637,7 +22681,7 @@
22637
22681
  },
22638
22682
  "locationInModule": {
22639
22683
  "filename": "lib/table-base.ts",
22640
- "line": 285
22684
+ "line": 311
22641
22685
  },
22642
22686
  "name": "grantWrite",
22643
22687
  "parameters": [
@@ -22665,7 +22709,7 @@
22665
22709
  "immutable": true,
22666
22710
  "locationInModule": {
22667
22711
  "filename": "lib/table-base.ts",
22668
- "line": 231
22712
+ "line": 248
22669
22713
  },
22670
22714
  "name": "columns",
22671
22715
  "type": {
@@ -22685,7 +22729,7 @@
22685
22729
  "immutable": true,
22686
22730
  "locationInModule": {
22687
22731
  "filename": "lib/table-base.ts",
22688
- "line": 221
22732
+ "line": 238
22689
22733
  },
22690
22734
  "name": "compressed",
22691
22735
  "type": {
@@ -22700,7 +22744,7 @@
22700
22744
  "immutable": true,
22701
22745
  "locationInModule": {
22702
22746
  "filename": "lib/table-base.ts",
22703
- "line": 216
22747
+ "line": 233
22704
22748
  },
22705
22749
  "name": "database",
22706
22750
  "type": {
@@ -22715,13 +22759,30 @@
22715
22759
  "immutable": true,
22716
22760
  "locationInModule": {
22717
22761
  "filename": "lib/table-base.ts",
22718
- "line": 226
22762
+ "line": 243
22719
22763
  },
22720
22764
  "name": "dataFormat",
22721
22765
  "type": {
22722
22766
  "fqn": "@aws-cdk/aws-glue-alpha.DataFormat"
22723
22767
  }
22724
22768
  },
22769
+ {
22770
+ "docs": {
22771
+ "remarks": "Emitted as the\n`has_encrypted_data` table parameter.",
22772
+ "stability": "experimental",
22773
+ "summary": "Whether the data stored in the table is encrypted."
22774
+ },
22775
+ "immutable": true,
22776
+ "locationInModule": {
22777
+ "filename": "lib/table-base.ts",
22778
+ "line": 275
22779
+ },
22780
+ "name": "hasEncryptedData",
22781
+ "protected": true,
22782
+ "type": {
22783
+ "primitive": "boolean"
22784
+ }
22785
+ },
22725
22786
  {
22726
22787
  "docs": {
22727
22788
  "see": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html#cfn-glue-table-tableinput-parameters",
@@ -22731,7 +22792,7 @@
22731
22792
  "immutable": true,
22732
22793
  "locationInModule": {
22733
22794
  "filename": "lib/table-base.ts",
22734
- "line": 252
22795
+ "line": 269
22735
22796
  },
22736
22797
  "name": "parameters",
22737
22798
  "protected": true,
@@ -22752,7 +22813,7 @@
22752
22813
  "immutable": true,
22753
22814
  "locationInModule": {
22754
22815
  "filename": "lib/table-base.ts",
22755
- "line": 210
22816
+ "line": 227
22756
22817
  },
22757
22818
  "name": "tableArn",
22758
22819
  "overrides": "@aws-cdk/aws-glue-alpha.ITable",
@@ -22768,7 +22829,7 @@
22768
22829
  "immutable": true,
22769
22830
  "locationInModule": {
22770
22831
  "filename": "lib/table-base.ts",
22771
- "line": 209
22832
+ "line": 226
22772
22833
  },
22773
22834
  "name": "tableName",
22774
22835
  "overrides": "@aws-cdk/aws-glue-alpha.ITable",
@@ -22784,7 +22845,7 @@
22784
22845
  "immutable": true,
22785
22846
  "locationInModule": {
22786
22847
  "filename": "lib/table-base.ts",
22787
- "line": 208
22848
+ "line": 225
22788
22849
  },
22789
22850
  "name": "tableResource",
22790
22851
  "protected": true,
@@ -22800,7 +22861,7 @@
22800
22861
  "immutable": true,
22801
22862
  "locationInModule": {
22802
22863
  "filename": "lib/table-base.ts",
22803
- "line": 211
22864
+ "line": 228
22804
22865
  },
22805
22866
  "name": "partitionIndexes",
22806
22867
  "optional": true,
@@ -22821,7 +22882,7 @@
22821
22882
  "immutable": true,
22822
22883
  "locationInModule": {
22823
22884
  "filename": "lib/table-base.ts",
22824
- "line": 236
22885
+ "line": 253
22825
22886
  },
22826
22887
  "name": "partitionKeys",
22827
22888
  "optional": true,
@@ -22842,7 +22903,7 @@
22842
22903
  "immutable": true,
22843
22904
  "locationInModule": {
22844
22905
  "filename": "lib/table-base.ts",
22845
- "line": 246
22906
+ "line": 263
22846
22907
  },
22847
22908
  "name": "partitionProjection",
22848
22909
  "optional": true,
@@ -22863,7 +22924,7 @@
22863
22924
  "immutable": true,
22864
22925
  "locationInModule": {
22865
22926
  "filename": "lib/table-base.ts",
22866
- "line": 241
22927
+ "line": 258
22867
22928
  },
22868
22929
  "name": "storageParameters",
22869
22930
  "optional": true,
@@ -22884,7 +22945,7 @@
22884
22945
  "datatype": true,
22885
22946
  "docs": {
22886
22947
  "stability": "experimental",
22887
- "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as glue_alpha from '@aws-cdk/aws-glue-alpha';\n\ndeclare const database: glue_alpha.Database;\ndeclare const dataFormat: glue_alpha.DataFormat;\ndeclare const partitionProjectionConfiguration: glue_alpha.PartitionProjectionConfiguration;\ndeclare const storageParameter: glue_alpha.StorageParameter;\nconst tableBaseProps: glue_alpha.TableBaseProps = {\n columns: [{\n name: 'name',\n type: {\n inputString: 'inputString',\n isPrimitive: false,\n },\n\n // the properties below are optional\n comment: 'comment',\n }],\n database: database,\n dataFormat: dataFormat,\n\n // the properties below are optional\n compressed: false,\n description: 'description',\n enablePartitionFiltering: false,\n parameters: {\n parametersKey: 'parameters',\n },\n partitionIndexes: [{\n keyNames: ['keyNames'],\n\n // the properties below are optional\n indexName: 'indexName',\n }],\n partitionKeys: [{\n name: 'name',\n type: {\n inputString: 'inputString',\n isPrimitive: false,\n },\n\n // the properties below are optional\n comment: 'comment',\n }],\n partitionProjection: {\n partitionProjectionKey: partitionProjectionConfiguration,\n },\n storageParameters: [storageParameter],\n storedAsSubDirectories: false,\n tableName: 'tableName',\n};",
22948
+ "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as glue_alpha from '@aws-cdk/aws-glue-alpha';\n\ndeclare const database: glue_alpha.Database;\ndeclare const dataFormat: glue_alpha.DataFormat;\ndeclare const partitionProjectionConfiguration: glue_alpha.PartitionProjectionConfiguration;\ndeclare const storageParameter: glue_alpha.StorageParameter;\nconst tableBaseProps: glue_alpha.TableBaseProps = {\n columns: [{\n name: 'name',\n type: {\n inputString: 'inputString',\n isPrimitive: false,\n },\n\n // the properties below are optional\n comment: 'comment',\n }],\n database: database,\n dataFormat: dataFormat,\n\n // the properties below are optional\n compressed: false,\n description: 'description',\n enablePartitionFiltering: false,\n hasEncryptedData: false,\n parameters: {\n parametersKey: 'parameters',\n },\n partitionIndexes: [{\n keyNames: ['keyNames'],\n\n // the properties below are optional\n indexName: 'indexName',\n }],\n partitionKeys: [{\n name: 'name',\n type: {\n inputString: 'inputString',\n isPrimitive: false,\n },\n\n // the properties below are optional\n comment: 'comment',\n }],\n partitionProjection: {\n partitionProjectionKey: partitionProjectionConfiguration,\n },\n storageParameters: [storageParameter],\n storedAsSubDirectories: false,\n tableName: 'tableName',\n};",
22888
22949
  "custom": {
22889
22950
  "exampleMetadata": "fixture=_generated"
22890
22951
  }
@@ -23005,6 +23066,26 @@
23005
23066
  "primitive": "boolean"
23006
23067
  }
23007
23068
  },
23069
+ {
23070
+ "abstract": true,
23071
+ "docs": {
23072
+ "default": "true",
23073
+ "remarks": "This sets the `has_encrypted_data` table parameter. Athena reads it when\nquerying client-side (CSE-KMS) encrypted datasets; for server-side\nencrypted (SSE-S3 / SSE-KMS) or unencrypted data it has no effect, since\nAmazon S3 decrypts server-side encrypted objects transparently.\n\nDo not also set `has_encrypted_data` through `parameters` - use this\nproperty instead. A conflicting value in `parameters` is rejected.",
23074
+ "see": "https://docs.aws.amazon.com/athena/latest/ug/creating-tables-based-on-encrypted-datasets-in-s3.html",
23075
+ "stability": "experimental",
23076
+ "summary": "Whether the data stored in the table is encrypted."
23077
+ },
23078
+ "immutable": true,
23079
+ "locationInModule": {
23080
+ "filename": "lib/table-base.ts",
23081
+ "line": 181
23082
+ },
23083
+ "name": "hasEncryptedData",
23084
+ "optional": true,
23085
+ "type": {
23086
+ "primitive": "boolean"
23087
+ }
23088
+ },
23008
23089
  {
23009
23090
  "abstract": true,
23010
23091
  "docs": {
@@ -23089,7 +23170,7 @@
23089
23170
  "immutable": true,
23090
23171
  "locationInModule": {
23091
23172
  "filename": "lib/table-base.ts",
23092
- "line": 176
23173
+ "line": 193
23093
23174
  },
23094
23175
  "name": "partitionProjection",
23095
23176
  "optional": true,
@@ -23225,7 +23306,7 @@
23225
23306
  "datatype": true,
23226
23307
  "docs": {
23227
23308
  "stability": "experimental",
23228
- "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as glue_alpha from '@aws-cdk/aws-glue-alpha';\nimport { aws_kms as kms } from 'aws-cdk-lib';\nimport { aws_s3 as s3 } from 'aws-cdk-lib';\n\ndeclare const bucket: s3.Bucket;\ndeclare const database: glue_alpha.Database;\ndeclare const dataFormat: glue_alpha.DataFormat;\ndeclare const key: kms.Key;\ndeclare const partitionProjectionConfiguration: glue_alpha.PartitionProjectionConfiguration;\ndeclare const storageParameter: glue_alpha.StorageParameter;\nconst tableProps: glue_alpha.TableProps = {\n columns: [{\n name: 'name',\n type: {\n inputString: 'inputString',\n isPrimitive: false,\n },\n\n // the properties below are optional\n comment: 'comment',\n }],\n database: database,\n dataFormat: dataFormat,\n\n // the properties below are optional\n bucket: bucket,\n compressed: false,\n description: 'description',\n enablePartitionFiltering: false,\n encryption: glue_alpha.TableEncryption.S3_MANAGED,\n encryptionKey: key,\n parameters: {\n parametersKey: 'parameters',\n },\n partitionIndexes: [{\n keyNames: ['keyNames'],\n\n // the properties below are optional\n indexName: 'indexName',\n }],\n partitionKeys: [{\n name: 'name',\n type: {\n inputString: 'inputString',\n isPrimitive: false,\n },\n\n // the properties below are optional\n comment: 'comment',\n }],\n partitionProjection: {\n partitionProjectionKey: partitionProjectionConfiguration,\n },\n s3Prefix: 's3Prefix',\n storageParameters: [storageParameter],\n storedAsSubDirectories: false,\n tableName: 'tableName',\n};",
23309
+ "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as glue_alpha from '@aws-cdk/aws-glue-alpha';\nimport { aws_kms as kms } from 'aws-cdk-lib';\nimport { aws_s3 as s3 } from 'aws-cdk-lib';\n\ndeclare const bucket: s3.Bucket;\ndeclare const database: glue_alpha.Database;\ndeclare const dataFormat: glue_alpha.DataFormat;\ndeclare const key: kms.Key;\ndeclare const partitionProjectionConfiguration: glue_alpha.PartitionProjectionConfiguration;\ndeclare const storageParameter: glue_alpha.StorageParameter;\nconst tableProps: glue_alpha.TableProps = {\n columns: [{\n name: 'name',\n type: {\n inputString: 'inputString',\n isPrimitive: false,\n },\n\n // the properties below are optional\n comment: 'comment',\n }],\n database: database,\n dataFormat: dataFormat,\n\n // the properties below are optional\n bucket: bucket,\n compressed: false,\n description: 'description',\n enablePartitionFiltering: false,\n encryption: glue_alpha.TableEncryption.S3_MANAGED,\n encryptionKey: key,\n hasEncryptedData: false,\n parameters: {\n parametersKey: 'parameters',\n },\n partitionIndexes: [{\n keyNames: ['keyNames'],\n\n // the properties below are optional\n indexName: 'indexName',\n }],\n partitionKeys: [{\n name: 'name',\n type: {\n inputString: 'inputString',\n isPrimitive: false,\n },\n\n // the properties below are optional\n comment: 'comment',\n }],\n partitionProjection: {\n partitionProjectionKey: partitionProjectionConfiguration,\n },\n s3Prefix: 's3Prefix',\n storageParameters: [storageParameter],\n storedAsSubDirectories: false,\n tableName: 'tableName',\n};",
23229
23310
  "custom": {
23230
23311
  "exampleMetadata": "fixture=_generated"
23231
23312
  }
@@ -23423,7 +23504,7 @@
23423
23504
  "docs": {
23424
23505
  "stability": "experimental",
23425
23506
  "summary": "Represents a type of a column in a table schema.",
23426
- "example": "declare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'data',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'date',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n partitionProjection: {\n date: glue.PartitionProjectionConfiguration.date({\n min: '2020-01-01',\n max: '2023-12-31',\n format: 'yyyy-MM-dd',\n interval: 1, // optional, defaults to 1\n intervalUnit: glue.DateIntervalUnit.DAYS, // optional: YEARS, MONTHS, WEEKS, DAYS, HOURS, MINUTES, SECONDS\n }),\n },\n});",
23507
+ "example": "declare const myDatabase: glue.Database;\nnew glue.S3Table(this, 'MyTable', {\n database: myDatabase,\n columns: [{\n name: 'data',\n type: glue.Schema.STRING,\n }],\n partitionKeys: [{\n name: 'date',\n type: glue.Schema.STRING,\n }],\n dataFormat: glue.DataFormat.JSON,\n partitionProjection: {\n date: glue.PartitionProjectionConfiguration.date({\n min: 'NOW-3YEARS',\n max: 'NOW',\n format: 'yyyy-MM-dd',\n }),\n },\n});",
23427
23508
  "custom": {
23428
23509
  "exampleMetadata": "infused"
23429
23510
  }
@@ -23494,12 +23575,68 @@
23494
23575
  "name": "WeeklyScheduleTriggerOptions",
23495
23576
  "symbolId": "lib/triggers/trigger-options:WeeklyScheduleTriggerOptions"
23496
23577
  },
23578
+ "@aws-cdk/aws-glue-alpha.WorkerConfiguration": {
23579
+ "assembly": "@aws-cdk/aws-glue-alpha",
23580
+ "datatype": true,
23581
+ "docs": {
23582
+ "remarks": "The worker type and the number of workers are set together: providing this\nconfiguration requires both values, so a Spark job can never be given one\nwithout the other.",
23583
+ "stability": "experimental",
23584
+ "summary": "The worker configuration for a Spark job.",
23585
+ "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkEtlJob(stack, 'PySparkETLJob', {\n jobName: 'PySparkETLJobCustomName',\n description: 'This is a description',\n role,\n script,\n glueVersion: glue.GlueVersion.V5_1,\n continuousLogging: { enabled: false },\n workerConfiguration: {\n workerType: glue.WorkerType.G_2X,\n numberOfWorkers: 2,\n },\n maxConcurrentRuns: 100,\n timeout: cdk.Duration.hours(2),\n connections: [glue.Connection.fromConnectionName(stack, 'Connection', 'connectionName')],\n securityConfiguration: glue.SecurityConfiguration.fromSecurityConfigurationName(stack, 'SecurityConfig', 'securityConfigName'),\n tags: {\n FirstTagName: 'FirstTagValue',\n SecondTagName: 'SecondTagValue',\n XTagName: 'XTagValue',\n },\n maxRetries: 2,\n});",
23586
+ "custom": {
23587
+ "exampleMetadata": "infused"
23588
+ }
23589
+ },
23590
+ "fqn": "@aws-cdk/aws-glue-alpha.WorkerConfiguration",
23591
+ "kind": "interface",
23592
+ "locationInModule": {
23593
+ "filename": "lib/jobs/spark-job.ts",
23594
+ "line": 101
23595
+ },
23596
+ "name": "WorkerConfiguration",
23597
+ "properties": [
23598
+ {
23599
+ "abstract": true,
23600
+ "docs": {
23601
+ "stability": "experimental",
23602
+ "summary": "The number of workers of the given `workerType` that are allocated when a job runs."
23603
+ },
23604
+ "immutable": true,
23605
+ "locationInModule": {
23606
+ "filename": "lib/jobs/spark-job.ts",
23607
+ "line": 112
23608
+ },
23609
+ "name": "numberOfWorkers",
23610
+ "type": {
23611
+ "primitive": "number"
23612
+ }
23613
+ },
23614
+ {
23615
+ "abstract": true,
23616
+ "docs": {
23617
+ "remarks": "Enum options: Standard, G_1X, G_2X, G_025X, G_4X, G_8X, Z_2X",
23618
+ "stability": "experimental",
23619
+ "summary": "The type of predefined worker that is allocated when a job runs."
23620
+ },
23621
+ "immutable": true,
23622
+ "locationInModule": {
23623
+ "filename": "lib/jobs/spark-job.ts",
23624
+ "line": 107
23625
+ },
23626
+ "name": "workerType",
23627
+ "type": {
23628
+ "fqn": "@aws-cdk/aws-glue-alpha.WorkerType"
23629
+ }
23630
+ }
23631
+ ],
23632
+ "symbolId": "lib/jobs/spark-job:WorkerConfiguration"
23633
+ },
23497
23634
  "@aws-cdk/aws-glue-alpha.WorkerType": {
23498
23635
  "assembly": "@aws-cdk/aws-glue-alpha",
23499
23636
  "docs": {
23500
23637
  "stability": "experimental",
23501
23638
  "summary": "The type of predefined worker that is allocated when a job runs.",
23502
- "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkEtlJob(stack, 'PySparkETLJob', {\n jobName: 'PySparkETLJobCustomName',\n description: 'This is a description',\n role,\n script,\n glueVersion: glue.GlueVersion.V5_1,\n continuousLogging: { enabled: false },\n workerType: glue.WorkerType.G_2X,\n maxConcurrentRuns: 100,\n timeout: cdk.Duration.hours(2),\n connections: [glue.Connection.fromConnectionName(stack, 'Connection', 'connectionName')],\n securityConfiguration: glue.SecurityConfiguration.fromSecurityConfigurationName(stack, 'SecurityConfig', 'securityConfigName'),\n tags: {\n FirstTagName: 'FirstTagValue',\n SecondTagName: 'SecondTagValue',\n XTagName: 'XTagValue',\n },\n numberOfWorkers: 2,\n maxRetries: 2,\n});",
23639
+ "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nnew glue.PySparkEtlJob(stack, 'PySparkETLJob', {\n jobName: 'PySparkETLJobCustomName',\n description: 'This is a description',\n role,\n script,\n glueVersion: glue.GlueVersion.V5_1,\n continuousLogging: { enabled: false },\n workerConfiguration: {\n workerType: glue.WorkerType.G_2X,\n numberOfWorkers: 2,\n },\n maxConcurrentRuns: 100,\n timeout: cdk.Duration.hours(2),\n connections: [glue.Connection.fromConnectionName(stack, 'Connection', 'connectionName')],\n securityConfiguration: glue.SecurityConfiguration.fromSecurityConfigurationName(stack, 'SecurityConfig', 'securityConfigName'),\n tags: {\n FirstTagName: 'FirstTagValue',\n SecondTagName: 'SecondTagValue',\n XTagName: 'XTagValue',\n },\n maxRetries: 2,\n});",
23503
23640
  "custom": {
23504
23641
  "exampleMetadata": "infused"
23505
23642
  }
@@ -23615,9 +23752,9 @@
23615
23752
  "see": "https://docs.aws.amazon.com/glue/latest/dg/about-triggers.html\n\n## Usage Example\n\n```ts\nconst app = new App();\nconst stack = new Stack(app, 'TestStack');\n\n// Create a Glue Job\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\nconst job = new glue.PySparkStreamingJob(stack, 'ImportedJob', { role, script });\n\n// Create a Glue Workflow\nconst workflow = new glue.Workflow(stack, 'TestWorkflow');\n\n// Add an on-demand trigger to the Workflow\nworkflow.addOnDemandTrigger('OnDemandTrigger', {\nactions: [{ job: job }],\n});\n```",
23616
23753
  "stability": "experimental",
23617
23754
  "summary": "This module defines a construct for creating and managing AWS Glue Workflows and Triggers.",
23618
- "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as glue_alpha from '@aws-cdk/aws-glue-alpha';\nconst workflow = new glue_alpha.Workflow(this, 'MyWorkflow', /* all optional props */ {\n defaultRunProperties: {\n defaultRunPropertiesKey: 'defaultRunProperties',\n },\n description: 'description',\n maxConcurrentRuns: 123,\n workflowName: 'workflowName',\n});",
23755
+ "example": "import * as cdk from 'aws-cdk-lib';\nimport * as iam from 'aws-cdk-lib/aws-iam';\ndeclare const stack: cdk.Stack;\ndeclare const role: iam.IRole;\ndeclare const script: glue.Code;\n\n// Create a job to run from the workflow\nconst job = new glue.PySparkEtlJob(stack, 'Job', { role, script });\n\n// Create a workflow and add a trigger that runs the job\nconst workflow = new glue.Workflow(stack, 'Workflow');\nworkflow.addOnDemandTrigger('OnDemandTrigger', {\n actions: [{ job }],\n});",
23619
23756
  "custom": {
23620
- "exampleMetadata": "fixture=_generated"
23757
+ "exampleMetadata": "infused"
23621
23758
  }
23622
23759
  },
23623
23760
  "fqn": "@aws-cdk/aws-glue-alpha.Workflow",
@@ -24407,6 +24544,6 @@
24407
24544
  "symbolId": "lib/storage-parameter:WriteParallel"
24408
24545
  }
24409
24546
  },
24410
- "version": "2.264.0-alpha.0",
24547
+ "version": "2.266.0-alpha.0",
24411
24548
  "fingerprint": "**********"
24412
24549
  }