Skip to main content
Qovery creates it in your account with a third-party provider, using credentials you enter in the form, as a Blueprint service in one of your environments.
New to this? You don’t need to know Terraform or Kubernetes. Qovery sets up Snowflake Database in your account with the provider: you fill in a form, or paste the prompt below into your coding agent. The values it publishes, listed under Outputs, reach your other services as environment variables. Qovery tells you when a newer version of the Blueprint is available. Check the requirements in the Reference section before you start, and try it first in a development environment.

Create it

  1. Open the environment, then New service › Blueprint.
  2. Find Snowflake Database in the catalog and pick the major version.
  3. Fill in the variables. Required ones are marked; the others use their defaults.
  4. Create the service, and deploy it now or later.
You don’t add any file to your repository. Qovery creates the Blueprint from the Console or the API.

Variables and outputs

Generated from qbm.yml at EXTERNAL/snowflake/default/1.0.3, the manifest the Console form is built from.
Outputs become environment variables that other services in the environment can use. By default Qovery also creates an alias for each output, prefixed with the Blueprint’s name; see Aliases Qovery creates for outputs for the naming rules and the cases where no alias is created.
Secret variables and outputs are encrypted and masked in Qovery, but Terraform can also keep their values, and values derived from them, in its state. With the Qovery-managed state backend (the default), Qovery stores the state. If you use your own backend, protect it and keep state files out of version control.

Reference

From the Blueprint’s README. Provisions a Snowflake database, schema, warehouse and application role with its grants (snowflake_database, snowflake_schema, snowflake_warehouse, snowflake_account_role, snowflake_grant_privileges_to_account_role) and, by default, a SERVICE user with a generated RSA key pair (snowflake_service_user, tls_private_key), via the official snowflakedb/snowflake provider (~> 2.0). Available on every cloud. This is an EXTERNAL blueprint: it authenticates with Snowflake account credentials supplied as variables, never with the cluster’s cloud identity, so it deploys the same way from an AWS, Azure, Scaleway or GCP cluster. The generated key pair is what lets a workload anywhere authenticate to Snowflake.

Credentials

Key-pair (JWT) auth: snowflake_organization_name, snowflake_account_name, snowflake_user and snowflake_private_key (sensitive), supplied as variables (credentials.default: env). The public half must already be registered on that user:
Password auth is deliberately not offered — Snowflake blocks it outright for SERVICE users and is retiring single-factor password sign-in, so it is the one credential shape guaranteed to break. snowflake_role (default ACCOUNTADMIN) is the role Terraform runs as. It needs CREATE DATABASE, CREATE WAREHOUSE, CREATE ROLE and CREATE USER on the account plus the right to grant them; SYSADMIN alone cannot create a role, which is why the default is not SYSADMIN.

Variables

Required

Optional

Outputs

Notes

  • database_name caps at 246, not Snowflake’s 255. The derived warehouse, role and user names append up to _APP_USER, so a 255-char database would produce a 264-char identifier that Snowflake rejects at apply. The cap is unconditional — setting warehouse_name, role_name and service_user_name explicitly does not lift it.
  • Identifiers are upper-cased. Snowflake upper-cases unquoted identifiers while the provider creates objects exactly as named, so mydb would become a case-sensitive object that only resolves when double-quoted. Every name here goes through upper() to avoid that.
  • Table grants are future grants. The schema is created by this blueprint, so every table it will hold is a future table at apply time. Tables that predate the deployment (only possible when pointing the role at an existing schema) are not covered.
  • The warehouse starts suspended and suspends again after auto_suspend_seconds; the first query resumes it. A warehouse bills per second while it is up, so this default is the difference between paying for queries and paying for idle time.
  • The generated private key is a long-lived credential, surfaced as a sensitive output and stored encrypted by Qovery. Rotating it means tainting tls_private_key.app and redeploying, which also updates the user’s registered public key.
  • data_retention_time_in_days above 1 requires Enterprise Edition; a Standard account rejects the apply rather than silently clamping.
  • Tables and views are deliberately out of scope: their schema belongs with the application that owns them. Point your migration tooling at database_name.schema_name.