{"id":21514831,"url":"https://github.com/getindata/terraform-snowflake-database","last_synced_at":"2026-03-06T10:03:58.365Z","repository":{"id":137896367,"uuid":"585880561","full_name":"getindata/terraform-snowflake-database","owner":"getindata","description":"Terraform module for managing Snowflake database","archived":false,"fork":false,"pushed_at":"2025-09-11T09:53:43.000Z","size":83,"stargazers_count":4,"open_issues_count":2,"forks_count":0,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-02-12T07:12:17.698Z","etag":null,"topics":["database","schema","snowflake","snowflake-db","terraform","terraform-module"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/getindata.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-06T10:31:56.000Z","updated_at":"2025-08-21T08:54:05.000Z","dependencies_parsed_at":"2025-04-09T20:11:44.155Z","dependency_job_id":"d0bbf425-55c9-4b6c-9bf7-de6644fcdb2a","html_url":"https://github.com/getindata/terraform-snowflake-database","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":"getindata/terraform-module-template","purl":"pkg:github/getindata/terraform-snowflake-database","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getindata%2Fterraform-snowflake-database","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getindata%2Fterraform-snowflake-database/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getindata%2Fterraform-snowflake-database/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getindata%2Fterraform-snowflake-database/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/getindata","download_url":"https://codeload.github.com/getindata/terraform-snowflake-database/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getindata%2Fterraform-snowflake-database/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30171656,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T07:56:45.623Z","status":"ssl_error","status_checked_at":"2026-03-06T07:55:55.621Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","schema","snowflake","snowflake-db","terraform","terraform-module"],"created_at":"2024-11-23T23:53:08.561Z","updated_at":"2026-03-06T10:03:58.333Z","avatar_url":"https://github.com/getindata.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Snowflake Database Terraform Module\n![Snowflake](https://img.shields.io/badge/-SNOWFLAKE-249edc?style=for-the-badge\u0026logo=snowflake\u0026logoColor=white)\n![Terraform](https://img.shields.io/badge/terraform-%235835CC.svg?style=for-the-badge\u0026logo=terraform\u0026logoColor=white)\n\n![License](https://badgen.net/github/license/getindata/terraform-snowflake-database/)\n![Release](https://badgen.net/github/release/getindata/terraform-snowflake-database/)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg height=\"150\" src=\"https://getindata.com/img/logo.svg\"\u003e\n  \u003ch3 align=\"center\"\u003eWe help companies turn their data into assets\u003c/h3\u003e\n\u003c/p\u003e\n\n---\n\nTerraform module for Snowflake database management.\n\n- Creates Snowflake database\n- Can create custom Snowflake database roles with role-to-role assignments\n- Can create a set of default database roles to simplify access management:\n  - `READONLY` - granted `USAGE` and `MONITOR` privileges on the database\n  - `TRANSFORMER` - allows creating schemas and some Snowflake objects in them\n  - `ADMIN` - full access, including database options like `data_retention_time_in_days`\n- Can create number of schemas in the database with their specific stages and access roles\n- Can create database ownership to specified account role\n\n## USAGE\n\n```terraform\nmodule \"snowflake_database\" {\n  source = \"getindata/database/snowflake\"\n  # version  = \"x.x.x\"\n  name = \"MY_DB\"\n\n  is_transient                = false\n  data_retention_time_in_days = 1\n\n  create_default_roles = true\n}\n```\n\n## EXAMPLES\n\n- [Simple](examples/simple) - Basic usage of the module\n- [Complete](examples/complete) - Advanced usage of the module\n\n## BREAKING CHANGES IN v2.x.x\n\nDue to breaking changes in Snowflake provider and additional code optimizations, **breaking changes** were introduced in `v2.0.0` version of this module.\n\nList of code and variable (API) changes:\n\n- Switched to `snowflake_database_role` module to leverage new `database_roles` mechanism\n- database `default_roles` and `custom_roles` are now managed by `getindata/database_role/snowflake` module\n- snowflake_database resource was updated to use newly introduced changes in Snowflake provider\n- snowflake_schema resource was updated to use newly introduced changes in Snowflake provider\n- variable `add_grants_to_existing_objects` was removed as it is no longer needed\n- minimum Snowflake provider version is `0.90.0`\n\nFor more information, refer to [variables.tf](variables.tf), list of inputs below and Snowflake provider documentation\n\nWhen upgrading from `v1.x`, expect most of the resources to be recreated - if recreation is impossible, then it is possible to import some existing resources.\n\n## Breaking changes in v3.x of the module\n\nDue to replacement of nulllabel (`context.tf`) with context provider, some **breaking changes** were introduced in `v3.0.0` version of this module.\n\nList od code and variable (API) changes:\n\n- Removed `context.tf` file (a single-file module with additional variables), which implied a removal of all its variables (except `name`):\n  - `descriptor_formats`\n  - `label_value_case`\n  - `label_key_case`\n  - `id_length_limit`\n  - `regex_replace_chars`\n  - `label_order`\n  - `additional_tag_map`\n  - `tags`\n  - `labels_as_tags`\n  - `attributes`\n  - `delimiter`\n  - `stage`\n  - `environment`\n  - `tenant`\n  - `namespace`\n  - `enabled`\n  - `context`\n- Remove support `enabled` flag - that might cause some backward compatibility issues with terraform state (please take into account that proper `move` clauses were added to minimize the impact), but proceed with caution\n- Additional `context` provider configuration\n- New variables were added, to allow naming configuration via `context` provider:\n  - `context_templates`\n  - `name_schema`\n  - `drop_public_schema_on_creation` which is `true` by default\n\n## Breaking changes in v4.x of the module\n\n- Due to rename of Snowflake terraform provider source, all `versions.tf` files were updated accordingly.\n\n  Please keep in mind to mirror this change in your own repos also.\n\n  For more information about provider rename, refer to [Snowflake documentation](https://github.com/snowflakedb/terraform-provider-snowflake/blob/main/SNOWFLAKEDB_MIGRATION.md).\n\n- Maximal version of supported provider was also unblocked (previosly locked in `terraform-snowflake-stage` module), so keep in mind that, starting with Snowflake provider version `1.x`, the `snowflake_stage` resource is considered a preview feature and must be explicitly enabled in the provider configuration.\n\n  **Required Provider Configuration:**\n\n  ```terraform\n  provider \"snowflake\" {\n    preview_features_enabled = [\"snowflake_stage_resource\"]\n  }\n  ```\n\n  Without this configuration, you will encounter the following error:\n\n  ```shell\n  Error: snowflake_stage_resource is currently a preview feature, and must be enabled by adding snowflake_stage_resource to preview_features_enabled in Terraform configuration.\n  ```\n\n  For more information about preview features, refer to the [Snowflake provider documentation](https://registry.terraform.io/providers/snowflakedb/snowflake/latest/docs/resources/stage#preview-features) and [Snowflake stage resource documentation](https://registry.terraform.io/providers/snowflakedb/snowflake/latest/docs/resources/stage).\n\n\u003c!-- BEGIN_TF_DOCS --\u003e\n\n\n\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_catalog\"\u003e\u003c/a\u003e [catalog](#input\\_catalog) | The database parameter that specifies the default catalog to use for Iceberg tables | `string` | `null` | no |\n| \u003ca name=\"input_comment\"\u003e\u003c/a\u003e [comment](#input\\_comment) | Specifies a comment for the database | `string` | `null` | no |\n| \u003ca name=\"input_context_templates\"\u003e\u003c/a\u003e [context\\_templates](#input\\_context\\_templates) | Map of context templates used for naming conventions - this variable supersedes `naming_scheme.properties` and `naming_scheme.delimiter` configuration | `map(string)` | `{}` | no |\n| \u003ca name=\"input_create_default_roles\"\u003e\u003c/a\u003e [create\\_default\\_roles](#input\\_create\\_default\\_roles) | Whether the default roles should be created | `bool` | `false` | no |\n| \u003ca name=\"input_data_retention_time_in_days\"\u003e\u003c/a\u003e [data\\_retention\\_time\\_in\\_days](#input\\_data\\_retention\\_time\\_in\\_days) | Number of days for which Snowflake retains historical data for performing Time Travel actions (SELECT, CLONE, UNDROP) on the object. A value of 0 effectively disables Time Travel for the specified database, schema, or table | `number` | `null` | no |\n| \u003ca name=\"input_database_ownership_grant\"\u003e\u003c/a\u003e [database\\_ownership\\_grant](#input\\_database\\_ownership\\_grant) | The name of the account role to which database privileges will be granted | `string` | `null` | no |\n| \u003ca name=\"input_default_ddl_collation\"\u003e\u003c/a\u003e [default\\_ddl\\_collation](#input\\_default\\_ddl\\_collation) | Specifies a default collation specification for all schemas and tables added to the database. | `string` | `null` | no |\n| \u003ca name=\"input_drop_public_schema_on_creation\"\u003e\u003c/a\u003e [drop\\_public\\_schema\\_on\\_creation](#input\\_drop\\_public\\_schema\\_on\\_creation) | Whether the `PUBLIC` schema should be dropped after the database creation | `bool` | `true` | no |\n| \u003ca name=\"input_enable_console_output\"\u003e\u003c/a\u003e [enable\\_console\\_output](#input\\_enable\\_console\\_output) | If true, enables stdout/stderr fast path logging for anonymous stored procedures | `bool` | `null` | no |\n| \u003ca name=\"input_external_volume\"\u003e\u003c/a\u003e [external\\_volume](#input\\_external\\_volume) | The database parameter that specifies the default external volume to use for Iceberg tables | `string` | `null` | no |\n| \u003ca name=\"input_is_transient\"\u003e\u003c/a\u003e [is\\_transient](#input\\_is\\_transient) | Specifies a database as transient. Transient databases do not have a Fail-safe period so they do not incur additional storage costs once they leave Time Travel; however, this means they are also not protected by Fail-safe in the event of a data loss | `bool` | `null` | no |\n| \u003ca name=\"input_log_level\"\u003e\u003c/a\u003e [log\\_level](#input\\_log\\_level) | Specifies the severity level of messages that should be ingested and made available in the active event table. Valid options are: [TRACE DEBUG INFO WARN ERROR FATAL OFF] | `string` | `null` | no |\n| \u003ca name=\"input_max_data_extension_time_in_days\"\u003e\u003c/a\u003e [max\\_data\\_extension\\_time\\_in\\_days](#input\\_max\\_data\\_extension\\_time\\_in\\_days) | Object parameter that specifies the maximum number of days for which Snowflake can extend the data retention period for tables in the database to prevent streams on the tables from becoming stale | `number` | `null` | no |\n| \u003ca name=\"input_name\"\u003e\u003c/a\u003e [name](#input\\_name) | Name of the resource | `string` | n/a | yes |\n| \u003ca name=\"input_name_scheme\"\u003e\u003c/a\u003e [name\\_scheme](#input\\_name\\_scheme) | Naming scheme configuration for the resource. This configuration is used to generate names using context provider:\u003cbr/\u003e    - `properties` - list of properties to use when creating the name - is superseded by `var.context_templates`\u003cbr/\u003e    - `delimiter` - delimited used to create the name from `properties` - is superseded by `var.context_templates`\u003cbr/\u003e    - `context_template_name` - name of the context template used to create the name\u003cbr/\u003e    - `replace_chars_regex` - regex to use for replacing characters in property-values created by the provider - any characters that match the regex will be removed from the name\u003cbr/\u003e    - `extra_values` - map of extra label-value pairs, used to create a name\u003cbr/\u003e    - `uppercase` - convert name to uppercase | \u003cpre\u003eobject({\u003cbr/\u003e    properties            = optional(list(string), [\"environment\", \"name\"])\u003cbr/\u003e    delimiter             = optional(string, \"_\")\u003cbr/\u003e    context_template_name = optional(string, \"snowflake-database\")\u003cbr/\u003e    replace_chars_regex   = optional(string, \"[^a-zA-Z0-9_]\")\u003cbr/\u003e    extra_values          = optional(map(string))\u003cbr/\u003e    uppercase             = optional(bool, true)\u003cbr/\u003e  })\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_quoted_identifiers_ignore_case\"\u003e\u003c/a\u003e [quoted\\_identifiers\\_ignore\\_case](#input\\_quoted\\_identifiers\\_ignore\\_case) | If true, the case of quoted identifiers is ignored | `bool` | `null` | no |\n| \u003ca name=\"input_replace_invalid_characters\"\u003e\u003c/a\u003e [replace\\_invalid\\_characters](#input\\_replace\\_invalid\\_characters) | Specifies whether to replace invalid UTF-8 characters with the Unicode replacement character () in query results for an Iceberg table | `bool` | `null` | no |\n| \u003ca name=\"input_roles\"\u003e\u003c/a\u003e [roles](#input\\_roles) | Roles created in the database scope | \u003cpre\u003emap(object({\u003cbr/\u003e    name_scheme = optional(object({\u003cbr/\u003e      properties            = optional(list(string))\u003cbr/\u003e      delimiter             = optional(string)\u003cbr/\u003e      context_template_name = optional(string)\u003cbr/\u003e      replace_chars_regex   = optional(string)\u003cbr/\u003e      extra_labels          = optional(map(string))\u003cbr/\u003e      uppercase             = optional(bool)\u003cbr/\u003e    }))\u003cbr/\u003e    comment              = optional(string)\u003cbr/\u003e    role_ownership_grant = optional(string)\u003cbr/\u003e    granted_roles        = optional(list(string))\u003cbr/\u003e    granted_to_roles     = optional(list(string))\u003cbr/\u003e    granted_to_users     = optional(list(string))\u003cbr/\u003e    database_grants = optional(object({\u003cbr/\u003e      all_privileges    = optional(bool)\u003cbr/\u003e      with_grant_option = optional(bool, false)\u003cbr/\u003e      privileges        = optional(list(string), null)\u003cbr/\u003e    }))\u003cbr/\u003e    schema_grants = optional(list(object({\u003cbr/\u003e      all_privileges             = optional(bool)\u003cbr/\u003e      with_grant_option          = optional(bool, false)\u003cbr/\u003e      privileges                 = optional(list(string), null)\u003cbr/\u003e      all_schemas_in_database    = optional(bool, false)\u003cbr/\u003e      future_schemas_in_database = optional(bool, false)\u003cbr/\u003e      schema_name                = optional(string, null)\u003cbr/\u003e    })))\u003cbr/\u003e    schema_objects_grants = optional(map(list(object({\u003cbr/\u003e      all_privileges    = optional(bool)\u003cbr/\u003e      with_grant_option = optional(bool)\u003cbr/\u003e      privileges        = optional(list(string), null)\u003cbr/\u003e      object_name       = optional(string)\u003cbr/\u003e      on_all            = optional(bool, false)\u003cbr/\u003e      schema_name       = optional(string)\u003cbr/\u003e      on_future         = optional(bool, false)\u003cbr/\u003e    }))), {})\u003cbr/\u003e  }))\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_schemas\"\u003e\u003c/a\u003e [schemas](#input\\_schemas) | Schemas to be created in the database | \u003cpre\u003emap(object({\u003cbr/\u003e    name_scheme = optional(object({\u003cbr/\u003e      properties            = optional(list(string))\u003cbr/\u003e      delimiter             = optional(string)\u003cbr/\u003e      context_template_name = optional(string)\u003cbr/\u003e      replace_chars_regex   = optional(string)\u003cbr/\u003e      extra_labels          = optional(map(string))\u003cbr/\u003e      uppercase             = optional(bool)\u003cbr/\u003e    }))\u003cbr/\u003e    skip_schema_creation                          = optional(bool, false)\u003cbr/\u003e    comment                                       = optional(string, null)\u003cbr/\u003e    data_retention_time_in_days                   = optional(number, null)\u003cbr/\u003e    max_data_extension_time_in_days               = optional(number, null)\u003cbr/\u003e    is_transient                                  = optional(bool, null)\u003cbr/\u003e    with_managed_access                           = optional(bool, null)\u003cbr/\u003e    external_volume                               = optional(string, null)\u003cbr/\u003e    catalog                                       = optional(string, null)\u003cbr/\u003e    replace_invalid_characters                    = optional(bool, null)\u003cbr/\u003e    default_ddl_collation                         = optional(string, null)\u003cbr/\u003e    storage_serialization_policy                  = optional(string, null)\u003cbr/\u003e    log_level                                     = optional(string, null)\u003cbr/\u003e    trace_level                                   = optional(string, null)\u003cbr/\u003e    suspend_task_after_num_failures               = optional(number, null)\u003cbr/\u003e    task_auto_retry_attempts                      = optional(number, null)\u003cbr/\u003e    user_task_managed_initial_warehouse_size      = optional(string, null)\u003cbr/\u003e    user_task_timeout_ms                          = optional(number, null)\u003cbr/\u003e    user_task_minimum_trigger_interval_in_seconds = optional(number, null)\u003cbr/\u003e    quoted_identifiers_ignore_case                = optional(bool, null)\u003cbr/\u003e    enable_console_output                         = optional(bool, null)\u003cbr/\u003e    pipe_execution_paused                         = optional(bool, null)\u003cbr/\u003e    create_default_roles                          = optional(bool)\u003cbr/\u003e    stages = optional(map(object({\u003cbr/\u003e      name_scheme = optional(object({\u003cbr/\u003e        properties            = optional(list(string))\u003cbr/\u003e        delimiter             = optional(string)\u003cbr/\u003e        context_template_name = optional(string)\u003cbr/\u003e        replace_chars_regex   = optional(string)\u003cbr/\u003e        extra_labels          = optional(map(string))\u003cbr/\u003e        uppercase             = optional(bool)\u003cbr/\u003e      }))\u003cbr/\u003e      aws_external_id      = optional(string)\u003cbr/\u003e      comment              = optional(string)\u003cbr/\u003e      copy_options         = optional(string)\u003cbr/\u003e      credentials          = optional(string)\u003cbr/\u003e      directory            = optional(string)\u003cbr/\u003e      encryption           = optional(string)\u003cbr/\u003e      file_format          = optional(string)\u003cbr/\u003e      snowflake_iam_user   = optional(string)\u003cbr/\u003e      storage_integration  = optional(string)\u003cbr/\u003e      url                  = optional(string)\u003cbr/\u003e      create_default_roles = optional(bool)\u003cbr/\u003e      roles = optional(map(object({\u003cbr/\u003e        name_scheme = optional(object({\u003cbr/\u003e          properties            = optional(list(string))\u003cbr/\u003e          delimiter             = optional(string)\u003cbr/\u003e          context_template_name = optional(string)\u003cbr/\u003e          replace_chars_regex   = optional(string)\u003cbr/\u003e          extra_labels          = optional(map(string))\u003cbr/\u003e          uppercase             = optional(bool)\u003cbr/\u003e        }))\u003cbr/\u003e        with_grant_option         = optional(bool)\u003cbr/\u003e        granted_to_roles          = optional(list(string))\u003cbr/\u003e        granted_to_database_roles = optional(list(string))\u003cbr/\u003e        granted_database_roles    = optional(list(string))\u003cbr/\u003e        stage_grants              = optional(list(string))\u003cbr/\u003e        all_privileges            = optional(bool)\u003cbr/\u003e      })), {})\u003cbr/\u003e    })), {})\u003cbr/\u003e    roles = optional(map(object({\u003cbr/\u003e      name_scheme = optional(object({\u003cbr/\u003e        properties            = optional(list(string))\u003cbr/\u003e        delimiter             = optional(string)\u003cbr/\u003e        context_template_name = optional(string)\u003cbr/\u003e        replace_chars_regex   = optional(string)\u003cbr/\u003e        extra_labels          = optional(map(string))\u003cbr/\u003e        uppercase             = optional(bool)\u003cbr/\u003e      }))\u003cbr/\u003e      comment                   = optional(string)\u003cbr/\u003e      granted_to_roles          = optional(list(string))\u003cbr/\u003e      granted_to_database_roles = optional(list(string))\u003cbr/\u003e      granted_database_roles    = optional(list(string))\u003cbr/\u003e      schema_grants = optional(list(object({\u003cbr/\u003e        all_privileges    = optional(bool)\u003cbr/\u003e        with_grant_option = optional(bool, false)\u003cbr/\u003e        privileges        = optional(list(string), null)\u003cbr/\u003e      })))\u003cbr/\u003e      schema_objects_grants = optional(map(list(object({\u003cbr/\u003e        all_privileges    = optional(bool)\u003cbr/\u003e        with_grant_option = optional(bool)\u003cbr/\u003e        privileges        = optional(list(string), null)\u003cbr/\u003e        object_name       = optional(string)\u003cbr/\u003e        on_all            = optional(bool, false)\u003cbr/\u003e        on_future         = optional(bool, false)\u003cbr/\u003e      }))), {})\u003cbr/\u003e    })), {})\u003cbr/\u003e  }))\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_storage_serialization_policy\"\u003e\u003c/a\u003e [storage\\_serialization\\_policy](#input\\_storage\\_serialization\\_policy) | The storage serialization policy for Iceberg tables that use Snowflake as the catalog. Valid options are: [COMPATIBLE OPTIMIZED] | `string` | `null` | no |\n| \u003ca name=\"input_suspend_task_after_num_failures\"\u003e\u003c/a\u003e [suspend\\_task\\_after\\_num\\_failures](#input\\_suspend\\_task\\_after\\_num\\_failures) | How many times a task must fail in a row before it is automatically suspended. 0 disables auto-suspending | `number` | `null` | no |\n| \u003ca name=\"input_task_auto_retry_attempts\"\u003e\u003c/a\u003e [task\\_auto\\_retry\\_attempts](#input\\_task\\_auto\\_retry\\_attempts) | Maximum automatic retries allowed for a user task | `number` | `null` | no |\n| \u003ca name=\"input_trace_level\"\u003e\u003c/a\u003e [trace\\_level](#input\\_trace\\_level) | Controls how trace events are ingested into the event table. Valid options are: [ALWAYS ON\\_EVENT OFF] | `string` | `null` | no |\n| \u003ca name=\"input_user_task_managed_initial_warehouse_size\"\u003e\u003c/a\u003e [user\\_task\\_managed\\_initial\\_warehouse\\_size](#input\\_user\\_task\\_managed\\_initial\\_warehouse\\_size) | The initial size of warehouse to use for managed warehouses in the absence of history | `string` | `null` | no |\n| \u003ca name=\"input_user_task_minimum_trigger_interval_in_seconds\"\u003e\u003c/a\u003e [user\\_task\\_minimum\\_trigger\\_interval\\_in\\_seconds](#input\\_user\\_task\\_minimum\\_trigger\\_interval\\_in\\_seconds) | Minimum amount of time between Triggered Task executions in seconds | `number` | `null` | no |\n| \u003ca name=\"input_user_task_timeout_ms\"\u003e\u003c/a\u003e [user\\_task\\_timeout\\_ms](#input\\_user\\_task\\_timeout\\_ms) | User task execution timeout in milliseconds | `number` | `null` | no |\n\n## Modules\n\n| Name | Source | Version |\n|------|--------|---------|\n| \u003ca name=\"module_roles_deep_merge\"\u003e\u003c/a\u003e [roles\\_deep\\_merge](#module\\_roles\\_deep\\_merge) | Invicton-Labs/deepmerge/null | 0.1.5 |\n| \u003ca name=\"module_snowflake_custom_role\"\u003e\u003c/a\u003e [snowflake\\_custom\\_role](#module\\_snowflake\\_custom\\_role) | getindata/database-role/snowflake | 3.0.0 |\n| \u003ca name=\"module_snowflake_default_role\"\u003e\u003c/a\u003e [snowflake\\_default\\_role](#module\\_snowflake\\_default\\_role) | getindata/database-role/snowflake | 3.0.0 |\n| \u003ca name=\"module_snowflake_schema\"\u003e\u003c/a\u003e [snowflake\\_schema](#module\\_snowflake\\_schema) | getindata/schema/snowflake | 4.0.0 |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_catalog\"\u003e\u003c/a\u003e [catalog](#output\\_catalog) | The database parameter that specifies the default catalog to use for Iceberg tables |\n| \u003ca name=\"output_data_retention_time_in_days\"\u003e\u003c/a\u003e [data\\_retention\\_time\\_in\\_days](#output\\_data\\_retention\\_time\\_in\\_days) | Data retention days for the database |\n| \u003ca name=\"output_database_ownership_grant\"\u003e\u003c/a\u003e [database\\_ownership\\_grant](#output\\_database\\_ownership\\_grant) | The name of the account role to which database ownership will be granted |\n| \u003ca name=\"output_database_roles\"\u003e\u003c/a\u003e [database\\_roles](#output\\_database\\_roles) | Snowflake Database roles |\n| \u003ca name=\"output_default_ddl_collation\"\u003e\u003c/a\u003e [default\\_ddl\\_collation](#output\\_default\\_ddl\\_collation) | Specifies a default collation specification for all schemas and tables added to the database. |\n| \u003ca name=\"output_enable_console_output\"\u003e\u003c/a\u003e [enable\\_console\\_output](#output\\_enable\\_console\\_output) | If true, enables stdout/stderr fast path logging for anonymous stored procedures |\n| \u003ca name=\"output_external_volume\"\u003e\u003c/a\u003e [external\\_volume](#output\\_external\\_volume) | The database parameter that specifies the default external volume to use for Iceberg tables |\n| \u003ca name=\"output_is_transient\"\u003e\u003c/a\u003e [is\\_transient](#output\\_is\\_transient) | Specifies a database as transient. Transient databases do not have a Fail-safe period so they do not incur additional storage costs once they leave Time Travel; however, this means they are also not protected by Fail-safe in the event of a data loss |\n| \u003ca name=\"output_log_level\"\u003e\u003c/a\u003e [log\\_level](#output\\_log\\_level) | Specifies the severity level of messages that should be ingested and made available in the active event table. Valid options are: [TRACE DEBUG INFO WARN ERROR FATAL OFF] |\n| \u003ca name=\"output_max_data_extension_time_in_days\"\u003e\u003c/a\u003e [max\\_data\\_extension\\_time\\_in\\_days](#output\\_max\\_data\\_extension\\_time\\_in\\_days) | Object parameter that specifies the maximum number of days for which Snowflake can extend the data retention period for tables in the database to prevent streams on the tables from becoming stale |\n| \u003ca name=\"output_name\"\u003e\u003c/a\u003e [name](#output\\_name) | Name of the database |\n| \u003ca name=\"output_quoted_identifiers_ignore_case\"\u003e\u003c/a\u003e [quoted\\_identifiers\\_ignore\\_case](#output\\_quoted\\_identifiers\\_ignore\\_case) | If true, the case of quoted identifiers is ignored |\n| \u003ca name=\"output_replace_invalid_characters\"\u003e\u003c/a\u003e [replace\\_invalid\\_characters](#output\\_replace\\_invalid\\_characters) | Specifies whether to replace invalid UTF-8 characters with the Unicode replacement character () in query results for an Iceberg table |\n| \u003ca name=\"output_schemas\"\u003e\u003c/a\u003e [schemas](#output\\_schemas) | This database schemas |\n| \u003ca name=\"output_storage_serialization_policy\"\u003e\u003c/a\u003e [storage\\_serialization\\_policy](#output\\_storage\\_serialization\\_policy) | The storage serialization policy for Iceberg tables that use Snowflake as the catalog. Valid options are: [COMPATIBLE OPTIMIZED] |\n| \u003ca name=\"output_suspend_task_after_num_failures\"\u003e\u003c/a\u003e [suspend\\_task\\_after\\_num\\_failures](#output\\_suspend\\_task\\_after\\_num\\_failures) | How many times a task must fail in a row before it is automatically suspended. 0 disables auto-suspending |\n| \u003ca name=\"output_task_auto_retry_attempts\"\u003e\u003c/a\u003e [task\\_auto\\_retry\\_attempts](#output\\_task\\_auto\\_retry\\_attempts) | Maximum automatic retries allowed for a user task |\n| \u003ca name=\"output_trace_level\"\u003e\u003c/a\u003e [trace\\_level](#output\\_trace\\_level) | Controls how trace events are ingested into the event table. Valid options are: [ALWAYS ON\\_EVENT OFF] |\n| \u003ca name=\"output_user_task_managed_initial_warehouse_size\"\u003e\u003c/a\u003e [user\\_task\\_managed\\_initial\\_warehouse\\_size](#output\\_user\\_task\\_managed\\_initial\\_warehouse\\_size) | The initial size of warehouse to use for managed warehouses in the absence of history |\n| \u003ca name=\"output_user_task_minimum_trigger_interval_in_seconds\"\u003e\u003c/a\u003e [user\\_task\\_minimum\\_trigger\\_interval\\_in\\_seconds](#output\\_user\\_task\\_minimum\\_trigger\\_interval\\_in\\_seconds) | Minimum amount of time between Triggered Task executions in seconds |\n| \u003ca name=\"output_user_task_timeout_ms\"\u003e\u003c/a\u003e [user\\_task\\_timeout\\_ms](#output\\_user\\_task\\_timeout\\_ms) | User task execution timeout in milliseconds |\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_context\"\u003e\u003c/a\u003e [context](#provider\\_context) | \u003e=0.4.0 |\n| \u003ca name=\"provider_snowflake\"\u003e\u003c/a\u003e [snowflake](#provider\\_snowflake) | \u003e= 0.95 |\n\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | \u003e= 1.3 |\n| \u003ca name=\"requirement_context\"\u003e\u003c/a\u003e [context](#requirement\\_context) | \u003e=0.4.0 |\n| \u003ca name=\"requirement_snowflake\"\u003e\u003c/a\u003e [snowflake](#requirement\\_snowflake) | \u003e= 0.95 |\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [snowflake_database.this](https://registry.terraform.io/providers/snowflakedb/snowflake/latest/docs/resources/database) | resource |\n| [snowflake_grant_ownership.database_ownership](https://registry.terraform.io/providers/snowflakedb/snowflake/latest/docs/resources/grant_ownership) | resource |\n| [context_label.this](https://registry.terraform.io/providers/cloudposse/context/latest/docs/data-sources/label) | data source |\n\u003c!-- END_TF_DOCS --\u003e\n\n## CONTRIBUTING\n\nContributions are very welcomed!\n\nStart by reviewing [contribution guide](CONTRIBUTING.md) and our [code of conduct](CODE_OF_CONDUCT.md). After that, start coding and ship your changes by creating a new PR.\n\n## LICENSE\n\nApache 2 Licensed. See [LICENSE](LICENSE) for full details.\n\n## AUTHORS\n\n\u003c!--- Replace repository name --\u003e\n\u003ca href=\"https://github.com/getindata/REPO_NAME/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=getindata/terraform-snowflake-database\" /\u003e\n\u003c/a\u003e\n\nMade with [contrib.rocks](https://contrib.rocks).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetindata%2Fterraform-snowflake-database","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgetindata%2Fterraform-snowflake-database","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetindata%2Fterraform-snowflake-database/lists"}