アプリのマニフェストファイルの作成

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

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

マニフェスト ファイルには、アプリケーション パッケージが Snowflake Native App を作成および管理するために必要な情報が含まれています。これには、セットアップスクリプトの場所、バージョン定義、アプリの設定情報が含まれます。

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

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

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

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

マニフェストファイルのバージョン1およびバージョン2

Snowflake Native Apps は、2つのバージョンのマニフェストファイルをサポートしています。バージョンは manifest_version フィールドを使用して指定されます。

manifest_version: 1

このバージョンのマニフェストファイルは、|native-apps|の現在およびレガシーの機能をサポートしています。

manifest_version: 2

このバージョンのマニフェストファイルは、権限の自動付与を含む追加機能をサポートしています。

マニフェストファイルのバージョン2を使用する際のセキュリティに関する考慮事項

マニフェストファイルのバージョン2を使用する場合は、次のセキュリティ上の影響を考慮します。

プロバイダーがマニフェストファイルで manifest_version: 2 を使用するようにアプリを構成する場合は、権限の自動付与が有効になっています。デフォルトでは、これによりSnowflakeはアプリに特定の権限を自動的に付与できます。アプリに自動的に付与できる権限については、 権限の自動付与によって付与される権限 をご参照ください。

インストール中、 Snowsight はアプリがリクエストした権限に関する通知を表示します。コンシューマーが権限の自動付与を使用するアプリをインストールする場合、追加の同意を求めることなくアップグレード中にこれらの権限がアプリに付与されることに同意したことになります。

コンシューマーは、アプリが作成できるオブジェクトを制限する機能ポリシーを作成できます。機能ポリシーの作成の詳細については、 機能ポリシーを使用して、アプリが作成できるオブジェクトを制限する をご参照ください。

コンテナを使用したアプリに必要な権限の指定

他のアプリと同様に、マニフェストファイルの privileges フィールドで、コンテナを持つアプリがコンシューマーからリクエストする権限を指定します。

次の権限は、コンテナを使用したアプリに固有のものです。

  • CREATE COMPUTE POOL

    この権限は、アプリがコンシューマーアカウントにコンピューティングプールを作成できるようにするために必要です。コンシューマーがコンピューティングプールを手動で作成する場合は必要ありません。

  • BIND SERVICE ENDPOINT

    この権限は、Snowflakeの外部からエンドポイントにアクセスできるようにする場合に必要です。

次の例は、これらの権限を privileges ブロックに追加する方法を示しています。

privileges:
- CREATE COMPUTE POOL:
  description: 'Required to allow the app to create a compute pool in the consumer account.'
- BIND SERVICE ENDPOINT:
  description: 'Required to allow endpoints to be externally accessible.'
Copy

コンテナを使用したアプリで使用されるコンテナイメージを指定する

コンテナを使用したアプリで使用されるコンテナイメージの場所を指定するには、images ブロックに artifacts.container_services プロパティを追加します。

イメージごとにエントリを含める必要があります。指定されたパスには、データベース、スキーマ、およびイメージリポジトリの名前が含まれます。このパスの形式は次のとおりです。

/<database>/<schema>/<image_repository>/<image_name>:tag
Copy

次の例は、 images プロパティを指定する方法を示しています。

artifacts
...
  container_services
    ...
    images
      - /dev_db/dev_schema/dev_repo/image1
      - /dev_db/dev_schema/dev_repo/image2
Copy

コンテナを使用したアプリのユーザーインターフェースのエンドポイントの指定

コンテナを使用したアプリのユーザーインターフェイスのエンドポイントを指定するには、 default_web_endpoint プロパティを artifacts ブロックに追加します。

default_web_endpoint パラメーターはオプションです。このプロパティを指定する場合、エンドポイントもサービス仕様ファイルで定義する必要があります。

注釈

default_web_endpoint および default_streamlit のどちらか一方のみを指定できます。

マニフェストファイル内のこのエントリには、次の2つの追加プロパティがあります。

  • service

    ユーザーインターフェイスのサービスの名前を指定します。

  • endpoint

    エンドポイントの名前を指定します。

次の例は、 default_web_endpoint プロパティを指定する方法を示しています。

default_web_endpoint:
  service: ux_schema.ux_service
  endpoint: ui
Copy

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

次の例は、さまざまなタイプのユースケースにおける一般的なマニフェストファイルを示しています。

権限の自動付与を使用するためのマニフェストファイルの例

次のマニフェストファイルは、権限の自動付与を使用するようにアプリを構成する方法を示しています。この例では、マニフェストファイルのバージョン2を使用しています。privileges ブロックは、アプリに必要な権限を指定します。

manifest_version: 2
version:
  name: v1
artifacts:
  readme: readme.md
  setup_script: setup.sql
privileges:
  - CREATE TABLE:
    description: "Allows the app to create tables in the consumer account"
  - CREATE WAREHOUSE:
    description: "Allows the app to create warehouses in the consumer account"
Copy

アプリがインストールされると、Snowflakeは自動的に CREATETABLE および CREATEWAREHOUSE 権限をアプリに付与します。

コンテナを使用したアプリのマニフェストファイルの例

Snowflake Native Apps は、コンテナを使用したアプリに固有のマニフェストファイル内のエントリをサポートします。次のマニフェストファイルの例は、コンテナを使用したアプリの一般的なマニフェストファイルを示しています。

manifest_version: 2
version:
  name: v1
artifacts:
  readme: readme.md
  setup_script: setup.sql
  container_services:
    images:
      - /dev_db/dev_schema/dev_repo/image1
      - /dev_db/dev_schema/dev_repo/image2
  default_web_endpoint:
    service: ux_schema.ux_service
    endpoint: ui
privileges:
 - CREATE COMPUTE POOL:
   description: "..."
 - BIND SERVICE ENDPOINT:
   description: "...”
Copy