Snow 应用程序运行

在 Snowflake 账户中创建应用程序包,将代码文件上传到相应暂存区,然后通过应用程序包创建或升级应用程序对象。

语法

snow app run
  --version <version>
  --patch <patch>
  --from-release-directive
  --interactive / --no-interactive
  --force
  --validate / --no-validate
  --package-entity-id <package_entity_id>
  --app-entity-id <app_entity_id>
  --project <project_definition>
  --env <env_overrides>
  --connection <connection>
  --host <host>
  --port <port>
  --account <account>
  --user <user>
  --password <password>
  --authenticator <authenticator>
  --private-key-file <private_key_file>
  --token-file-path <token_file_path>
  --database <database>
  --schema <schema>
  --role <role>
  --warehouse <warehouse>
  --temporary-connection
  --mfa-passcode <mfa_passcode>
  --enable-diag
  --diag-log-path <diag_log_path>
  --diag-allowlist-path <diag_allowlist_path>
  --format <format>
  --verbose
  --debug
  --silent
Copy

实参

选项

--version TEXT

您要用来创建应用程序对象的现有应用程序包定义版本。根据项目定义文件确定应用程序对象和应用程序包名称。

--patch INTEGER

在现有应用程序包中定义的给定 --version 下的补丁号,应当用于创建应用程序对象。根据项目定义文件确定应用程序对象和应用程序包名称。

--from-release-directive

创建或升级应用程序对象,使其适用于 Snowflake 账户的版本指令指定的版本和补丁。如果给定应用程序包的 Snowflake 账户不存在版本指令,则该命令将失败,指令会由项目定义文件确定。默认:未设置。默认值:False。

--interactive / --no-interactive

启用此选项后,即使标准输入和输出不是终端设备,也会显示提示。在交互式 shell 环境中默认值为 True,否则为 False。

--force

启用此选项后,命令会隐式批准出现的任何提示。如果未指定交互模式,并且想要执行可能具有破坏性的操作,则应启用此选项。默认为未设置。默认值:False。

--validate / --no-validate

启用后,此选项将触发已部署的 Snowflake Native App 安装脚本 SQL 的验证。默认值:True。

--package-entity-id TEXT

当 definition_version 为 2 或更高时,要操作的包实体的 ID。

--app-entity-id TEXT

当 definition_version 为 2 或更高时,要操作的应用程序实体的 ID。

-p, --project TEXT

Snowflake 项目所在的路径。默认为当前工作目录。

--env TEXT

key=value 格式的字符串。覆盖用于模板的 env 部分的变量。默认值:[]。

--connection, -c, --environment TEXT

连接名称,如您在 config.toml 文件中所定义。默认值:default

--host TEXT

连接的主机地址。替换为连接指定的值。

--port INTEGER

连接的端口。替换为连接指定的值。

--account, --accountname TEXT

分配给 Snowflake 账户的名称。替换为连接指定的值。

--user, --username TEXT

连接到 Snowflake 的用户名。替换为连接指定的值。

--password TEXT

Snowflake 密码。替换为连接指定的值。

--authenticator TEXT

Snowflake 身份验证器。替换为连接指定的值。

--private-key-file, --private-key-path TEXT

Snowflake 私钥文件路径。替换为连接指定的值。

--token-file-path TEXT

连接到 Snowflake 时应使用的带有 OAuth 令牌的文件路径。

--database, --dbname TEXT

要使用的数据库。替换为连接指定的值。

--schema, --schemaname TEXT

要使用的数据库架构。替换为连接指定的值。

--role, --rolename TEXT

要使用的角色。替换为连接指定的值。

--warehouse TEXT

要使用的仓库。替换为连接指定的值。

--temporary-connection, -x

使用用命令行参数定义的连接,而不是在配置中定义的连接。默认值:False。

--mfa-passcode TEXT

用于多重身份验证的令牌 (MFA)。

--enable-diag

运行 Python 连接器诊断测试。默认值:False。

--diag-log-path TEXT

诊断报告路径。默认:<temporary_directory>。

--diag-allowlist-path TEXT

可选允许列表的诊断报告路径。

--format [TABLE|JSON]

指定输出格式。默认:TABLE。

--verbose, -v

显示日志级别 info 及更高级别的日志条目。默认值:False。

--debug

显示日志级别 debug 及更高级别的日志条目;调试日志包含其他信息。默认值:False。

--silent

关闭到控制台的中间输出。默认值:False。

--help

显示此命令的帮助文本。

使用说明

备注

此命令不接受由角色或仓库替换您的 config.toml 文件。相反,请将它们添加到 snowflake.ymlsnowflake.local.yml 中的 Native App 定义中。

此命令依赖解析的项目定义来确定要上传文件的暂存区、要上传的文件以及要创建的对象的名称。有关默认值的指导,请参阅 关于 Snowflake Native App 项目snow init 使用说明。您也可以根据自己的喜好更改它们,不过您要负责检查其是否与账户中的现有对象有任何冲突。

  • Snowflake CLI 创建的对象使用特殊注释 GENERATED_BY_SNOWCLI 进行标记。

  • 用于创建应用程序包和实例的角色必须具有适当的账户级别权限才能使用 Snowflake Native App。有关详细信息,请参阅 创建应用程序包在本地安装和测试应用程序

默认情况下,snow app run 命令会在 Snowflake 账户中创建应用程序包,将代码文件上传到其暂存区,验证安装脚本 SQL,然后创建(或升级)该应用程序的开发模式实例。运行默认命令时,应牢记以下几点:

  • 项目定义文件中在 nativeapp.project.artifacts 下指定的所有文件都会上传到 Snowflake 暂存区。此工件必须包括 manifest.yml 文件及其相关的设置脚本。

  • 如果需要,在调用 snow app run 之前,在 nativeapp.project.artifacts 下指定的所有文件都需要单独编译和打包。Snowflake CLI 没有提供任何为您执行这些中间任务的功能,因此您可以通过在自己的脚本中执行它来完全控制构建流程。

  • Snowflake CLI 在创建这些对象时使用默认应用程序包名称、暂存区名称和应用程序名称。

  • snow app run 在初始运行后的后续运行会将上传文件的状态与本地目录中的文件进行比较,并有选择地只上传修改过的文件以节省时间。如果任何文件已更改,应用程序将根据暂存区的新内容进行升级。

  • 如果应用程序包已经存在,且其分发属性为 INTERNAL,则命令会检查该包是否由 Snowflake CLI 创建。如果不是,命令会引发错误。如果应用程序包的分发是 EXTERNAL,则不执行此类检查。

  • 如果您正在使用的应用程序包的分发值与解析的项目定义中设置的值不同,则该命令会警告您,但会继续执行。

  • 应用程序实例会在 开发模式 中创建或升级。具体来说,它使用的是 暂存文件

如果您指定了 --version--patch--from-release-directive 选项,此命令将升级现有的应用程序实例,或者如果应用程序不存在,则创建一个实例。在这种情景下,它不会创建应用程序包。

  • 如果 Snowflake CLI 由于任何原因无法更新您的应用程序,例如尝试将最初以松散文件模式安装的应用程序升级到使用发布指令,则会尝试删除现有应用程序并使用所需的安装策略创建新的应用程序。该命令会提示您在执行操作之前确认删除。

  • 如果您不想与命令交互,而是要强制执行所有操作,请使用 --force 选项绕过所有提示,该选项对所有询问是否继续执行破坏性操作的输入都会选择同意。

  • Snowflake CLI 会尝试确定您是否正在交互式 shell 中运行命令。如果没有提供 --force,而您正在执行交互外壳中的命令,它会自动为您选择交互选项。

  • 如果要强制 Snowflake CLI 与你交互,即使不是在交互外壳中,也请使用 --interactive 选项。

示例

这些示例假定您已对代码文件进行了必要的变更,并已将其添加到 snowflake.ymlsnowflake.local.yml 文件中。

  • 如果要使用暂存文件创建应用程序包和应用程序,可以执行以下操作:

    cd my_app_project
    my_app_project_build_script.sh
    snow app run --connection="dev"
    
    Copy
  • 如果您已经拥有带有版本和修补程序的应用程序包,希望使用此版本和补丁创建应用程序,并调用交互模式,则可以执行以下操作:

    snow app run --version V1 --patch 12 --interactive --connection="dev"
    
    Copy

    在此处,版本 V1 和补丁 12 仅用作示例。

  • 如果您在应用程序包设置了现有的版本指令,希望使用其创建应用程序并绕过交互模式,则可以执行以下操作:

    snow app run --from-release-directive --force --connection="dev"
    
    Copy
  • 此示例展示了如何使用 --env 选项传递多个环境变量:

    snow app run --env source_folder="src/app" --env stage_name=mystage
    
    Copy
语言: 中文