アプリケーションパッケージのマニフェストファイルを作成する

このトピックでは、アプリケーションパッケージのマニフェストファイルを作成する方法について説明します。

マニフェストファイルについて

Snowflake Native App Framework では、すべてのアプリケーションパッケージにマニフェストファイルが含まれている必要があります。このファイルでは、セットアップスクリプトの場所やバージョン定義など、アプリケーションパッケージに必要なプロパティが定義されています。

マニフェストファイルには以下の要件があります。

  • マニフェストファイルの名前は manifest.yml にする必要があります。

  • マニフェストファイルは、アプリケーションパッケージまたは Snowflake Native App を作成するときにアクセスできるように、名前付きステージにアップロードする必要があります。

  • マニフェストファイルは、名前付きステージのディレクトリ構造のルートに存在している必要があります。

マニフェストファイル参照

manifest.yml ファイルに含めることのできる有効なプロパティは以下のとおりです。

manifest_version:

マニフェストファイルのバージョンを指定します。

必須

version:

バージョンに関するパラメーターを含むブロックを定義します。

オプション

name:

バージョンの論理名を指定します。この名前は、バージョンを管理する SQL コマンドで使用されます。

label:

コンシューマーに表示されるバージョンの名前を指定します。

comment:

バージョンのコメントを指定します。このコメントは、プロバイダーが SHOW VERSIONS コマンドを実行する場合にのみ表示されます。

artifacts:

パッケージのこのバージョンから配布されるリソースに関連するブロックを定義します。

必須

Readme:

Snowflake Native App の概要をマークダウン形式で提供するReadmeファイルへのパスを指定します。Streamlitアプリの場合は、 default_streamlit プロパティに値が指定されないと、インストールされた Snowflake Native App を表示する際に、このファイルのコンテンツがコンシューマーに表示されます。

このファイルの場所は、 manifest.yml ファイルの場所から相対的に指定されます。

必須

setup_script:

Snowflake Native App のインストール時に実行される SQL スクリプトのパスとファイル名を指定します。値を指定しない場合、デフォルト値は manifest.yml ファイルと同じディレクトリの setup.sql になります。

オプション

default_streamlit:

Snowflake Native App にStreamlitアプリが含まれている場合、このプロパティは、コンシューマーが利用可能なデフォルトのStreamlitアプリのスキーマと名前を指定します。

Snowflake Native App にStreamlitアプリが含まれている場合は必須です。それ以外の場合はオプションです。

extension_code:

Snowflake Native App が UDFs とストアドプロシージャを実行できるかどうかを指定します。このプロパティのデフォルト値は false です。

オプション

configuration:

Snowflake Native App の構成プロパティを含むブロックを指定します。

オプション

log_level:

インストールされているバージョンの Snowflake Native App で使用するログレベルを指定します。このプロパティでサポートされている値の情報については、 ログレベルの設定 をご参照ください。

オプション

デフォルト: Off

trace_level:

インストールされている Snowflake Native App で使用するトレースイベントレベルを指定します。プロバイダーがトレースを有効にすると、 Snowflake Native App はすべてのクエリとストアドプロシージャ呼び出しの開始時刻と終了時刻を自動的にキャプチャします。

注釈

trace_level プロパティが OFF 以外の値に設定された Snowflake Native App を公開すると、イベントテーブルを表示できるコンシューマーアカウントのすべてのユーザーに、非表示のストアドプロシージャへの呼び出しが公開される可能性があります。

trace_level プロパティのサポートされている値については トレースレベルの設定 をご参照ください。

オプション

デフォルト: Off

privileges:

Snowflake Native App のインストール時にコンシューマーに付与する必要のある権限を含むブロックを定義します。

オプション

デフォルト: 空のリスト

<権限名>:

権限の名前を指定します。

description:

リクエストされている権限の説明を提供します。 description で指定されたテキストは、 Python Permission SDK を使用して Snowsight で権限が表示される場合に、コンシューマーに表示されます。

Snowflake Native App がこの権限を必要とする理由、またその権限が必須かオプションかについて、可能な限り多くの情報を提供する必要があります。

privileges が指定されている場合は必須です。

references:

プロバイダーによって定義された参照を含むブロックを定義します。コンシューマーは、これらの参照をアカウント内のオブジェクトにバインドする必要があります。

- <reference name>:

統合の名前を指定します。

label:

Snowflake Native App のインストール時にコンシューマーに表示される参照の説明を提供します。

references が指定されている場合は必須です。

privileges:

参照に必要な権限を指定します。

references が指定されている場合は必須です。

object_type:

スキーマやテーブル、または API 統合など、参照に関連付けられているオブジェクトの型を指定します。

references が指定されている場合は必須です。

multi_valued:

複数のオブジェクトが参照に関連付けられていることを指定します。

オプション。

デフォルト: false

register_callback:

参照の呼び出しに使用されるコールバック関数の名前を指定します。

references が指定されている場合は必須です。

マニフェストファイルの例

次の例は、サポートされるすべてのプロパティに値が指定された典型的なマニフェストファイルを示しています。

manifest_version: 1 # required
version:
  name: hello_snowflake
  label: "v1.0"
  comment: "The first version of a Snowflake Native App"

artifacts:
  readme: readme.md
  setup_script: scripts/setup.sql
  default_streamlit: streamlit/ux_schema.homepage_streamlit
  extension_code: true

configuration:
  log_level: debug
  trace_level: always

privileges:
  - EXECUTE TASK:
      description: "Run ingestion tasks for replicating Redshift data"
  - EXECUTE MANAGED TASK:
      description: "To run serverless ingestion tasks for replicating Redshift data"
  - CREATE WAREHOUSE:
      description: "To create warehouses for executing tasks"
  - MANAGE WAREHOUSES:
      description: "To manage warehouses for optimizing the efficiency of your accounts"
  - CREATE DATABASE:
      description: "To create sink databases for replicating Redshift data"
  - IMPORTED PRIVILEGES ON SNOWFLAKE DB:
      description: "To access account_usage views"

references:
  - consumer_table:
      label: "Consumer table"
      description: "A table in the consumer account that exists outside the APPLICATION object."
      privileges:
        - SELECT
        - INSERT
        - UPDATE
      object_type: Table
      multi_valued: true
      register_callback: config.register_reference
Copy