Snowflake Marketplaceへのアプリ公開のガイドライン

このトピックでは、Snowflake Marketplace に Snowflake Native App を公開する基準について説明します。

Snowflake Marketplaceでアプリを公開する

アプリケーションパッケージを Snowflake Marketplace で公開する準備ができたら、Snowflakeに申請して承認を得る必要があります。

注釈

Snowflake Marketplace でアプリを公開するために必要な承認プロセスは、アプリケーションパッケージの DISTRIBUTION プロパティが EXTERNAL に設定されたときに実行される 自動セキュリティスキャン とは異なります。

リストを作成する前に、 適用要件 を理解していることを確認し、アプリケーションパッケージが各要件に従っていることを確認してください。アプリケーションパッケージがこれらの要件に従っていない場合は、申請が却下される可能性があります。

申請したアプリケーションパッケージについて却下通知を受け取った場合は、推奨される変更を行い、承認を得るためにアプリケーションパッケージを再申請してください。

Snowflake MarketplaceにおけるSnowflake Native Appsの基準

Snowflakeは、プロバイダーがアプリを構築、配布、収益化できるプラットフォームを提供します。

Snowflakeの審査プロセスにより、Snowflake Marketplaceに公開されるアプリの品質が保証されます。効率的な審査プロセスを確保するため、Snowflakeは、Snowflake Marketplaceに公開されるアプリについて、以下の要件およびガイドラインを提供しています。

即時ユーティリティ

すべてのアプリの関数は、アプリのインストール時にコンシューマーアカウント内で提供される必要があります。例えば、コンシューマーが自分のアカウントにアプリをインストールする場合、コンシューマーが追加のコンポーネントをインストールすることなく、すべてのアプリの関数が可用性でなければなりません。

スタンドアロン

アプリは、Snowflake上で製品エクスペリエンスを提供し、Snowflakeの関数を通じて外部要件を促進する必要があります。

データ中心

アプリは、Snowflakeに保存されたデータを活用するデータ中心のユースケースに基づいている必要があります。

透明性がありシンプル

アプリはSnowflakeの機能を使用して、アプリのリソースとアクセス要件を開示し、コンシューマーの構成プロセスを簡素化する必要があります。

適用要件

Snowflakeは、 Snowflake Native App がSnowflake Marketplaceに掲載するための要件を満たしているかどうかを判断するために、以下のガイドラインを使用します。これらの要件は、Snowflake Marketplaceにアプリケーションパッケージを添付してリストを申請する際に確認されます。

  1. 即時ユーティリティ

    1. アプリは、機能を宣伝するシェルアプリであってはなりません。

    2. アプリには、アプリの関数を利用するための明確な枠組みと指示が含まれていなければなりません。

    3. アプリがクラッシュしたり、フリーズしたり、その他の異常な関数が発生しないようにしてください。

    4. アプリはすべての必要な認証情報をリストアップする必要があり、プロバイダーはテスト提出時に必要な認証情報を Snowflake と共有する必要があります。

    5. コンシューマーがプロバイダーに連絡することなく、アプリを完全にインストールして構成できるように、アプリはすぐにアクション可能でなければなりません。

  2. スタンドアロン

    1. アプリケーションの機能を有効にするために、コンシューマーを外部サービスにリダイレクトしてはなりません。

    2. アプリのインターフェイスは、インストール後にSnowflakeから直接アクセスできる必要があります。

    3. アプリは、Snowflakeコンシューマーのアカウントに外部サービスへのアクセスを提供するユーザーまたはロールの作成をコンシューマーに要求することはできません。

    4. アプリは、Snowflake Marketplaceを、外部のアプリケーションまたはサービスをクロスセリングするための販売プラットフォームとして使用することはできません。

  3. データ中心

    1. アプリは、以下のいずれかの方法でSnowflakeデータを活用する必要があります。

      1. アプリ プロバイダーのアカウントからデータを共有します。

      2. Snowflake Marketplaceのデータセットを使用します。

      3. コンシューマーアカウントのデータにアクセスします。

  4. 透明

    1. アプリが必要とするアカウントレベルの権限と参照はすべて、アプリケーションパッケージの マニフェストファイルにリストされている必要があります。

    2. Snowflake Native App のすべてのリソース要件は、アプリの marketplace.yml ファイルに記載する必要があります。アプリは、インストールとセットアップの一環として、これらのリソースを作成する必要があります。

    3. アプリケーションパッケージマニフェストファイルに記載されているすべてのアカウントレベルの権限およびリファレンスは、 Snowsight または Python Permission SDK を通じてコンシューマーにリクエストする必要があります。

    4. アプリはReadmeファイルを提供する必要があります。Streamlitまたはカスタムユーザーインターフェイスを含まないアプリは、Readmeファイルに以下の情報を含める必要があります。

      1. アプリが何をするのかの説明。

      2. アプリがインストールされた後、コンシューマーがアプリを構成するために実行する必要のあるステップ。

      3. アプリが使用するストアドプロシージャとユーザー定義関数。

      4. アプリが必要とする権限。

      5. コンシューマーにアプリの使用方法を示す SQL コマンドの例。

    5. 必要な SQL コマンドはすべて、Snowflake を使用し、コードブロックとして形式化して配信する必要があります。

    6. アプリがサンプルデータをプロバイダーする場合は、サンプルデータの使用方法に関するプロシージャを含める必要があります。

Snowflake Native App 公開時のベストプラクティス

Snowflakeは、 Snowflake Marketplace にアプリケーションパッケージを申請する際の要件に加えて、 Snowflake Native App を公開する際のベストプラクティスとして以下を推奨しています。

  • 申請するアプリのバージョンに応じて、必要なすべてのファイルが指定されたステージにアップロードされていることを確認してください。

    • manifest.yml ファイル

    • セットアップスクリプト。

    • readme.md ファイル

    • アプリケーションパッケージに必要な外部ストアドプロシージャまたはユーザー定義関数。

    • アプリケーションパッケージに必要なStreamlitファイル。

    • Python、Javaなどの外部ソースコード。

  • 開発中のアプリのバージョンが 自動セキュリティスキャン に合格していることを確認してください。

  • CREATE APPLICATION コマンドを使用してアプリケーションオブジェクトをローカルに作成し、アプリケーションパッケージの新しいバージョンをテストします。

    • アプリの開発中やテスト中は、アプリケーションパッケージに新しいバージョンを追加したり、 DISTRIBUTION プロパティを EXTERNAL に設定したりしないでください。こうしたアクションは、 自動セキュリティスキャン をトリガーするため、開発サイクルが遅れます。

      代わりに、 名前付きステージでファイル を使用してアプリケーションオブジェクトを作成します。

    • アプリにStreamlitアプリが含まれている場合は、 Snowsight でアプリケーションをテストし、Streamlitアプリが期待どおりに動作することを確認してください。

    • StreamlitアプリとSnowflakeワークシート間のインタラクションがシームレスであり、コンシューマーが両者間を過度に移動する必要がないことを確認します。

  • 承認のために申請する前に、リストのすべての部分を確認します。

  • リスト、 readme ファイル、Streamlitアプリに誤字やその他のテキストエラーがないことを確認してください。

トライアルリストの推奨

アプリのトライアルリストの期限が切れると、Snowflakeは自動的にアプリを停止し、コンシューマーに余分なコンピューティングコストが発生しないようにします。Snowflakeは、現在アクティブなアプリが所有するオブジェクトのみを中断します。Snowflakeは、すでに中断されているオブジェクトのステータスを変更しません。

トライアルリストがフルまたは有料リストに変更されると、Snowflakeはタスク、コンテナー、およびコンピューティングプールを再開することによって、アプリの再有効化を試みます。Snowflakeは、 auto_resume プロパティがfalseに設定されているサービスとコンピューティングプールのみを再開します。

コンテナーを使用したアプリの推奨事項

  • コンピューティングプールは、アイドル状態のコンピュートノードを避けるために、Snowparkコンテナサービスのジョブと組み合わせて自動的に一時停止するように設定する必要があります。

  • アップグレード時の可用性を高め、コールドスタートの待ち時間を短縮するために、Snowflake では MIN_NODES パラメーターを 1 より大きく設定することを推奨します。

  • 同一アプリ内で異なるサービス間の接続が必要な場合は、外部アクセス統合を構成する代わりに、サービスの DNS 名を使用します。

イベント共有の推奨

  • プロバイダーは、コンシューマーがどのような情報が収集されるかを確実に理解するために、 サポート対象のイベント定義 に適合するログメッセージとトレースイベントを発するようにアプリを構成するべきです。

  • 必須イベント定義は、アプリが必要とするログメッセージとトレースイベントに限定されるべきです。過剰または不必要な必須イベント定義は避ける必要があります。

  • バージョンアップで新しい必須イベント定義を追加するには、コンシューマーがアプリのイベント定義を再度有効にする必要があります。

  • Python Permission SDK を使用して、コンシューマーがオプションのイベントを共有できるようにします。