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ユーザーは容量コミットメントを使用してサードパーティ・ソリューションを購入することができます。

透明

アプリはSnowflakeの機能を使用して、アプリのリソースとアクセスの可視性を最大化する必要があります。アプリはコンシューマーのために構成プロセスを簡素化すべきです。

適用要件

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

  1. 即時ユーティリティ

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

    2. アプリには、アプリの機能を活用するための明確な枠組みが含まれている必要があります。

  2. スタンドアロン

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

    2. アプリのインターフェイスは、インストール後、Streamlit UI または Snowflake でホストされたカスタム UI を使用して、Snowflake から直接アクセスできる必要があります。

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

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

  3. 責任あるデータアクセス

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

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

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

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

  4. オン・プラットフォームで収益化

    1. オンプラットフォームで収益化するアプリには、Snowflake内のすべての機能を含める必要があります。

  5. 透明

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

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

    3. リストにマニフェストファイルの security セクションにアカウントレベルの権限または参照が含まれ、アプリケーションパッケージにStreamlitアプリが含まれている場合は、 Snowsight を使用して権限と参照をコンシューマーにリクエストするユーザーインターフェイスを作成する必要があります。

    4. アプリケーションパッケージにStreamlitアプリまたはアプリ用のカスタムユーザーインターフェイスが含まれていない場合、アプリケーションパッケージに含まれるreadmeファイルには以下の情報が含まれている必要があります。

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

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

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

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

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

    5. readmeファイルに SQL ステートメントやコード例が含まれている場合は、コードブロックを使用する必要があります。

    6. 可能であれば、複数のStreamlitアプリを別々に使用するのではなく、複数ページの単一Streamlitアプリを使用します。これには、マルチユーザーのStreamlitアプリなどが含まれます。

    7. アプリがサンプルデータを提供する場合、必要に応じてデータベースを作成するために必要なコードを含め、サンプルデータの使用方法に関する手順を含める必要があります。

    8. アプリケーションパッケージに readme ファイルが含まれていない場合は、リストの Sample SQL セクションに使用例を記載するか、デフォルトの Streamlit アプリ、またはデフォルトの Web エンドポイントを設定する必要があります。

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 を使用して、コンシューマーがオプションのイベントを共有できるようにします。