Skip to content

Conversation

@pahud
Copy link
Contributor

@pahud pahud commented Aug 26, 2025

Issue # (if applicable)

Closes #35318.

Reason for this change

AWS Glue supports 58+ connection types in CloudFormation, but the aws-glue-alpha CDK module only exposed 28 of them as static properties in the ConnectionType class. This left 30 connection types missing, including SNOWFLAKE (requested in #35318) and many other popular enterprise platforms like Microsoft Teams, GitLab, Mailchimp, PayPal, QuickBooks, and other major SaaS platforms.

This forces users to use the less convenient workaround new ConnectionType('TYPE_NAME') instead of the standard static property pattern used for supported connection types like ConnectionType.JDBC or ConnectionType.MONGODB.

This enhancement provides comprehensive coverage of all AWS Glue supported connection types, offering a complete and consistent developer experience across all supported platforms.

Description of changes

This change adds 30 missing static readonly properties to the ConnectionType class in the aws-glue-alpha module, bringing full parity with AWS CloudFormation's supported connection types:

New Connection Types Added:

  • ADOBEANALYTICS - Adobe Analytics
  • ASANA - Asana project management
  • BLACKBAUDRAISEREDGENXT - Blackbaud Raiser's Edge NXT
  • CIRCLECI - CircleCI CI/CD platform
  • DATADOG - Datadog monitoring
  • DOCUSIGNMONITOR - DocuSign Monitor
  • DYNATRACE - Dynatrace APM
  • FACEBOOKPAGEINSIGHTS - Facebook Page Insights
  • FRESHDESK - Freshdesk support platform
  • FRESHSALES - Freshsales CRM
  • GITLAB - GitLab DevOps platform
  • GOOGLESEARCHCONSOLE - Google Search Console
  • LINKEDIN - LinkedIn social platform
  • MAILCHIMP - Mailchimp email marketing
  • MICROSOFTDYNAMIC365FINANCEANDOPS - Microsoft Dynamics 365 Finance and Operations
  • MICROSOFTTEAMS - Microsoft Teams collaboration
  • MIXPANEL - Mixpanel analytics
  • PAYPAL - PayPal payments
  • PENDO - Pendo product analytics
  • PIPEDRIVE - Pipedrive CRM (note: CloudFormation uses "PIPEDRIVE")
  • PRODUCTBOARD - Productboard product management
  • QUICKBOOKS - QuickBooks accounting
  • SALESFORCECOMMERCECLOUD - Salesforce Commerce Cloud
  • SAPCONCUR - SAP Concur expense management
  • SENDGRID - SendGrid email service
  • SMARTSHEET - Smartsheet collaboration
  • SNOWFLAKE - Snowflake data warehouse (originally requested in (aws-glue-alpha): No connection type for SNOWFLAKE #35318)
  • TWILIO - Twilio communications
  • WOOCOMMERCE - WooCommerce e-commerce
  • ZOOM - Zoom video conferencing

Implementation Details:

  • All properties follow the established pattern: public static readonly NAME = new ConnectionType('NAME');
  • Maintained strict alphabetical ordering to prevent merge conflicts
  • Added consistent JSDoc documentation for each connection type
  • Added comprehensive unit tests covering multiple new connection types
  • Maintained backward compatibility: This is a purely additive change - existing code continues to work unchanged

The implementation follows the exact pattern established by recent commit 44360cc, which added 20+ connection types using the same approach. The change enables users to write idiomatic CDK code for all AWS Glue supported platforms:

Before (workaround):

const connection = new Connection(this, 'SnowflakeConnection', {
  type: new ConnectionType('SNOWFLAKE'),
  properties: {
    JDBC_CONNECTION_URL: 'jdbc:snowflake://account.snowflakecomputing.com',
    USERNAME: 'username',
    PASSWORD: 'password',
  },
});

After (convenient static property):

const connection = new Connection(this, 'SnowflakeConnection', {
  type: ConnectionType.SNOWFLAKE,
  properties: {
    JDBC_CONNECTION_URL: 'jdbc:snowflake://account.snowflakecomputing.com',
    USERNAME: 'username',
    PASSWORD: 'password',
  },
});

Describe any new or updated permissions being added

N/A - This change only adds a static readonly property to an existing class. No new IAM permissions or resource access patterns are introduced.

Description of how you validated changes

Unit tests: Added comprehensive test coverage in packages/@aws-cdk/aws-glue-alpha/test/connection.test.ts:

  • 26 new test cases covering all newly added connection types
  • Each test creates a Connection using the respective ConnectionType.NAME static property
  • Includes realistic connection properties appropriate for each platform
  • Verifies generated CloudFormation templates contain the correct ConnectionType values
  • All tests follow the established pattern and pass successfully
  • Total test count increased from 539 to 565 tests - all passing

Integration tests: Not required - this is a simple static property addition with no behavioral changes. Recent precedent (commit 44360cc) added 20+ connection types without integration tests, following the same pattern.

Checklist


By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license

@aws-cdk-automation aws-cdk-automation requested a review from a team August 26, 2025 02:45
@github-actions github-actions bot added effort/small Small work item – less than a day of effort feature-request A feature should be added or improved. p2 labels Aug 26, 2025
@mergify mergify bot added the contribution/core This is a PR that came from AWS. label Aug 26, 2025
@pahud pahud changed the title chore(glue-alpha): add SNOWFLAKE connection type chore(glue-alpha): add 30 missing connection types including SNOWFLAKE Aug 26, 2025
@pahud pahud marked this pull request as ready for review August 26, 2025 12:56
Copy link
Contributor

@iankhou iankhou left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see a typo, PIPEDIVE, but the docs from CFn seem to have the same typo: https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-glue-connection-connectioninput.html#cfn-glue-connection-connectioninput-connectiontype

I took a look at CloudFormation code and it is a typo on their end too...

/**
* Designates a connection to Pipedrive.
*/
public static readonly PIPEDIVE = new ConnectionType('PIPEDIVE');
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this a typo? Should probably be PIPEDRIVE.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

all fixed

@mergify
Copy link
Contributor

mergify bot commented Aug 26, 2025

Thank you for contributing! Your pull request will be updated from main and then merged automatically (do not update manually, and be sure to allow changes to be pushed to your fork).

Copy link
Contributor

@iankhou iankhou left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should probably correct the typo in our interface. Hopefully CFn corrects this at some point by exposing PIPEDRIVE as a valid option, at which point we can transition over without an API change on our side.

@mergify
Copy link
Contributor

mergify bot commented Aug 26, 2025

This pull request has been removed from the queue for the following reason: pull request dequeued.

Pull request #35330 has been dequeued. The pull request rule doesn't match anymore. The following conditions don't match anymore:

  • #approved-reviews-by>=1
  • #changes-requested-reviews-by=0
  • check-success=build
  • check-success=validate-pr
  • any of: [🔀 queue conditions]
    • all of: [📌 queue conditions of queue default-squash]
      • #approved-reviews-by >= 1 [🛡 GitHub branch protection]
      • #changes-requested-reviews-by = 0 [🛡 GitHub branch protection]
      • any of: [🛡 GitHub branch protection]
        • check-neutral = validate-pr
        • check-skipped = validate-pr
        • check-success = validate-pr.

You should look at the reason for the failure and decide if the pull request needs to be fixed or if you want to requeue it.
If you do update this pull request, it will automatically be requeued once the queue conditions match again.
If you think this was a flaky issue instead, you can requeue the pull request, without updating it, by posting a @mergifyio requeue comment.

/**
* Designates a connection to Pipedrive.
*/
public static readonly PIPEDIVE = new ConnectionType('PIPEDIVE');
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public static readonly PIPEDIVE = new ConnectionType('PIPEDIVE');
public static readonly PIPEDRIVE = new ConnectionType('PIPEDIVE');

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

all fixed

Copy link
Contributor

@iankhou iankhou left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a typo in CloudFormation, we need to maintain the typo, but in our API, we can correct it.

@pahud pahud requested a review from iankhou August 26, 2025 23:13
Copy link
Member

@ozelalisen ozelalisen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be also nice to separate enum names with underscore for better dev experience. For example as
public static readonly ADOBE_ANALYTICS = new ConnectionType('ADOBEANALYTICS');

Comment on lines 65 to 72
* 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');
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a confusion on this part, where existing enum seems like to be deleted, but it is only moved to a different place. Could you keep the order on this part?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR sorts all of them alphabetically.

@ozelalisen ozelalisen self-assigned this Aug 27, 2025
@leonmk-aws
Copy link
Contributor

@Mergifyio refresh

@mergify
Copy link
Contributor

mergify bot commented Aug 27, 2025

refresh

✅ Pull request refreshed

@pahud
Copy link
Contributor Author

pahud commented Aug 27, 2025

It would be also nice to separate enum names with underscore for better dev experience. For example as public static readonly ADOBE_ANALYTICS = new ConnectionType('ADOBEANALYTICS');

Issue: Long compound connection type names were difficult to read without underscores

Solution Implemented: Updated all multi-word connection types to use underscores for improved readability while maintaining CloudFormation compatibility.

Connection Types Updated:

Before After
ADOBEANALYTICS ADOBE_ANALYTICS
BLACKBAUDRAISEREDGENXT BLACKBAUD_RAISERS_EDGE_NXT
CIRCLECI CIRCLE_CI
DOCUSIGNMONITOR DOCUSIGN_MONITOR
FACEBOOKADS FACEBOOK_ADS
FACEBOOKPAGEINSIGHTS FACEBOOK_PAGE_INSIGHTS
GOOGLEADS GOOGLE_ADS
GOOGLEANALYTICS4 GOOGLE_ANALYTICS_4
GOOGLESEARCHCONSOLE GOOGLE_SEARCH_CONSOLE
GOOGLESHEETS GOOGLE_SHEETS
INSTAGRAMADS INSTAGRAM_ADS
JIRACLOUD JIRA_CLOUD
MICROSOFTDYNAMIC365FINANCEANDOPS MICROSOFT_DYNAMIC_365_FINANCE_AND_OPS
MICROSOFTTEAMS MICROSOFT_TEAMS
NETSUITEERP NETSUITE_ERP
SALESFORCECOMMERCECLOUD SALESFORCE_COMMERCE_CLOUD
SALESFORCEMARKETINGCLOUD SALESFORCE_MARKETING_CLOUD
SALESFORCEPARDOT SALESFORCE_PARDOT
SAPCONCUR SAP_CONCUR
SAPODATA SAP_ODATA
SNAPCHATADS SNAPCHAT_ADS
WOOCOMMERCE WOO_COMMERCE
ZOHOCRM ZOHO_CRM

Single-Word Types Preserved:

The following connection types remained unchanged as they are single words or established brand names:
ASANA, DATADOG, DYNATRACE, FRESHDESK, FRESHSALES, GITLAB, HUBSPOT, INTERCOM, LINKEDIN, MAILCHIMP, MARKETO, MIXPANEL, PAYPAL, PENDO, PIPEDRIVE, PRODUCTBOARD, QUICKBOOKS, SALESFORCE, SENDGRID, SERVICENOW, SLACK, SMARTSHEET, SNOWFLAKE, STRIPE, TWILIO, ZENDESK, ZOOM

Let me know if I missed anything.

@pahud pahud requested a review from ozelalisen August 27, 2025 16:19
@ozelalisen
Copy link
Member

@pahud Thanks, those proposed enum names looking good. I assume you did not push them yet

@pahud
Copy link
Contributor Author

pahud commented Aug 27, 2025

@pahud Thanks, those proposed enum names looking good. I assume you did not push them yet

Pushed. Logged an internal ticket to CFN team for the PIPEDIVE typo (assuming PIPEDRIVE). Pending their response.

@ozelalisen ozelalisen added the pr/do-not-merge This PR should not be merged at this time. label Aug 28, 2025
@ozelalisen
Copy link
Member

Added do not merge label, until we get a response from service team

@github-actions
Copy link
Contributor

github-actions bot commented Sep 1, 2025

Closing in favor of a new PR with updated enum values

@github-actions github-actions bot closed this Sep 1, 2025
@ozelalisen ozelalisen reopened this Sep 24, 2025
@github-actions
Copy link
Contributor

This issue has been reopened and is now available for discussion.

@pahud
Copy link
Contributor Author

pahud commented Sep 30, 2025

still pending for internal clarification.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

contribution/core This is a PR that came from AWS. effort/small Small work item – less than a day of effort feature-request A feature should be added or improved. p2 pr/do-not-merge This PR should not be merged at this time.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

(aws-glue-alpha): No connection type for SNOWFLAKE

4 participants