アプリケーションオブジェクトを作成します。¶
このトピックでは、アプリケーションパッケージから 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;
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;
注釈
オブジェクトレベルの DEVELOP 権限は、単一のアプリケーションパッケージに特有のものです。DEVELOP 権限を割り当てるアプリケーションごとに、 GRANT <権限> を実行する必要があります。
アプリケーションの作成およびテストのワークフロー¶
Snowflake Native App Framework は、アプリケーションパッケージから APPLICATION オブジェクトを作成するためのさまざまな方法を提供します。これにより、コンシューマーに公開する前に Snowflake Native App をテストすることができます。使用するメソッドは、 APPLICATION オブジェクトのどの部分をテストするかによって異なります。
以下のステップは、 APPLICATION オブジェクトをテストするための典型的なワークフローの概要です。
ステージのコンテンツを使用して APPLICATION オブジェクトを作成します。
これにより、セットアップスクリプトやアプリケーションコードファイルの新バージョンをすばやくテストできます。詳細については、 ステージングされたファイルを使用してアプリケーションを作成する をご参照ください
バージョンまたはパッチから APPLICATION オブジェクトを作成します。
アプリケーションパッケージのバージョンまたはパッチを定義した後、このバージョンを使用して APPLICATION オブジェクトを作成し、このバージョンをテストすることができます。 バージョンまたはパッチレベルからオブジェクトを作成する をご参照ください。
APPLICATION オブジェクトをアップグレードします。
アプリケーションパッケージのバージョンが正しく動作することを確認した後、既存の APPLICATION オブジェクトを新しいバージョンにアップグレードすることができます。次に挙げる2つの方法の1つでアップグレードします。
ステージを使用したアプリケーションのアップグレード(単一アカウント)
アプリケーションのバージョンのアップグレード(単一アカウント)
アプリケーションパッケージから直接 APPLICATION オブジェクトを作成します。
インストールされた APPLICATION オブジェクトが正しく動作することを確認した後、バージョンやステージファイルを指定することなく、アプリケーションパッケージから APPLICATION オブジェクトを作成することができます。これにより、デフォルトのリリースディレクティブを使用して APPLICATION オブジェクトが作成されます。
詳細については、 ステージングされたファイルを使用してアプリケーションを作成する をご参照ください
リストから 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';
バージョンまたはパッチレベルからオブジェクトを作成する¶
アプリケーションパッケージでバージョンまたはパッチレベルを指定した後、そのバージョンまたはパッチレベルに基づいて APPLICATION オブジェクトを作成できます。
特定のバージョンから APPLICATION オブジェクトを作成するには、次の例に示すように CREATE APPLICATION コマンドを使用します。
CREATE APPLICATION hello_snowflake_app FROM APPLICATION PACKAGE hello_snowflake_package
USING VERSION v1_0;
特定のパッチレベルから APPLICATION オブジェクトを作成するには、次の例に示すように CREATE APPLICATION コマンドを使用します。
CREATE APPLICATION hello_snowflake_app FROM APPLICATION PACKAGE hello_snowflake_package
USING VERSION v1_0 PATCH 2;
リリースディレクティブに基づいてアプリケーションを作成する¶
アプリケーションパッケージのリリースディレクティブを指定した後、リリースディレクティブに基づいて APPLICATION オブジェクトを作成することができます。これはカスタムのリリースディレクティブでもデフォルトのリリースディレクティブでもかまいません。
リリースディレクティブに基づいてアプリケーションパッケージを作成するには、次の例に示すように CREATE APPLICATION コマンドを使用します。
CREATE APPLICATION hello_snowflake_app FROM APPLICATION PACKAGE hello_snowflake_package;
ステージを使用してアプリケーションをアップグレードする¶
名前付きステージのアプリケーションファイルを使用して APPLICATION オブジェクトをアップグレードするには、次の例に示すように ALTER APPLICATION コマンドを使用します。
ALTER APPLICATION HelloSnowflake
UPGRADE USING @CODEDATABASE.CODESCHEMA.AppCodeStage;
バージョンまたはパッチからアプリケーションをアップグレードする¶
特定のバージョンから作成された APPLICATION オブジェクトをアップグレードするには、次の例に示すように ALTER APPLICATION コマンドを使用します。
ALTER APPLICATION HelloSnowflake
UPGRADE USING VERSION "v1_1";
アプリケーションオブジェクトを表示する¶
アカウントで利用可能な APPLICATION オブジェクトのリストを表示するには、次の例に示すように SHOW APPLICATIONS コマンドを使用します。
SHOW APPLICATIONS
開発モードについて¶
バージョンの指定 によるか、 名前付きステージにあるアプリケーションファイル により、アプリケーションパッケージから 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;
このコマンドは、 hello_snowflake_app
という名前の APPLICATION オブジェクトのデバッグモードをオンにします。同様に、デバッグモードをオフにするには、以下の例に示すように同じコマンドを使用します。
ALTER APPLICATION hello_snowflake_app SET DEBUG_MODE = FALSE;
このコマンドは、 hello_snowflake_app
という名前の APPLICATION オブジェクトのデバッグモードをオフにします。
注釈
このコマンドを実行するには、 APPLICATION オブジェクトに対する OWNERSHIP 権限が必要です。また、アプリケーションパッケージに対する DEVELOP 権限も必要です。
さらに、 APPLICATION オブジェクトは開発モードで、アプリケーションパッケージと同じアカウントで作成する必要があります。
アプリケーションオブジェクトをアクティブコンテキストとして設定する¶
APPLICATION オブジェクトをセッションの現在のアクティブコンテキストとして設定するには、次の例に示すように USE APPLICATION コマンドを実行します。
USE APPlICATION hello_snowflake_app;
注釈
このコマンドを実行するには、 APPLICATION オブジェクトに対する USAGE 権限がロールに付与されている必要があります。
アプリケーションオブジェクトの詳細を表示する¶
アプリケーションオブジェクトの詳細を表示するには、次の例に示すように DESCRIBE APPLICATION コマンドを実行します。
DESC APPLICATION hello_snowflake_app;
開発モード では、このコマンドは、アプリのデータベースロールを介してコンシューマーに公開されるスキーマのみを表示します。
デバッグモード では、このコマンドは、インスタンスとアプリケーションパッケージのすべてのスキーマを表示します。