From 266d536deece9f7713968a34ea52edbcd6371665 Mon Sep 17 00:00:00 2001 From: Pahud Hsieh Date: Mon, 25 Aug 2025 22:44:26 -0400 Subject: [PATCH 1/7] chore(aws-glue-alpha): add SNOWFLAKE connection type --- .../@aws-cdk/aws-glue-alpha/lib/connection.ts | 5 ++++ .../aws-glue-alpha/test/connection.test.ts | 26 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts b/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts index a4a90204ca867..aa346bfbb390c 100644 --- a/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts +++ b/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts @@ -136,6 +136,11 @@ export class ConnectionType { */ public static readonly SLACK = new ConnectionType('SLACK'); + /** + * Designates a connection to Snowflake. + */ + public static readonly SNOWFLAKE = new ConnectionType('SNOWFLAKE'); + /** * Designates a connection to Snapchat Ads. */ diff --git a/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts b/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts index bb274ca6a5a8f..49fb9c7f31aea 100644 --- a/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts +++ b/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts @@ -156,3 +156,29 @@ test('fromConnectionArn', () => { expect(connection.connectionName).toEqual('name'); expect(connection.connectionArn).toEqual(connectionArn); }); + +test('SNOWFLAKE connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.SNOWFLAKE, + properties: { + JDBC_CONNECTION_URL: 'jdbc:snowflake://account.snowflakecomputing.com', + USERNAME: 'username', + PASSWORD: 'password', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + CatalogId: { + Ref: 'AWS::AccountId', + }, + ConnectionInput: { + ConnectionType: 'SNOWFLAKE', + ConnectionProperties: { + JDBC_CONNECTION_URL: 'jdbc:snowflake://account.snowflakecomputing.com', + USERNAME: 'username', + PASSWORD: 'password', + }, + }, + }); +}); From 5ff4b84b5ede727c2e07477a9c362d1d415b8018 Mon Sep 17 00:00:00 2001 From: Pahud Hsieh Date: Tue, 26 Aug 2025 08:53:30 -0400 Subject: [PATCH 2/7] add 30 missing connection types including SNOWFLAKE --- .../@aws-cdk/aws-glue-alpha/lib/connection.ts | 153 +++++- .../aws-glue-alpha/test/connection.test.ts | 508 ++++++++++++++++++ 2 files changed, 657 insertions(+), 4 deletions(-) diff --git a/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts b/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts index aa346bfbb390c..db91ef9fa0369 100644 --- a/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts +++ b/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts @@ -56,26 +56,86 @@ export class ConnectionType { */ public static readonly CUSTOM = new ConnectionType('CUSTOM'); + /** + * Designates a connection to Adobe Analytics. + */ + public static readonly ADOBEANALYTICS = new ConnectionType('ADOBEANALYTICS'); + + /** + * Designates a connection to Asana. + */ + public static readonly ASANA = new ConnectionType('ASANA'); + + /** + * Designates a connection to Blackbaud Raiser's Edge NXT. + */ + public static readonly BLACKBAUDRAISEREDGENXT = new ConnectionType('BLACKBAUDRAISEREDGENXT'); + + /** + * Designates a connection to CircleCI. + */ + public static readonly CIRCLECI = new ConnectionType('CIRCLECI'); + + /** + * Designates a connection to Datadog. + */ + public static readonly DATADOG = new ConnectionType('DATADOG'); + + /** + * Designates a connection to DocuSign Monitor. + */ + public static readonly DOCUSIGNMONITOR = new ConnectionType('DOCUSIGNMONITOR'); + + /** + * Designates a connection to Dynatrace. + */ + public static readonly DYNATRACE = new ConnectionType('DYNATRACE'); + /** * Designates a connection to Facebook Ads. */ public static readonly FACEBOOKADS = new ConnectionType('FACEBOOKADS'); /** - * Designates a connection to Google Ads. + * Designates a connection to Facebook Page Insights. */ - public static readonly GOOGLEADS = new ConnectionType('GOOGLEADS'); + public static readonly FACEBOOKPAGEINSIGHTS = new ConnectionType('FACEBOOKPAGEINSIGHTS'); /** - * Designates a connection to Google Sheets. + * Designates a connection to Freshdesk. */ - public static readonly GOOGLESHEETS = new ConnectionType('GOOGLESHEETS'); + public static readonly FRESHDESK = new ConnectionType('FRESHDESK'); + + /** + * Designates a connection to Freshsales. + */ + public static readonly FRESHSALES = new ConnectionType('FRESHSALES'); + + /** + * Designates a connection to GitLab. + */ + public static readonly GITLAB = new ConnectionType('GITLAB'); + + /** + * Designates a connection to Google Ads. + */ + public static readonly GOOGLEADS = new ConnectionType('GOOGLEADS'); /** * Designates a connection to Google Analytics 4. */ public static readonly GOOGLEANALYTICS4 = new ConnectionType('GOOGLEANALYTICS4'); + /** + * Designates a connection to Google Search Console. + */ + public static readonly GOOGLESEARCHCONSOLE = new ConnectionType('GOOGLESEARCHCONSOLE'); + + /** + * Designates a connection to Google Sheets. + */ + public static readonly GOOGLESHEETS = new ConnectionType('GOOGLESHEETS'); + /** * Designates a connection to HubSpot. */ @@ -96,21 +156,76 @@ export class ConnectionType { */ public static readonly JIRACLOUD = new ConnectionType('JIRACLOUD'); + /** + * Designates a connection to LinkedIn. + */ + public static readonly LINKEDIN = new ConnectionType('LINKEDIN'); + + /** + * Designates a connection to Mailchimp. + */ + public static readonly MAILCHIMP = new ConnectionType('MAILCHIMP'); + /** * Designates a connection to Adobe Marketo Engage. */ public static readonly MARKETO = new ConnectionType('MARKETO'); + /** + * Designates a connection to Microsoft Dynamics 365 Finance and Operations. + */ + public static readonly MICROSOFTDYNAMIC365FINANCEANDOPS = new ConnectionType('MICROSOFTDYNAMIC365FINANCEANDOPS'); + + /** + * Designates a connection to Microsoft Teams. + */ + public static readonly MICROSOFTTEAMS = new ConnectionType('MICROSOFTTEAMS'); + + /** + * Designates a connection to Mixpanel. + */ + public static readonly MIXPANEL = new ConnectionType('MIXPANEL'); + /** * Designates a connection to Oracle NetSuite. */ public static readonly NETSUITEERP = new ConnectionType('NETSUITEERP'); + /** + * Designates a connection to PayPal. + */ + public static readonly PAYPAL = new ConnectionType('PAYPAL'); + + /** + * Designates a connection to Pendo. + */ + public static readonly PENDO = new ConnectionType('PENDO'); + + /** + * Designates a connection to Pipedrive. + */ + public static readonly PIPEDIVE = new ConnectionType('PIPEDIVE'); + + /** + * Designates a connection to Productboard. + */ + public static readonly PRODUCTBOARD = new ConnectionType('PRODUCTBOARD'); + + /** + * Designates a connection to QuickBooks. + */ + public static readonly QUICKBOOKS = new ConnectionType('QUICKBOOKS'); + /** * Designates a connection to Salesforce using OAuth authentication. */ public static readonly SALESFORCE = new ConnectionType('SALESFORCE'); + /** + * Designates a connection to Salesforce Commerce Cloud. + */ + public static readonly SALESFORCECOMMERCECLOUD = new ConnectionType('SALESFORCECOMMERCECLOUD'); + /** * Designates a connection to Salesforce Marketing Cloud. */ @@ -121,11 +236,21 @@ export class ConnectionType { */ public static readonly SALESFORCEPARDOT = new ConnectionType('SALESFORCEPARDOT'); + /** + * Designates a connection to SAP Concur. + */ + public static readonly SAPCONCUR = new ConnectionType('SAPCONCUR'); + /** * Designates a connection to SAP OData. */ public static readonly SAPODATA = new ConnectionType('SAPODATA'); + /** + * Designates a connection to SendGrid. + */ + public static readonly SENDGRID = new ConnectionType('SENDGRID'); + /** * Designates a connection to ServiceNow. */ @@ -136,6 +261,11 @@ export class ConnectionType { */ public static readonly SLACK = new ConnectionType('SLACK'); + /** + * Designates a connection to Smartsheet. + */ + public static readonly SMARTSHEET = new ConnectionType('SMARTSHEET'); + /** * Designates a connection to Snowflake. */ @@ -151,6 +281,16 @@ export class ConnectionType { */ public static readonly STRIPE = new ConnectionType('STRIPE'); + /** + * Designates a connection to Twilio. + */ + public static readonly TWILIO = new ConnectionType('TWILIO'); + + /** + * Designates a connection to WooCommerce. + */ + public static readonly WOOCOMMERCE = new ConnectionType('WOOCOMMERCE'); + /** * Designates a connection to Zendesk. */ @@ -161,6 +301,11 @@ export class ConnectionType { */ public static readonly ZOHOCRM = new ConnectionType('ZOHOCRM'); + /** + * Designates a connection to Zoom. + */ + public static readonly ZOOM = new ConnectionType('ZOOM'); + /** * The name of this ConnectionType, as expected by Connection resource. */ diff --git a/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts b/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts index 49fb9c7f31aea..c7fc75342a68a 100644 --- a/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts +++ b/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts @@ -182,3 +182,511 @@ test('SNOWFLAKE connection type', () => { }, }); }); + +test('additional connection types', () => { + const stack = new cdk.Stack(); + + // Test a few representative new connection types + new glue.Connection(stack, 'GitLabConnection', { + type: glue.ConnectionType.GITLAB, + properties: { + CONNECTION_URL: 'https://gitlab.com', + USERNAME: 'username', + PASSWORD: 'password', + }, + }); + + new glue.Connection(stack, 'MailchimpConnection', { + type: glue.ConnectionType.MAILCHIMP, + properties: { + CONNECTION_URL: 'https://mailchimp.com', + API_KEY: 'api-key', + }, + }); + + new glue.Connection(stack, 'PayPalConnection', { + type: glue.ConnectionType.PAYPAL, + properties: { + CONNECTION_URL: 'https://api.paypal.com', + CLIENT_ID: 'client-id', + CLIENT_SECRET: 'client-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'GITLAB', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'MAILCHIMP', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'PAYPAL', + }, + }); +}); +// Comprehensive tests for all SaaS connector connection types based on CloudFormation documentation +describe('SaaS connector connection types', () => { + test('ADOBEANALYTICS connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.ADOBEANALYTICS, + properties: { + CONNECTION_URL: 'https://analytics.adobe.io', + CLIENT_ID: 'client-id', + CLIENT_SECRET: 'client-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'ADOBEANALYTICS', + }, + }); + }); + + test('ASANA connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.ASANA, + properties: { + CONNECTION_URL: 'https://app.asana.com', + ACCESS_TOKEN: 'access-token', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'ASANA', + }, + }); + }); + + test('BLACKBAUDRAISEREDGENXT connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.BLACKBAUDRAISEREDGENXT, + properties: { + CONNECTION_URL: 'https://api.blackbaud.com', + CLIENT_ID: 'client-id', + CLIENT_SECRET: 'client-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'BLACKBAUDRAISEREDGENXT', + }, + }); + }); + + test('CIRCLECI connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.CIRCLECI, + properties: { + CONNECTION_URL: 'https://circleci.com/api', + API_TOKEN: 'api-token', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'CIRCLECI', + }, + }); + }); + + test('DATADOG connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.DATADOG, + properties: { + CONNECTION_URL: 'https://api.datadoghq.com', + API_KEY: 'api-key', + APPLICATION_KEY: 'app-key', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'DATADOG', + }, + }); + }); + + test('DOCUSIGNMONITOR connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.DOCUSIGNMONITOR, + properties: { + CONNECTION_URL: 'https://monitor.docusign.com', + USERNAME: 'username', + PASSWORD: 'password', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'DOCUSIGNMONITOR', + }, + }); + }); + + test('DYNATRACE connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.DYNATRACE, + properties: { + CONNECTION_URL: 'https://environment.dynatrace.com', + API_TOKEN: 'api-token', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'DYNATRACE', + }, + }); + }); + + test('FACEBOOKPAGEINSIGHTS connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.FACEBOOKPAGEINSIGHTS, + properties: { + CONNECTION_URL: 'https://graph.facebook.com', + ACCESS_TOKEN: 'access-token', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'FACEBOOKPAGEINSIGHTS', + }, + }); + }); + + test('FRESHDESK connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.FRESHDESK, + properties: { + CONNECTION_URL: 'https://domain.freshdesk.com', + API_KEY: 'api-key', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'FRESHDESK', + }, + }); + }); + + test('FRESHSALES connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.FRESHSALES, + properties: { + CONNECTION_URL: 'https://domain.freshsales.io', + API_KEY: 'api-key', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'FRESHSALES', + }, + }); + }); + + test('GOOGLESEARCHCONSOLE connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.GOOGLESEARCHCONSOLE, + properties: { + CONNECTION_URL: 'https://searchconsole.googleapis.com', + CLIENT_ID: 'client-id', + CLIENT_SECRET: 'client-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'GOOGLESEARCHCONSOLE', + }, + }); + }); + + test('LINKEDIN connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.LINKEDIN, + properties: { + CONNECTION_URL: 'https://api.linkedin.com', + CLIENT_ID: 'client-id', + CLIENT_SECRET: 'client-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'LINKEDIN', + }, + }); + }); + + test('MICROSOFTDYNAMIC365FINANCEANDOPS connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.MICROSOFTDYNAMIC365FINANCEANDOPS, + properties: { + CONNECTION_URL: 'https://tenant.operations.dynamics.com', + CLIENT_ID: 'client-id', + CLIENT_SECRET: 'client-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'MICROSOFTDYNAMIC365FINANCEANDOPS', + }, + }); + }); + + test('MICROSOFTTEAMS connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.MICROSOFTTEAMS, + properties: { + CONNECTION_URL: 'https://graph.microsoft.com', + CLIENT_ID: 'client-id', + CLIENT_SECRET: 'client-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'MICROSOFTTEAMS', + }, + }); + }); + + test('MIXPANEL connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.MIXPANEL, + properties: { + CONNECTION_URL: 'https://mixpanel.com/api', + USERNAME: 'username', + SECRET: 'secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'MIXPANEL', + }, + }); + }); + + test('PENDO connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.PENDO, + properties: { + CONNECTION_URL: 'https://app.pendo.io', + API_KEY: 'api-key', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'PENDO', + }, + }); + }); + + test('PIPEDIVE connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.PIPEDIVE, + properties: { + CONNECTION_URL: 'https://api.pipedrive.com', + API_TOKEN: 'api-token', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'PIPEDIVE', + }, + }); + }); + + test('PRODUCTBOARD connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.PRODUCTBOARD, + properties: { + CONNECTION_URL: 'https://api.productboard.com', + ACCESS_TOKEN: 'access-token', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'PRODUCTBOARD', + }, + }); + }); + + test('QUICKBOOKS connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.QUICKBOOKS, + properties: { + CONNECTION_URL: 'https://sandbox-quickbooks.api.intuit.com', + CLIENT_ID: 'client-id', + CLIENT_SECRET: 'client-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'QUICKBOOKS', + }, + }); + }); + + test('SALESFORCECOMMERCECLOUD connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.SALESFORCECOMMERCECLOUD, + properties: { + CONNECTION_URL: 'https://instance.demandware.net', + CLIENT_ID: 'client-id', + CLIENT_SECRET: 'client-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'SALESFORCECOMMERCECLOUD', + }, + }); + }); + + test('SAPCONCUR connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.SAPCONCUR, + properties: { + CONNECTION_URL: 'https://us.api.concursolutions.com', + CLIENT_ID: 'client-id', + CLIENT_SECRET: 'client-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'SAPCONCUR', + }, + }); + }); + + test('SENDGRID connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.SENDGRID, + properties: { + CONNECTION_URL: 'https://api.sendgrid.com', + API_KEY: 'api-key', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'SENDGRID', + }, + }); + }); + + test('SMARTSHEET connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.SMARTSHEET, + properties: { + CONNECTION_URL: 'https://api.smartsheet.com', + ACCESS_TOKEN: 'access-token', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'SMARTSHEET', + }, + }); + }); + + test('TWILIO connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.TWILIO, + properties: { + CONNECTION_URL: 'https://api.twilio.com', + ACCOUNT_SID: 'account-sid', + AUTH_TOKEN: 'auth-token', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'TWILIO', + }, + }); + }); + + test('WOOCOMMERCE connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.WOOCOMMERCE, + properties: { + CONNECTION_URL: 'https://yourstore.com/wp-json/wc/v3', + CONSUMER_KEY: 'consumer-key', + CONSUMER_SECRET: 'consumer-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'WOOCOMMERCE', + }, + }); + }); + + test('ZOOM connection type', () => { + const stack = new cdk.Stack(); + new glue.Connection(stack, 'Connection', { + type: glue.ConnectionType.ZOOM, + properties: { + CONNECTION_URL: 'https://api.zoom.us', + API_KEY: 'api-key', + API_SECRET: 'api-secret', + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { + ConnectionInput: { + ConnectionType: 'ZOOM', + }, + }); + }); +}); \ No newline at end of file From 780afe6549acb4558cd642f1d13206e83e22d31b Mon Sep 17 00:00:00 2001 From: Pahud Hsieh Date: Tue, 26 Aug 2025 11:19:32 -0400 Subject: [PATCH 3/7] lint --- packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts b/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts index c7fc75342a68a..d89558a80a041 100644 --- a/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts +++ b/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts @@ -689,4 +689,4 @@ describe('SaaS connector connection types', () => { }, }); }); -}); \ No newline at end of file +}); From d78e3385cab572192ba8a4af337432f7b9aaa3c7 Mon Sep 17 00:00:00 2001 From: Pahud Hsieh Date: Tue, 26 Aug 2025 18:37:40 -0400 Subject: [PATCH 4/7] fix typo --- packages/@aws-cdk/aws-glue-alpha/lib/connection.ts | 2 +- packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts b/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts index db91ef9fa0369..c7a44aa56a6a6 100644 --- a/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts +++ b/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts @@ -204,7 +204,7 @@ export class ConnectionType { /** * Designates a connection to Pipedrive. */ - public static readonly PIPEDIVE = new ConnectionType('PIPEDIVE'); + public static readonly PIPEDRIVE = new ConnectionType('PIPEDIVE'); /** * Designates a connection to Productboard. diff --git a/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts b/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts index d89558a80a041..eece5629dd939 100644 --- a/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts +++ b/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts @@ -517,7 +517,7 @@ describe('SaaS connector connection types', () => { test('PIPEDIVE connection type', () => { const stack = new cdk.Stack(); new glue.Connection(stack, 'Connection', { - type: glue.ConnectionType.PIPEDIVE, + type: glue.ConnectionType.PIPEDRIVE, properties: { CONNECTION_URL: 'https://api.pipedrive.com', API_TOKEN: 'api-token', From dddb5b93f323e0fb1d0bcd2c07ae7062c1fabe68 Mon Sep 17 00:00:00 2001 From: Pahud Hsieh Date: Tue, 26 Aug 2025 18:38:30 -0400 Subject: [PATCH 5/7] fix typo --- packages/@aws-cdk/aws-glue-alpha/lib/connection.ts | 2 +- packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts b/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts index c7a44aa56a6a6..508c104c3206c 100644 --- a/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts +++ b/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts @@ -204,7 +204,7 @@ export class ConnectionType { /** * Designates a connection to Pipedrive. */ - public static readonly PIPEDRIVE = new ConnectionType('PIPEDIVE'); + public static readonly PIPEDRIVE = new ConnectionType('PIPEDRIVE'); /** * Designates a connection to Productboard. diff --git a/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts b/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts index eece5629dd939..55ad754176d01 100644 --- a/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts +++ b/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts @@ -514,7 +514,7 @@ describe('SaaS connector connection types', () => { }); }); - test('PIPEDIVE connection type', () => { + test('PIPEDRIVE connection type', () => { const stack = new cdk.Stack(); new glue.Connection(stack, 'Connection', { type: glue.ConnectionType.PIPEDRIVE, @@ -526,7 +526,7 @@ describe('SaaS connector connection types', () => { Template.fromStack(stack).hasResourceProperties('AWS::Glue::Connection', { ConnectionInput: { - ConnectionType: 'PIPEDIVE', + ConnectionType: 'PIPEDRIVE', }, }); }); From 13f10b51017ac796d1c8b4c8a58a47b76acbae0b Mon Sep 17 00:00:00 2001 From: Pahud Hsieh Date: Wed, 27 Aug 2025 12:04:11 -0400 Subject: [PATCH 6/7] address the comments --- .../@aws-cdk/aws-glue-alpha/lib/connection.ts | 48 +++++++++---------- .../aws-glue-alpha/test/connection.test.ts | 22 ++++----- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts b/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts index 508c104c3206c..5c0b141db4220 100644 --- a/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts +++ b/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts @@ -59,7 +59,7 @@ export class ConnectionType { /** * Designates a connection to Adobe Analytics. */ - public static readonly ADOBEANALYTICS = new ConnectionType('ADOBEANALYTICS'); + public static readonly ADOBE_ANALYTICS = new ConnectionType('ADOBEANALYTICS'); /** * Designates a connection to Asana. @@ -69,12 +69,12 @@ export class ConnectionType { /** * Designates a connection to Blackbaud Raiser's Edge NXT. */ - public static readonly BLACKBAUDRAISEREDGENXT = new ConnectionType('BLACKBAUDRAISEREDGENXT'); + public static readonly BLACKBAUD_RAISERS_EDGE_NXT = new ConnectionType('BLACKBAUDRAISEREDGENXT'); /** * Designates a connection to CircleCI. */ - public static readonly CIRCLECI = new ConnectionType('CIRCLECI'); + public static readonly CIRCLE_CI = new ConnectionType('CIRCLECI'); /** * Designates a connection to Datadog. @@ -84,7 +84,7 @@ export class ConnectionType { /** * Designates a connection to DocuSign Monitor. */ - public static readonly DOCUSIGNMONITOR = new ConnectionType('DOCUSIGNMONITOR'); + public static readonly DOCUSIGN_MONITOR = new ConnectionType('DOCUSIGNMONITOR'); /** * Designates a connection to Dynatrace. @@ -94,12 +94,12 @@ export class ConnectionType { /** * Designates a connection to Facebook Ads. */ - public static readonly FACEBOOKADS = new ConnectionType('FACEBOOKADS'); + public static readonly FACEBOOK_ADS = new ConnectionType('FACEBOOKADS'); /** * Designates a connection to Facebook Page Insights. */ - public static readonly FACEBOOKPAGEINSIGHTS = new ConnectionType('FACEBOOKPAGEINSIGHTS'); + public static readonly FACEBOOK_PAGE_INSIGHTS = new ConnectionType('FACEBOOKPAGEINSIGHTS'); /** * Designates a connection to Freshdesk. @@ -119,22 +119,22 @@ export class ConnectionType { /** * Designates a connection to Google Ads. */ - public static readonly GOOGLEADS = new ConnectionType('GOOGLEADS'); + public static readonly GOOGLE_ADS = new ConnectionType('GOOGLEADS'); /** * Designates a connection to Google Analytics 4. */ - public static readonly GOOGLEANALYTICS4 = new ConnectionType('GOOGLEANALYTICS4'); + public static readonly GOOGLE_ANALYTICS_4 = new ConnectionType('GOOGLEANALYTICS4'); /** * Designates a connection to Google Search Console. */ - public static readonly GOOGLESEARCHCONSOLE = new ConnectionType('GOOGLESEARCHCONSOLE'); + public static readonly GOOGLE_SEARCH_CONSOLE = new ConnectionType('GOOGLESEARCHCONSOLE'); /** * Designates a connection to Google Sheets. */ - public static readonly GOOGLESHEETS = new ConnectionType('GOOGLESHEETS'); + public static readonly GOOGLE_SHEETS = new ConnectionType('GOOGLESHEETS'); /** * Designates a connection to HubSpot. @@ -144,7 +144,7 @@ export class ConnectionType { /** * Designates a connection to Instagram Ads. */ - public static readonly INSTAGRAMADS = new ConnectionType('INSTAGRAMADS'); + public static readonly INSTAGRAM_ADS = new ConnectionType('INSTAGRAMADS'); /** * Designates a connection to Intercom. @@ -154,7 +154,7 @@ export class ConnectionType { /** * Designates a connection to Jira Cloud. */ - public static readonly JIRACLOUD = new ConnectionType('JIRACLOUD'); + public static readonly JIRA_CLOUD = new ConnectionType('JIRACLOUD'); /** * Designates a connection to LinkedIn. @@ -174,12 +174,12 @@ export class ConnectionType { /** * Designates a connection to Microsoft Dynamics 365 Finance and Operations. */ - public static readonly MICROSOFTDYNAMIC365FINANCEANDOPS = new ConnectionType('MICROSOFTDYNAMIC365FINANCEANDOPS'); + public static readonly MICROSOFT_DYNAMIC_365_FINANCE_AND_OPS = new ConnectionType('MICROSOFTDYNAMIC365FINANCEANDOPS'); /** * Designates a connection to Microsoft Teams. */ - public static readonly MICROSOFTTEAMS = new ConnectionType('MICROSOFTTEAMS'); + public static readonly MICROSOFT_TEAMS = new ConnectionType('MICROSOFTTEAMS'); /** * Designates a connection to Mixpanel. @@ -189,7 +189,7 @@ export class ConnectionType { /** * Designates a connection to Oracle NetSuite. */ - public static readonly NETSUITEERP = new ConnectionType('NETSUITEERP'); + public static readonly NETSUITE_ERP = new ConnectionType('NETSUITEERP'); /** * Designates a connection to PayPal. @@ -204,7 +204,7 @@ export class ConnectionType { /** * Designates a connection to Pipedrive. */ - public static readonly PIPEDRIVE = new ConnectionType('PIPEDRIVE'); + public static readonly PIPEDRIVE = new ConnectionType('PIPEDIVE'); /** * Designates a connection to Productboard. @@ -224,27 +224,27 @@ export class ConnectionType { /** * Designates a connection to Salesforce Commerce Cloud. */ - public static readonly SALESFORCECOMMERCECLOUD = new ConnectionType('SALESFORCECOMMERCECLOUD'); + public static readonly SALESFORCE_COMMERCE_CLOUD = new ConnectionType('SALESFORCECOMMERCECLOUD'); /** * Designates a connection to Salesforce Marketing Cloud. */ - public static readonly SALESFORCEMARKETINGCLOUD = new ConnectionType('SALESFORCEMARKETINGCLOUD'); + public static readonly SALESFORCE_MARKETING_CLOUD = new ConnectionType('SALESFORCEMARKETINGCLOUD'); /** * Designates a connection to Salesforce Marketing Cloud Account Engagement (MCAE). */ - public static readonly SALESFORCEPARDOT = new ConnectionType('SALESFORCEPARDOT'); + public static readonly SALESFORCE_PARDOT = new ConnectionType('SALESFORCEPARDOT'); /** * Designates a connection to SAP Concur. */ - public static readonly SAPCONCUR = new ConnectionType('SAPCONCUR'); + public static readonly SAP_CONCUR = new ConnectionType('SAPCONCUR'); /** * Designates a connection to SAP OData. */ - public static readonly SAPODATA = new ConnectionType('SAPODATA'); + public static readonly SAP_ODATA = new ConnectionType('SAPODATA'); /** * Designates a connection to SendGrid. @@ -274,7 +274,7 @@ export class ConnectionType { /** * Designates a connection to Snapchat Ads. */ - public static readonly SNAPCHATADS = new ConnectionType('SNAPCHATADS'); + public static readonly SNAPCHAT_ADS = new ConnectionType('SNAPCHATADS'); /** * Designates a connection to Stripe. @@ -289,7 +289,7 @@ export class ConnectionType { /** * Designates a connection to WooCommerce. */ - public static readonly WOOCOMMERCE = new ConnectionType('WOOCOMMERCE'); + public static readonly WOO_COMMERCE = new ConnectionType('WOOCOMMERCE'); /** * Designates a connection to Zendesk. @@ -299,7 +299,7 @@ export class ConnectionType { /** * Designates a connection to Zoho CRM. */ - public static readonly ZOHOCRM = new ConnectionType('ZOHOCRM'); + public static readonly ZOHO_CRM = new ConnectionType('ZOHOCRM'); /** * Designates a connection to Zoom. diff --git a/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts b/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts index 55ad754176d01..9ae904158e24d 100644 --- a/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts +++ b/packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts @@ -236,7 +236,7 @@ describe('SaaS connector connection types', () => { test('ADOBEANALYTICS connection type', () => { const stack = new cdk.Stack(); new glue.Connection(stack, 'Connection', { - type: glue.ConnectionType.ADOBEANALYTICS, + type: glue.ConnectionType.ADOBE_ANALYTICS, properties: { CONNECTION_URL: 'https://analytics.adobe.io', CLIENT_ID: 'client-id', @@ -271,7 +271,7 @@ describe('SaaS connector connection types', () => { test('BLACKBAUDRAISEREDGENXT connection type', () => { const stack = new cdk.Stack(); new glue.Connection(stack, 'Connection', { - type: glue.ConnectionType.BLACKBAUDRAISEREDGENXT, + type: glue.ConnectionType.BLACKBAUD_RAISERS_EDGE_NXT, properties: { CONNECTION_URL: 'https://api.blackbaud.com', CLIENT_ID: 'client-id', @@ -289,7 +289,7 @@ describe('SaaS connector connection types', () => { test('CIRCLECI connection type', () => { const stack = new cdk.Stack(); new glue.Connection(stack, 'Connection', { - type: glue.ConnectionType.CIRCLECI, + type: glue.ConnectionType.CIRCLE_CI, properties: { CONNECTION_URL: 'https://circleci.com/api', API_TOKEN: 'api-token', @@ -324,7 +324,7 @@ describe('SaaS connector connection types', () => { test('DOCUSIGNMONITOR connection type', () => { const stack = new cdk.Stack(); new glue.Connection(stack, 'Connection', { - type: glue.ConnectionType.DOCUSIGNMONITOR, + type: glue.ConnectionType.DOCUSIGN_MONITOR, properties: { CONNECTION_URL: 'https://monitor.docusign.com', USERNAME: 'username', @@ -359,7 +359,7 @@ describe('SaaS connector connection types', () => { test('FACEBOOKPAGEINSIGHTS connection type', () => { const stack = new cdk.Stack(); new glue.Connection(stack, 'Connection', { - type: glue.ConnectionType.FACEBOOKPAGEINSIGHTS, + type: glue.ConnectionType.FACEBOOK_PAGE_INSIGHTS, properties: { CONNECTION_URL: 'https://graph.facebook.com', ACCESS_TOKEN: 'access-token', @@ -410,7 +410,7 @@ describe('SaaS connector connection types', () => { test('GOOGLESEARCHCONSOLE connection type', () => { const stack = new cdk.Stack(); new glue.Connection(stack, 'Connection', { - type: glue.ConnectionType.GOOGLESEARCHCONSOLE, + type: glue.ConnectionType.GOOGLE_SEARCH_CONSOLE, properties: { CONNECTION_URL: 'https://searchconsole.googleapis.com', CLIENT_ID: 'client-id', @@ -446,7 +446,7 @@ describe('SaaS connector connection types', () => { test('MICROSOFTDYNAMIC365FINANCEANDOPS connection type', () => { const stack = new cdk.Stack(); new glue.Connection(stack, 'Connection', { - type: glue.ConnectionType.MICROSOFTDYNAMIC365FINANCEANDOPS, + type: glue.ConnectionType.MICROSOFT_DYNAMIC_365_FINANCE_AND_OPS, properties: { CONNECTION_URL: 'https://tenant.operations.dynamics.com', CLIENT_ID: 'client-id', @@ -464,7 +464,7 @@ describe('SaaS connector connection types', () => { test('MICROSOFTTEAMS connection type', () => { const stack = new cdk.Stack(); new glue.Connection(stack, 'Connection', { - type: glue.ConnectionType.MICROSOFTTEAMS, + type: glue.ConnectionType.MICROSOFT_TEAMS, properties: { CONNECTION_URL: 'https://graph.microsoft.com', CLIENT_ID: 'client-id', @@ -569,7 +569,7 @@ describe('SaaS connector connection types', () => { test('SALESFORCECOMMERCECLOUD connection type', () => { const stack = new cdk.Stack(); new glue.Connection(stack, 'Connection', { - type: glue.ConnectionType.SALESFORCECOMMERCECLOUD, + type: glue.ConnectionType.SALESFORCE_COMMERCE_CLOUD, properties: { CONNECTION_URL: 'https://instance.demandware.net', CLIENT_ID: 'client-id', @@ -587,7 +587,7 @@ describe('SaaS connector connection types', () => { test('SAPCONCUR connection type', () => { const stack = new cdk.Stack(); new glue.Connection(stack, 'Connection', { - type: glue.ConnectionType.SAPCONCUR, + type: glue.ConnectionType.SAP_CONCUR, properties: { CONNECTION_URL: 'https://us.api.concursolutions.com', CLIENT_ID: 'client-id', @@ -657,7 +657,7 @@ describe('SaaS connector connection types', () => { test('WOOCOMMERCE connection type', () => { const stack = new cdk.Stack(); new glue.Connection(stack, 'Connection', { - type: glue.ConnectionType.WOOCOMMERCE, + type: glue.ConnectionType.WOO_COMMERCE, properties: { CONNECTION_URL: 'https://yourstore.com/wp-json/wc/v3', CONSUMER_KEY: 'consumer-key', From 7b370143c8529a661c0993096372a172d1594c22 Mon Sep 17 00:00:00 2001 From: Pahud Hsieh Date: Wed, 27 Aug 2025 13:28:23 -0400 Subject: [PATCH 7/7] fix --- packages/@aws-cdk/aws-glue-alpha/lib/connection.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts b/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts index 5c0b141db4220..06a58d4b8a890 100644 --- a/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts +++ b/packages/@aws-cdk/aws-glue-alpha/lib/connection.ts @@ -204,7 +204,7 @@ export class ConnectionType { /** * Designates a connection to Pipedrive. */ - public static readonly PIPEDRIVE = new ConnectionType('PIPEDIVE'); + public static readonly PIPEDRIVE = new ConnectionType('PIPEDRIVE'); /** * Designates a connection to Productboard.