Declarative Native App マニフェストリファレンス

プロバイダーは、:doc:` パッケージ <package>` の一部としてマニフェストファイルを作成します。

マニフェストファイルは、manifest.yml というファイル名のテキストベースの `YAML<https://yaml.org/spec/>`_ ファイルです。ノートブック、テーブル、ビューなどのデータをコンシューマーと宣言的に共有するために使用されます。

マニフェストファイルは :doc:` アプリロール <app-roles>` も定義します。アプリ所有者はこれを使用して、アプリのデータや機能のサブセットを組織内のチームでロールごと共有できます。

アプリケーションパッケージの開発については、 Native Application Frameworkにおける宣言型共有用のアプリケーションパッケージ をご参照ください。

Declarative Native App マニフェスト

一般的な形式の Declarative Native App マニフェストには以下が含まれます。

manifest_version: # Added automatically. Don't include.
application_content: # Optional, describes associated app logic
roles: # Optional, describes roles associated with shared_content
shared_content: # Required, describes associated data to be shared
Copy

フィールド

Declarative Native App マニフェストには以下のフィールドが含まれます。

manifest_version フィールド

アプリケーションパッケージの新しいバージョンをリリースすると、このフィールドがマニフェストファイルに自動的に追加されます。

アプリケーションパッケージに含めるマニフェストファイルを作成する場合は、このフィールドを含めないでください。このフィールドに対する手動による編集はサポートされていません。

manifest_version の最上位のフィールド(整数、必須)で、マニフェストファイルのバージョン番号を指定します。

バージョン管理の詳細については、 Native Application Frameworkにおける宣言共有のパッケージバージョン をご参照ください.

application_content フィールド

application_content フィールド(リスト、オプション)では、アプリによって宣言的に共有されるバンドルコンテンツを定義します。

このフィールドには、単一の notebooks フィールドが含まれます。

  • application_content.notebooks (リスト、必須)::doc:` ノートブック </user-guide/ui-snowsight/notebooks>` という名前のリスト。

application_content.notebooks.{named notebook} フィールド

各名前付きノートブックは、以下の名前と値のペアをサポートしています。

  • main_file (文字列、必須)インタラクティブなPythonノートブック(.ipynb)ファイルの名前。

  • comment (文字列、オプション):ノートブックについて説明するコメント。

  • runtime_environment_version (文字列、オプション): プラットフォーム内で該当する場合は、ノートブック実行コンテキストに特定の :ref:` ランタイム環境バージョン <label-notebook_runtime_descriptions>` を指定します。

  • roles (リスト、オプション):ノートブックへのアクセスを付与できるアプリロールのリスト。例: [sales,marketing].このフィールドが空の場合([])または省略されている場合は、アプリの所有者と 付与されたIMPORTEDPRIVILEGES で定義されている必要があります。

application_context の例

この例では、既知のランタイム stable を使用して単一のノートブック salesbook が定義されています。これは、sales または marketing のロールを付与されたユーザーにアクセスを提供するノートブックファイル NOTEBOOK1.ipynb** を使用します。

application_content:
    notebooks:
        - salesbook:
              roles: [sales, marketing]
              main_file: NOTEBOOK1.ipynb
              comment: Notebook1: Sales and marketing notebook
              runtime_environment_version: stable

roles:
  - sales:
  - marketing:
Copy

roles フィールド

roles の最上位のフィールド(リスト、オプション)で、 :doc:` アプリロール <app-roles>` のリストを定義します。これらのロールにより、アプリの所有者は、スキーマ、テーブル、ビュー、ノートブックなどのアプリ内の共有オブジェクトへのアクセスを組織に提供できます。

名前付き各ロールには、オプションで comment を含めることができ、アプリの所有者がアプリケーションのロールをリストするときに説明として表示されます。

これらのロールは、マニフェスト内で名前付きの notebookschematable または view レベルの共有オブジェクトによって参照されます。table または view レベルのオブジェクトの場合は、 schema レベルでもロールを指定する必要があります。

注釈

  • マニフェスト内のすべてのコンテンツには、アプリの所有者(ACCOUNTADMIN)およびアプリに付与されたロール IMPORTED PRIVILEGES がアクセスできます。

  • このマニフェストファイルで定義されたオブジェクト名は、ランタイムオブジェクトの解決に使用されます。マニフェストファイルを新しいバージョンで更新せずにプロバイダーがオブジェクト名を変更した場合、コンシューマーはオブジェクトへのアクセスを失います。

roles の例

roles:
  - sales:
  - marketing:

application_content:
  notebooks:
    - salesbook:
        roles: [sales, marketing]
        main_file: NOTEBOOK1.ipynb
        comment: Sales and marketing notebook

shared_content:
  databases:
    - sales:
        schemas:
          - orders:
              roles: [sales, marketing]
              tables:
                - january_2025:        # App owners/assignees only
                - february_2025:
                    roles: [sales]     # Accessible to sales only
                - march_2025:
                    roles: [marketing] # Accessible to marketing only
    - customer_info:
        schemas:
          - customer_contact:
              roles: [customer_support]
              views:
                - customer_address:
                    roles: [customer_support] # Accessible to customer_support
                - customer_details:
                    roles: []                 # App owners/assignees only
Copy

ロールの詳細については、 :doc:` アプリロール <app-roles>` をご参照ください。

shared_content フィールド

shared_content フィールド(リスト、必須)は、アプリによって宣言的に共有されるデータベースのリストを定義します。各データベースには、 schemas という名前のリストが含まれています。各スキーマには、 tables および views という名前のリストを含めることができます。

このフィールドには、単一の notebooks フィールドが含まれます。

  • shared_content.databases (リスト、必須):名前付きデータベースインスタンスと、共有するための基になるオブジェクトのリスト。この例では、マニフェストはsales:という名前のデータベースを追加します。

shared_content.databases.{named database} フィールド

各名前付きデータベースは、次の名前と値のペアをサポートします。

  • schemas (リスト、必須): データベース内のスキーマのリストです。

schemas.{named schema} フィールド

各名前付きスキーマは、以下の名前と値のペアをサポートしています。

  • tables (リスト、[OneOfRequired]):名前付きテーブルのリストです。

  • views (リスト、[OneOfRequired]):名前付きビューのリストです。

  • roles (リスト、オプション):スキーマ内のオブジェクトが使用できるアプリロールのリストです。例: [sales,marketing].このフィールドが空の場合([])または省略されている場合は、アプリの所有者と 付与されたIMPORTEDPRIVILEGES で定義されている必要があります。

[OneOfRequired] (1,2,3)

tables または views の少なくとも1つが必須です。

tables.{named table} フィールド

各名前付きテーブル(リスト、必須)は、次の名前と値のペアをサポートします。

  • roles (リスト、オプション):テーブルにアクセスできるアプリロールのリストです。例: [sales].このフィールドが空の場合([])または省略されている場合は、アプリの所有者と 付与されたIMPORTEDPRIVILEGES<label-sa_share_access_to_all_data>`ロールのみがアクセスを受け取ります。含まれるロールは :ref: 最上位レベルのロールフィールド <label_sa-manifest-roles-top>` で定義され、{named schema}.roles フィールドに含まれている必要があります。

views.{named view} フィールド

名前付き各ビュー(リスト、必須[OneOfRequired]_ ): 以下の名前と値のペアをサポートします:

  • roles (リスト、オプション):ビューにアクセスできるアプリロールのリストです。例: [marketing].このフィールドが空の場合([])または省略されている場合は、アプリの所有者と 付与されたIMPORTEDPRIVILEGES<label-sa_share_access_to_all_data>`ロールのみがアクセスを受け取ります。含まれるロールは :ref: 最上位レベルのロールフィールド <label_sa-manifest-roles-top>` で定義され、{named schema}.roles フィールドに含まれている必要があります。

shared_content の例

この例では、 salescustomer_info の2つのデータベースが公開されています。これらのデータベース内では、 orders.[anuary_2025|february_2025] テーブルと ccustomer_contact.customer_address ビューが公開されます。

ロールフィールドが存在しないため、アプリロールに基づくアクセス制御は提供されません。アプリをインストールできるすべてのロールは、テーブルとビューにアクセスできます。

roles:
  - sales:
  - marketing:

shared_content:
  databases:
    - sales:
        schemas:
          - orders:
              roles: [sales, marketing]
              tables:
                - january_2025:        # App owners/assignees only
                - february_2025:
                    roles: [sales]     # Accessible to sales only
                - march_2025:
                    roles: [marketing] # Accessible to marketing only
    - customer_info:
        schemas:
          - customer_contact:
              roles: [customer_support]
              views:
                - customer_address:
                    roles: [customer_support] # Accessible to customer_support
                - customer_details:
                    roles: []                 # App owners/assignees only
Copy

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

次のコードブロックは、 Declarative Native App マニフェストファイルの例です。

manifest_version: 2

roles:
  - VIEWER:
      comment: "The VIEWER role provides access to only one view."
  - ANALYST:
      comment: "The ANALYST role provides access to both views and the table."

shared_content:
  databases:
    - SNAF_POPULATION_DB:
        schemas:
          - DATA_SCHEMA:
              roles: [VIEWER, ANALYST]
              tables:
                - COUNTRY_POP_BY_YEAR:
                    roles: [ANALYST]
              views:
                - COUNTRY_POP_BY_YEAR_2000:
                    roles: [VIEWER, ANALYST]

application_content:
  notebooks:
      - intro_notebook:
          roles: [VIEWER, ANALYST]
          main_file: INTRO_NB.ipynb
      - analyst_notebook:
          roles: [ANALYST]
          main_file: ANALYST_NB.ipynb
Copy