Configuring Connection Details

For the direction and binder name of this Micro-Integration, see Micro-Integration for Snowflake .

This section provides instructions for configuring the connection details required to establish communication between the Micro-Integration and your third-party system.

For information about configuring the connection to the event broker, see Step 1: Connecting to Your Event Broker .

For information about configuring error handling, see Step 5: Error Handling.

We recommend starting from the application.yml file provided in the samples/config directory of your downloaded archive, and updating it with the connection details described in this section, rather than building a configuration file from scratch. For more information, see Deploying Your Self-Managed Micro-Integration .

The Micro-Integration requires Snowflake key-pair authentication; username and password authentication is not supported. See Snowflake Prerequisites for Snowflake-side setup steps.

Message-to-Row Mapping

Each message that the Micro-Integration consumes from the event broker is written as a single row to the target Snowflake table, using a fixed two-column schema:

RECORD_CONTENT  VARIANT  -- structured payloads serialized to JSON; strings and binary passed through
RECORD_METADATA VARIANT  -- message headers explicitly mapped to RECORD_METADATA

The RECORD_CONTENT column contains the output of the mapping stage. Structured payloads (maps, collections, arrays) are serialized to JSON. String and binary payloads are written as-is. The RECORD_METADATA column is not populated automatically: only headers that you explicitly map appear there. If you don't map any headers, RECORD_METADATA remains empty. For information about mapping headers and payloads, see Message Headers and Mapping Message Headers and Payloads.

Snowflake Connection Details

Manual Configuration

To manually configure the Snowflake connection details, set the following values in the application.yml file:

snowflake:
  url: <locator>.<region>.snowflakecomputing.com:443
  username: snowflake_user
  role: <role>
  private-key-path: <private-key-path>
  private-key-password: <password>

Where:

  • <role>: Snowflake role, for example: ACCOUNTADMIN, SECURITYADMIN, USERADMIN, SYSADMIN, PUBLIC.

    For more information, see: Create Role and Overview of Access Control in the Snowflake documentation.

  • <private-key-path>: The file protocol path to the private key file, for example, 'file:///C:/Users/admin/Documents/privateKeyPEM.p8'.

    For more information, see Key-pair authentication and key-pair rotation in the Snowflake documentation.

  • <password>: The password for the encrypted private key, if applicable.

Snowflake Binder Configuration Options

These properties must be prefixed with snowflake.

Config Option Type Description

url

string

The Snowflake account URL in the format:

<locator>.<region>.snowflakecomputing.com:443

For instance, for the Snowflake account URL https://nsb82454.us-east-1.snowflakecomputing.com/ the url property would be nsb82454.us-east-1.snowflakecomputing.com:44.

username

string

The user login name for the Snowflake account.

role

string

The role that the user should take while performing ingestion, for example: ACCOUNTADMIN, SECURITYADMIN, USERADMIN, SYSADMIN, PUBLIC.

For more information, see: Create Role and Overview of Access Control in the Snowflake documentation.

private-key-path

string

The file protocol path to the private key to use to authenticate the user, for example, 'file:///C:/Users/admin/Documents/privateKeyPEM.p8'.

Supports both encrypted and unencrypted keys.

For more information, see Key-pair authentication and key-pair rotation in the Snowflake documentation.

private-key-password

string

The password for the encrypted private key, if applicable.

Connecting to Multiple Systems

To connect to multiple systems of the same type, use the Spring Cloud Stream multiple binder syntax.    

For example:

spring:
  cloud:
    stream:

      binders:
        solace1: # 1st solace binder in this example 
          type: solace
          environment: 
            solace: 
              java:
                host: tcp://localhost:55555
        solace2: # 2nd solace binder in this example 
          type: solace
          environment: 
            solace:
              java:
                host: tcp://other-host:55555
        snowflake1: # The only snowflake binder
          type: snowflake
          environment:
            snowflake:
              # Add connection and binder properties here to customize behavior.
        # Required for internal use
        undefined:
          type: undefined
 
      bindings: 
        input-0:
          destination: <input-destination>
          binder: solace1 # Reference 1st solace binder 
        output-0:
          destination: <output-destination> 
          binder: snowflake1
        input-1:
          destination: <input-destination>
          binder: solace2 # Reference 2nd solace binder 
        output-1:
          destination: <output-destination>
          binder: snowflake1

The configuration above defines two binders of type solace and one binder of type snowflake, which are then referenced within the bindings.

Each binder above is configured independently under spring.cloud.stream.binders.<bindername>.environment.

When connecting to multiple systems, all binder configuration must be specified using the multiple binder syntax for all binders. For example, under the spring.cloud.stream.binders.<binder-name>.environment.

Do not use single-binder configuration (for example, solace.java.* at the root of your application.yml) while using the multiple binder syntax.