APPLICATION オブジェクトの作成およびテスト

このトピックでは、アプリケーションパッケージから APPLICATION オブジェクトを作成する方法について説明します。

APPLICATION オブジェクトの作成およびテストについて

Snowflake Native App Framework により、プロバイダーはアプリケーションパッケージと同じアカウント内に APPLICATION オブジェクトを作成することができます。これによりプロバイダーは、コンシューマーに公開する前に Snowflake Native App をテストすることができます。また、プロバイダーはプロバイダーアカウントとコンシューマーアカウントを交互に切り替えることなく、1つのアカウントで Snowflake Native App をテストできます。

APPLICATION オブジェクトの作成およびテストに必要な権限

アプリケーションパッケージから APPLICATION オブジェクトを作成するには、ロールに以下の権限が付与されている必要があります。

  • 使用するロールに付与されたアカウントレベルの CREATE APPLICATION 権限。

  • アプリケーションパッケージに対するオブジェクトレベルの付与された INSTALL 権限。

以下の例では、 GRANT <権限> コマンドを使用して、アカウントにこれらの権限を付与する方法を示しています。

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

DEVELOP 権限の使用

デフォルトでは、アプリケーションパッケージの作成に使用されるロールには、アプリケーションパッケージに基づいて APPLICATION オブジェクトを作成するための CREATE APPLICATION コマンドを実行する権限があります。

しかし、開発環境によっては、他のロールを持つユーザーにアプリケーションパッケージの作成とテストを許可することが必要になる場合があります。そうするには、ロールにアプリケーションパッケージに対するオブジェクトレベルの DEVELOP 権限を付与します。

アカウントレベルの DEVELOP 権限は、アプリケーションパッケージに基づいて APPLICATION オブジェクトを作成し、テストするために必要な権限を提供します。DEVELOP 権限により、ユーザーはアクセス権が付与されたアプリケーションパッケージを使用して、以下のタスクを実行できます。

  • アプリケーションパッケージで指定されたバージョンまたはパッチレベルに基づいて、 APPLICATION オブジェクトのバージョンを作成します。

  • ALTER APPLICATION コマンドを使用して、アプリケーションパッケージのバージョンをアップグレードします。

  • 名前付きステージ上のファイルを使用して、 APPLICATION オブジェクトを作成し、アップグレードします。

  • 開発モード で作成された APPLICATION オブジェクトのデバッグモードを有効にします。

特定のロールに DEVELOP 権限を付与するには、次の例に示すように GRANT <権限> コマンドを使用します。

GRANT DEVELOP ON APPLICATION PACKAGE hello_snowflake_package TO ROLE other_dev_role;
Copy

注釈

オブジェクトレベルの DEVELOP 権限は、単一のアプリケーションパッケージに特有のものです。DEVELOP 権限を割り当てるアプリケーションごとに、 GRANT <権限> を実行する必要があります。

アプリケーションの作成およびテストのワークフロー

Snowflake Native App Framework は、アプリケーションパッケージから APPLICATION オブジェクトを作成するためのさまざまな方法を提供します。これにより、コンシューマーに公開する前に Snowflake Native App をテストすることができます。使用するメソッドは、 APPLICATION オブジェクトのどの部分をテストするかによって異なります。

以下のステップは、 APPLICATION オブジェクトをテストするための典型的なワークフローの概要です。

  1. ステージのコンテンツを使用して APPLICATION オブジェクトを作成します。

    これにより、セットアップスクリプトやアプリケーションコードファイルの新バージョンをすばやくテストできます。詳細については、 ステージングされたファイルを使用したアプリケーションの作成 をご参照ください

  2. バージョンまたはパッチから APPLICATION オブジェクトを作成します。

    アプリケーションパッケージのバージョンまたはパッチを定義した後、このバージョンを使用して APPLICATION オブジェクトを作成し、このバージョンをテストすることができます。 バージョンまたはパッチレベルからのアプリケーションの作成 をご参照ください。

  3. APPLICATION オブジェクトをアップグレードします。

    アプリケーションパッケージのバージョンが正しく動作することを確認した後、既存の APPLICATION オブジェクトを新しいバージョンにアップグレードすることができます。次に挙げる2つの方法の1つでアップグレードします。

    • ステージを使用したアプリケーションのアップグレード(単一アカウント)

    • アプリケーションのバージョンのアップグレード(単一アカウント)

  4. アプリケーションパッケージから直接 APPLICATION オブジェクトを作成します。

    インストールされた APPLICATION オブジェクトが正しく動作することを確認した後、バージョンやステージファイルを指定することなく、アプリケーションパッケージから APPLICATION オブジェクトを作成することができます。これにより、デフォルトのリリースディレクティブを使用して APPLICATION オブジェクトが作成されます。

    詳細については、 ステージングされたファイルを使用したアプリケーションの作成 をご参照ください

  5. リストから Snowflake Native App をインストールします。

    アプリケーションパッケージと APPLICATION オブジェクトの両方が正しく動作することを確認したら、 Snowsight を使用してアプリケーションパッケージをリストに追加し、インストールをテストできます。

    詳細については、 ステージングされたファイルを使用したアプリケーションの作成 をご参照ください

アプリケーションの作成

Snowflake Native App Framework により、 APPLICATION オブジェクトをお客様のアカウントに直接インストールし、 Snowflake Native App をお客様と共有する前にテストすることができます。 CREATE APPLICATION コマンドは、 APPLICATION オブジェクトを作成するためのさまざまな構文をサポートしています。

注釈

次のセクションでは、アプリケーションパッケージ、必要なマニフェストファイルおよびセットアップスクリプトが作成されていることを前提としています。

ステージングされたファイルを使用したアプリケーションの作成

名前付きステージにアップロードされたマニフェストファイルとセットアップスクリプトを使用して、 APPLICATION オブジェクトを作成できます。これにより、アプリケーションパッケージにバージョンを追加することなく、これらのファイルの変更をテストすることができます。

次の例に示すように、ステージングされたファイルを使用して APPLICATION オブジェクトを作成するには、 CREATE 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 オブジェクトの表示

アカウントで利用可能な APPLICATION オブジェクトのリストを表示するには、次の例に示すように SHOW APPLICATIONS コマンドを使用します。

SHOW APPLICATIONS
Copy

開発モードについて

バージョンの指定 によるか、 名前付きステージにあるアプリケーションファイル により、アプリケーションパッケージから 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 オブジェクトをセッションの現在のアクティブコンテキストとして設定するには、次の例に示すように USE APPLICATION コマンドを実行します。

USE APPlICATION hello_snowflake_app;
Copy

注釈

このコマンドを実行するには、 APPLICATION オブジェクトに対する USAGE 権限がロールに付与されている必要があります。

インストール済みアプリケーションの詳細表示

APPLICATION オブジェクトの詳細を表示するには、次の例に示すように DESCRIBE APPLICATION コマンドを実行します。

DESC APPLICATION hello_snowflake_app;
Copy

開発モード では、このコマンドは、アプリのデータベースロールを介してコンシューマーに公開されるスキーマのみを表示します。

デバッグモード では、このコマンドは、インスタンスとアプリケーションパッケージのすべてのスキーマを表示します。