创建应用程序对象

本主题介绍如何从应用程序包创建 APPLICATION 对象。

关于创建和测试应用程序对象

Snowflake Native App Framework 允许提供商在与应用程序包相同的账户内创建 APPLICATION 对象。这样的话,供应商能够先测试 Snowflake Native App,然后再向使用者发布。此外,供应商还可以在单个账户中测试 Snowflake Native App,无需在提供商账户和使用者账户之间切换。

创建和测试 APPLICATION 对象时所需的权限

要从应用程序包中创建 APPLICATION 对象,您必须向角色授予以下权限:

  • 向角色授予的 CREATE APPLICATION 账户级权限。

  • 关于应用程序包的 INSTALL 对象级权限。

以下示例说明如何使用 GRANT <privileges> 命令向账户授予这些权限:

GRANT CREATE APPLICATION ON ACCOUNT TO ROLE provider_role;
GRANT INSTALL ON APPLICATION PACKAGE hello_snowflake_package
  TO ROLE provider_role;
Copy

使用 DEVELOP 权限

默认情况下,用于创建应用程序包的角色有权运行 CREATE APPLICATION 命令,基于应用程序包创建 APPLICATION 对象。

但是,在某些开发环境中,您可能需要允许具有其他角色的用户创建和测试应用程序包。为此,向角色授予应用程序包的 DEVELOP 对象级权限。

DEVELOP 账户级权限提供必要权限,基于应用程序包创建和测试 APPLICATION 对象。借助 DEVELOP 权限,用户能够使用他们拥有访问权限的应用程序包执行以下任务:

  • 基于应用程序包中指定的版本或补丁级别,创建 APPLICATION 对象的版本。

  • 使用 ALTER APPLICATION 命令,升级应用程序包的版本。

  • 使用命名暂存区上的文件,创建并升级 APPLICATION 对象。

  • 对 :ref:`开发模式 <label-native_apps_dev_mode>`中创建的 APPLICATION 对象,启用调试模式。

要向特定角色授予 DEVELOP 权限,请使用 GRANT <privileges> 命令,如以下示例所示:

GRANT DEVELOP ON APPLICATION PACKAGE hello_snowflake_package TO ROLE other_dev_role;
Copy

备注

DEVELOP 对象级权限特定于单个应用程序包。对于每个要为之分配 DEVELOP 权限的应用程序,必须运行 GRANT <privileges>

创建和测试应用程序的工作流程

Snowflake Native App Framework 提供不同的方式,用于从应用程序包创建 APPLICATION 对象。这样的话,您能够先测试 Snowflake Native App,然后再向使用者发布。您使用的方法取决于您想要测试的 APPLICATION 对象。

以下步骤概述了用于测试 APPLICATION 对象的典型工作流程:

  1. 使用暂存区上的内容创建 APPLICATION 对象。

    这样的话,您可以快速测试安装脚本或应用程序代码文件的新版本。有关更多信息,请参阅 使用暂存文件创建应用程序

  2. 通过版本或补丁创建 APPLICATION 对象。

    定义应用程序包的版本或补丁后,您可以使用此版本创建 APPLICATION,从而测试此版本。请参阅 从版本或补丁级别创建应用程序对象

  3. 升级 APPLICATION 对象。

    验证某个版本的应用程序包正常工作后,您可以将现有的 APPLICATION 对象升级到新版本。您可以通过以下两种方式之一进行升级:

    • 使用暂存区升级应用程序(单个账户)

    • 通过版本升级应用程序(单个账户)

  4. 直接通过应用程序包创建 APPLICATION 对象。

    在确认 APPLICATION 对象正常工作后,您可以通过应用程序包创建 APPLICATION 对象,无需指定版本或暂存区文件。这样可以使用默认发布指令创建 APPLICATION 对象。

    有关更多信息,请参阅 使用暂存文件创建应用程序

  5. 通过列表安装 Snowflake Native App。

    在账户中验证应用程序包和 APPLICATION 对象工作正常之后,您可以将应用程序包添加到列表中并使用 Snowsight 测试安装。

    有关更多信息,请参阅 使用暂存文件创建应用程序

创建应用程序对象

Snowflake Native App Framework 允许您直接在账户中安装 APPLICATION 对象,以便在与客户共享之前测试 Snowflake Native App。CREATE APPLICATION 命令支持不同的语法,用于创建 APPLICATION 对象。

备注

以下部分假设您已经创建应用程序包以及所需的清单文件和安装脚本。

使用暂存文件创建应用程序

您可以使用上传到命名暂存区的清单文件和安装脚本创建 APPLICATION 对象。这样的话,您可以测试这些文件的更改,而无需向应用程序包中添加版本。

借助 CREATE APPLICATION 命令,使用暂存文件创建 APPLICATION 对象,如以下示例所示:

CREATE APPLICATION hello_snowflake_app FROM APPLICATION PACKAGE hello_snowflake_package
  USING '@hello_snowflake_code.core.hello_snowflake_stage';
Copy

从版本或补丁级别创建应用程序对象

在应用程序包中指定版本或补丁级别后,您可以基于该版本或补丁级别创建 APPLICATION 对象。

要通过特定版本创建 APPLICATION 对象,请使用 CREATE APPLICATION 命令,如以下示例所示:

CREATE APPLICATION hello_snowflake_app FROM APPLICATION PACKAGE hello_snowflake_package
  USING VERSION v1_0;
Copy

要从特定补丁级别创建 APPLICATION 对象,请使用 CREATE APPLICATION 命令,如以下示例所示:

CREATE APPLICATION hello_snowflake_app FROM APPLICATION PACKAGE hello_snowflake_package
  USING VERSION v1_0 PATCH 2;
Copy

基于发布指令创建应用程序

在应用程序包中指定发布指令后,您可以基于发布指令创建 APPLICATION 对象。此指令可以是自定义发布指令或默认发布指令。

要根据发布指令创建应用程序包,请使用 CREATE APPLICATION 命令,如以下示例所示:

CREATE APPLICATION hello_snowflake_app FROM APPLICATION PACKAGE hello_snowflake_package;
Copy

使用暂存区升级应用程序

要使用命名暂存区上的文件升级 APPLICATION 对象,请使用 ALTER APPLICATION 命令,如以下示例所示:

ALTER APPLICATION HelloSnowflake
  UPGRADE USING @CODEDATABASE.CODESCHEMA.AppCodeStage;
Copy

从版本或补丁升级应用程序

要升级使用特定版本创建的 APPLICATION 对象,请使用 ALTER APPLICATION 命令,如以下示例所示:

ALTER APPLICATION HelloSnowflake
 UPGRADE USING VERSION "v1_1";
Copy

查看应用程序对象

要查看账户可用的 APPLICATION 对象列表,请使用 SHOW APPLICATIONS 命令,如以下示例所示:

SHOW APPLICATIONS
Copy

关于开发模式

当您通过 :ref:` 指定版本 <label-native_apps_application_creating_version>` 或者 :ref:` 命名暂存区上的应用程序文件 <label-native_apps_application_creating_stage>` 来创建 APPLICATION 对象时,APPLICATION 对象被视为处于开发模式。

开发模式允许您在单个账户内测试 APPLICATION 对象并进行故障排除。在开发模式下,您可以根据应用程序包的特定版本,创建并测试 APPLICATION 对象。您还可以使用暂存区上的应用程序文件,创建并测试 APPLICATION 对象。这样的话,您能够快速测试安装脚本或应用程序逻辑的更改。

开发模式提供额外的 调试模式,允许您验证使用者无法查看的 APPLICATION 对象的状态。

例如,在开发模式下,对 APPLICATION 对象内的对象运行 SHOW 或者 DESC 命令时,仅显示使用者对其具有查看权限的对象。但是,在 DEBUG 模式下,您可以看到 APPLICATION 对象内的所有对象。

启用调试模式

Snowflake Native App Framework 允许您在调试模式下测试 APPLICATION 对象。调试模式允许您查看和修改 APPLICATION 对象内的所有对象。在此模式下,使用者看不到的对象(例如,未向数据库角色授予的对象或共享内容对象)变得可见。

在调试模式下使用 APPLICATION 对象需要以下内容:

  • APPLICATION 对象必须在开发模式下创建,这意味着它必须基于特定版本或暂存区上的文件。

  • 您必须对 APPLICATION 对象明确设置调试模式。

备注

只有以下对象才能启用和关闭调试模式:在包含应用程序包的相同账户内,在开发模式下创建的 APPLICATION 对象。

要对 APPLICATION 对象启用调试模式,请使用 ALTER APPLICATION 命令,如以下示例所示:

ALTER APPLICATION hello_snowflake_app SET DEBUG_MODE = TRUE;
Copy

此命令为名为 hello_snowflake_app 的 APPLICATION 对象启用调试模式。同样,要关闭调试模式,请使用如以下示例所示的相同命令:

ALTER APPLICATION hello_snowflake_app SET DEBUG_MODE = FALSE;
Copy

此命令为名为 hello_snowflake_app 的 APPLICATION 对象关闭调试模式。

备注

要运行此命令,您必须对 APPLICATION 对象拥有 OWNERSHIP 权限。您还必须对应用程序包拥有 DEVELOP 权限。

此外,APPLICATION 对象必须在开发模式下创建,并且与应用程序包在同一个账户中。

将应用程序对象设置为活动上下文

要将 APPLICATION 对象设置为会话的当前活动上下文,请运行 USEAPPLICATION 命令,如以下示例所示:

USE APPlICATION hello_snowflake_app;
Copy

备注

要运行此命令,您必须向角色授予 APPLICATION 对象的 USAGE 权限。

查看应用程序对象的详细信息

要查看应用程序对象的详细信息,请运行 DESCRIBE APPLICATION 命令,如以下示例所示:

DESC APPLICATION hello_snowflake_app;
Copy

在 :ref:` 开发模式 <label-native_apps_dev_mode>` 下,此命令仅显示通过应用程序数据库角色向使用者公开的架构。

在 :ref:` 调试模式 <label-native_apps_testing_debug_mode>` 下,此命令显示实例和应用程序包中的所有架构。

语言: 中文