配置 Snowflake CLI

Snowflake CLI 会使用名为 config.toml 的配置连接的全局配置文件和 Snowflake CLI 的日志。如果该文件不存在,则首次运行任何 snow 命令会自动创建一个空 config.toml 文件,然后您可以使用所需的连接填充该文件。有关 toml 文件格式的更多信息,请参阅 TOML (Tom 的[语义]明显、[配置]最小化的语言) (https://toml.io/en/)。Snowflake Python 库目前支持 TOML 1.0.0 版本。

config.toml 支持以下部分:

  • 用于定义和管理连接的 [connections]

  • 用于配置保存到日志文件的消息类型的 [logs]

Snowflake CLI 配置文件具有以下结构:

[connections]
[connections.myconnection]
account = "myorganzation-myaccount"
user = "jdoe"
...

[connections.testingconnection]
account = "myorganzation-myaccount"
user = "jdoe"
...

[cli.logs]
save_logs = true
level = "info"
path = "/home/<username>/.snowflake/logs"
Copy

.toml 配置文件的位置

默认情况下,Snowflake CLI 会查找 ~/.snowflake 目录中的 config.toml 文件,或者如果该目录不存在,则会查找系统特定位置,如下所示。您还可以使用 --config-file 标志或 SNOWFLAKE_HOME 环境变量指定应使用哪一个配置文件。

  • 如果您指定 --config-file 选项(例如 snow --config-file ./my-config-file-path),|sf-cli| 会使用指定的配置文件。

  • 如果已设置 SNOWFLAKE_HOME 环境变量,Snowflake CLI 会使用此变量指定的位置。

  • 如果计算机中存在 ~/.snowflake 目录,则 Snowflake CLI 将使用 ~/.snowflake/config.toml 文件。

  • 否则,Snowflake CLI 将根据操作系统使用以下某个位置中的 config.toml 文件:

    • Linux:~/.config/snowflake/config.toml,但您可以使用 XDG 变量对其进行更新

    • Windows:%USERPROFILE%\AppData\Local\snowflake\config.toml

    • Mac:~/Library/Application Support/snowflake/config.toml

备注

对于 MacOS 和 Linux 系统,Snowflake CLI 要求 config.toml 文件将其文件权限限制为仅限文件所有者读写。要设置文件所需的文件权限,请执行以下命令:

chown $USER config.toml
chmod 0600 config.toml
Copy

选择不同的配置文件

在某些情况下,例如持续集成、持续部署 (CI/CD) 环境,您可能更喜欢为测试和部署管道创建专用配置文件,而不是在单个 Snowflake 默认配置文件中定义所有可能的配置。

要使用不同的配置文件而不是默认文件,可以使用 snow 命令的 --config-file 选项,如下所示:

snow --config-file="my_config.toml" connection test
Copy

支持系统环境变量

Snowflake CLI 支持使用系统环境变量覆盖 config.toml 文件中使用以下格式定义的参数值:

SNOWFLAKE_<config-section>_<variable>=<value>
Copy

其中:

  • <config_section> 是配置文件中带有句点的部分替换为下划线 (_) 的名称 (.),例如 CLI_LOGS

  • 变量是该部分中定义的变量的名称,例如 path

一些例子包括:

  • 覆盖 config.toml 文件中 [cli.logs] 部分中的 path 参数:

    export SNOWFLAKE_CLI_LOGS_PATH="/Users/jondoe/snowcli_logs"
    
    Copy
  • 设置 myconnection 连接的密码:

    export SNOWFLAKE_CONNECTIONS_MYCONNECTION_PASSWORD="*******"
    
    Copy
  • 设置默认连接名称:

    export SNOWFLAKE_DEFAULT_CONNECTION_NAME="myconnection"
    
    Copy

配置日志记录

默认情况下,Snowflake CLI 自动将 INFOWARNINGERROR 级别消息保存到日志文件中。要禁用或自定义日志记录,请在 config.toml 文件中创建 [cli.logs] 部分:

[cli.logs]
save_logs = true
level = "info"
path = "/home/<username>/.snowflake/logs"
Copy

其中:

  • save_logs 指示是否将日志保存到文件中。默认:true

  • level 指定要保存到日志文件的消息级别。 从以下级别中进行选择,其中包括所选级别以下的所有级别:

    • debug

      警告

      切换到 debug 日志记录级别可能会暴露敏感信息,例如已执行 SQL 查询。启用此级别时要小心。

    • info

    • warning

    • error

    默认:info

  • path 指定保存日志文件的绝对路径。路径的格式因操作系统而异,如下所示:

    • Linux:path = "/home/<your_username>/.config/snowflake/logs"

    • MacOS:path = "/Users/<your_username>/Library/Application Support/snowflake/logs"

    • Windows:path = "C:\\Users\\<your_username>\\AppData\\Local\\snowflake\\logs"

    如果未指定,该命令将在默认 config.toml 文件位置中创建 logs 目录

如果您的 config.toml 是自动创建的,则 config.toml 文件包含填充有默认值的 |cli.logs| 部分。

一天的日志将附加到文件 snowflake-cli.log 中,后续重命名为 snowflake-cli.log.YYYY-MM-DD,如图所示。

ls logs/
Copy
snowflake-cli.log            snowflake-cli.log.2024-10-22
语言: 中文