Set up Openflow - Snowflake Deployment: Create deployment

After configuring core Snowflake, create an Openflow deployment. A deployment is the data plane container for your runtimes and connectors. Each deployment can host multiple runtimes, and each runtime can run multiple connectors, giving you flexibility to isolate workloads by project, team, or environment. There is no separate charge for the deployment itself; only active runtimes consume Snowflake credits.

  1. Create a deployment.
  2. [Optional] Configure an Openflow-specific event table - configure an Openflow-specific event table to store Openflow logs and metrics.

Create a deployment

You can create a deployment from the Openflow UI, which works for both generations, or with SQL. The SQL commands in this topic create gen 2 deployments.

Note

Which generation you get is determined by your account, not by how you create the deployment. Once your account is enabled for gen 2, every new deployment is gen 2 and you can no longer create gen 1 deployments. Existing gen 1 deployments keep working unchanged.

To check whether your account is enabled for gen 2, run the following command:

SHOW OPENFLOW DEPLOYMENTS;

If the command succeeds, your account is enabled for gen 2, including when it returns no rows. If it returns a SQL error, your account isn’t enabled for gen 2 and new deployments are gen 1.

For other ways to tell gen 1 and gen 2 resources apart, see How to identify gen 1 and gen 2 resources.

Using the Openflow UI

Note

To access the Openflow Runtime UI using PrivateLink as described in Setup PrivateLink UI access, ensure the PrivateLink option is enabled when creating a new Openflow - Snowflake Deployment.

  1. Sign in to Snowsight with a role defined in Configure core Snowflake requirements.
  2. In the navigation menu, select Ingestion » Openflow.
  3. Select Launch Openflow.
  4. In the Openflow UI, select Create a deployment. The Deployments tab opens.
  5. Select Create a deployment. The Creating a deployment wizard opens.
  6. In the Prerequisites step, ensure that you meet all the requirements. Select Next.
  7. In the Deployment location step, select Snowflake as the deployment location. Enter a name for your deployment. Select Next.
  8. Select Create Deployment.

Using SQL (gen 2)

Gen 2 deployments are first-class Snowflake objects created with SQL:

USE ROLE OPENFLOW_ADMIN;

CREATE OPENFLOW DEPLOYMENT my_deployment
  DEPLOYMENT_TYPE = SNOWFLAKE
  -- USE_PRIVATE_LINK = TRUE,  -- Enable if you need PrivateLink
  DISPLAY_NAME = 'My Snowflake Deployment';

For PrivateLink considerations and additional parameters, see Quickstart: gen 2 Openflow.

[Optional] Configure an Openflow-specific event table

Openflow generates logs and metrics and sends them to the Snowflake Event Table. For helpful queries to analyze this telemetry data, see Monitor Openflow.

By default, Openflow uses the account event table (SNOWFLAKE.TELEMETRY.EVENTS), but you can configure an Openflow-specific event table per deployment. A dedicated event table is recommended to optimize query performance, enable granular access control, and simplify Openflow monitoring and maintenance.

  1. Create the event table in the Openflow infrastructure schema:

    USE ROLE OPENFLOW_ADMIN;
    USE DATABASE <openflow_db>;
    USE SCHEMA <openflow_schema>;
    
    CREATE EVENT TABLE IF NOT EXISTS <openflow_db>.<openflow_schema>.openflow_events;
    
  2. Get your deployment name and set the event table:

    Gen 2:

    SHOW OPENFLOW DEPLOYMENTS;
    
    ALTER OPENFLOW DEPLOYMENT <deployment_name>
      SET EVENT_TABLE = '<openflow_db>.<openflow_schema>.openflow_events';
    

    Gen 1:

    SHOW OPENFLOW DATA PLANE INTEGRATIONS;
    
    ALTER OPENFLOW DATA PLANE INTEGRATION <OPENFLOW_DATAPLANE_INTEGRATION_NAME>
      SET EVENT_TABLE = '<openflow_db>.<openflow_schema>.openflow_events';
    

[Optional] Create a monitoring role

A monitoring role lets data engineers or operations teams monitor Openflow without having the OPENFLOW_ADMIN role.

  • To create a monitoring role, run the following code:

    Gen 1:

    USE ROLE OPENFLOW_ADMIN;
    
    CREATE ROLE IF NOT EXISTS <OPENFLOW_MONITOR_ROLE>;
    GRANT MONITOR ON INTEGRATION <OPENFLOW_DATAPLANE_INTEGRATION_NAME> TO ROLE <OPENFLOW_MONITOR_ROLE>;
    GRANT ROLE <OPENFLOW_MONITOR_ROLE> TO ROLE <OPENFLOW_ADMIN_ROLE>;
    GRANT ROLE <OPENFLOW_MONITOR_ROLE> TO USER <SNOWFLAKE_USER>;
    

    Gen 2:

    USE ROLE OPENFLOW_ADMIN;
    
    CREATE ROLE IF NOT EXISTS <OPENFLOW_MONITOR_ROLE>;
    GRANT MONITOR ON OPENFLOW DEPLOYMENT <deployment_name> TO ROLE <OPENFLOW_MONITOR_ROLE>;
    GRANT ROLE <OPENFLOW_MONITOR_ROLE> TO ROLE <OPENFLOW_ADMIN_ROLE>;
    GRANT ROLE <OPENFLOW_MONITOR_ROLE> TO USER <SNOWFLAKE_USER>;
    

Next steps

Create the execute-as role and external access integrations