/cloudformation-snowflake-resource-providers

SnowFlake CFN Registry resource

Primary LanguageTypeScriptApache License 2.0Apache-2.0

Snowflake CloudFormation Resource Types

This collection of AWS CloudFormation resource types allow Snowflake to be controlled using AWS CloudFormation.

Resource Description Documentation
Snowflake::Database::Database This resource type manages a Snowflake Database /Snowflake-Database-Database
Snowflake::Database::Grant This resource type manages a Snowflake Database Grant /Snowflake-Database-Grant
Snowflake::Role::Grant This resource type manages a Snowflake Role Grant /Snowflake-Role-Grant
Snowflake::Role::Role This resource type manages a Snowflake Role /Snowflake-Role-Role
Snowflake::User::User This resource type manages a Snowflake User /Snowflake-User-User
Snowflake::Warehouse::Grant This resource type manages a Snowflake Warehouse Grant /Snowflake-Warehouse-Grant

Prerequisites

AWS Management Console

To get started:

  1. Sign in to the AWS Management Console with your account and navigate to CloudFormation.

  2. Select "Public extensions" from the left hand pane and filter Publisher by "Third Party".

  3. Use the search bar to filter by the "Snowflake" prefix.

Note: All official Snowflake resources begin with Snowflake:: and specify that they are Published by Snowflake.

  1. Select the desired resource name to view more information about its schema, and click Activate.

  2. On the Extension details page, specify:

  • Extension name
  • Execution role ARN
  • Automatic updates for minor version releases
  • Configuration
  1. In your terminal, specify the configuration data for the registered Snowflake CloudFormation resource type, in the given account and region by using the SetTypeConfiguration operation:

For example:

$ aws cloudformation set-type-configuration \
--region us-west-2 --type RESOURCE \
--type-name Snowflake::Database::Database \
--configuration-alias default \
--configuration "{ \"SnowflakeAccess\":{\"Account\":\"YOURACCOUNT\", \"Username\":\"YOURUSERNAME\", \"Password\":\"YOURPASSWORD\"}}"

Note: All Snowflake resources requires a type configuration to be set, except Snowflake::Database::Database.

  1. After you have your resource configured, create your AWS stack that includes any of the activated Snowflake resources.

For more information about available commands and workflows, see the official AWS documentation.

Supported regions

The Snowflake CloudFormation resources are available on the CloudFormation Public Registry in the following regions:

Code Name
us-east-1 US East (N. Virginia)
us-east-2 US East (Ohio)
us-west-1 US West (N. California)
us-west-2 US West (Oregon)
ap-south-1 Asia Pacific (Mumbai)
ap-northeast-1 Asia Pacific (Tokyo)
ap-northeast-2 Asia Pacific (Seoul)
ap-southeast-1 Asia Pacific (Singapore)
ap-southeast-2 Asia Pacific (Sydney)
ca-central-1 Canada (Central)
eu-central-1 Europe (Frankfurt)
eu-west-1 Europe (Ireland)
eu-west-2 Europe (London)
eu-west-3 Europe (Paris)
eu-north-1 Europe (Stockholm)
sa-east-1 South America (São Paulo)

Note: To privately register a resource in any other region, use the provided packages.

Examples

Shows how to create a Database in Snowflake

---
AWSTemplateFormatVersion: '2010-09-09'
Description: Shows how to create a Database in Snowflake
Resources:
  NewDatabase:
    Type: Snowflake::Database::Database
    Properties:
      Name: ExampleDatabase
      DataRetentionTimeInDays: 1
      MaxDataExtensionTimeInDays: 1
      DefaultDdlCollation: "en-ci"
      Comment: "This is a comment"

Shows how to create a Database Grant in Snowflake

---
AWSTemplateFormatVersion: '2010-09-09'
Description: Shows how to create a Database Grant in Snowflake
Resources:
  NewDatabaseGrant:
    Type: Snowflake::Database::Grant
    Properties:
      DatabaseName: MyDatabaseName
      Privilege: USAGE
      Role: MyRoleName

Shows how to create a Role Grant in Snowflake

---
AWSTemplateFormatVersion: '2010-09-09'
Description: Shows how to create a Role Grant in Snowflake
Resources:
  NewRoleGrant:
    Type: Snowflake::Role::Grant
    Properties:
      RoleName: MyRoleName
      User: MyUserName

Shows how to create a Role in Snowflake

---
AWSTemplateFormatVersion: '2010-09-09'
Description: Shows how to create a Database in Snowflake
Resources:
  NewRole:
    Type: Snowflake::Role::Role
    Properties:
      Name: ExampleRole
      Comment: This is an example Role

Shows how to create a User in Snowflake

---
AWSTemplateFormatVersion: '2010-09-09'
Description: Shows how to create a User in Snowflake
Resources:
  NewUser:
    Type: Snowflake::User::User
    Properties:
      Name: ExampleUser
      Password: 07l2S5vWjd0N
      FirstName: Example
      LastName: User

Shows how to create a Warehouse Grant in Snowflake

---
AWSTemplateFormatVersion: '2010-09-09'
Description: Shows how to create a Warehouse Grant in Snowflake
Resources:
  NewWarehouseGrant:
    Type: Snowflake::Warehouse::Grant
    Properties:
      WarehouseName: MyWarehouseName
      Privilege: USAGE
      Role: MyRoleName