Skip to content

Pulumi

Pulumi is an Infrastructure-as-Code (IaC) framework that allows you to define and provision infrastructure using familiar programming languages. Pulumi supports a wide range of cloud providers and services, including AWS, Azure, Google Cloud, and more.

The Snowflake emulator supports Pulumi, allowing you to define and provision Snowflake resources using the same commands and syntax as the Snowflake service. You can use Pulumi to create, update, and delete Snowflake resources locally, such as databases, schemas, tables, stages, and more.

In this guide, you will learn how to configure Pulumi to interact with the Snowflake emulator.

To use Pulumi with the Snowflake emulator, you need to configure the Snowflake provider in your Pulumi configuration file. Create a blank Pulumi project, and add the following environment variables to your Pulumi stack:

Terminal window
pulumi config set snowflake:account test
pulumi config set snowflake:region test
pulumi config set snowflake:username test
pulumi config set snowflake:password test
pulumi config set snowflake:host snowflake.localhost.localstack.cloud

You can install the Snowflake provider in any of the programming languages supported by Pulumi, such as Python, JavaScript, TypeScript, and Go. The following example shows how to install the Snowflake provider for your TypeScript project:

Terminal window
npm install @pulumi/snowflake

You can now use Pulumi to create Snowflake resources using the Snowflake provider. The following example shows how to create a Snowflake database using Pulumi:

import * as snowflake from "@pulumi/snowflake";
const simple = new snowflake.Database("simple", {
comment: "test comment",
dataRetentionTimeInDays: 3,
});

You can now deploy the Pulumi configuration to create the Snowflake resources locally. Run the following command to deploy the Pulumi configuration:

Terminal window
pulumi up

The expected output should show the resources being created in the Snowflake emulator:

Terminal window
Enter your passphrase to unlock config/secrets
Previewing update (snowflake):
Type Name Plan Info
+ pulumi:pulumi:Stack pulumi-snowflake-sample-snowflake create
+ └─ snowflake:index:Database simple create
Resources:
+ 2 to create
Do you want to perform this update? yes
Updating (snowflake):
Type Name Status Info
+ pulumi:pulumi:Stack pulumi-snowflake-sample-snowflake created (0.48s) 2
Resources:
+ 2 created
Duration: 5s