Snowflake Marketplace でアプリをリストするためのガイドラインと要件¶
概要¶
これらのガイドラインは、 Snowflake Marketplace で Snowflake Native Apps および接続アプリの両方のアプリケーションを公開するために摘要される基準を定義します。
ネイティブアプリケーション¶
Snowflake Marketplace で公開¶
アプリケーションパッケージを Snowflake Marketplace で公開する準備ができたら、Snowflakeに申請して精査と承認を得る必要があります。
注釈
Snowflake Marketplace でアプリを公開するために必要な承認プロセスは、アプリケーションパッケージの :doc:` プロパティが </developer-guide/native-apps/security-overview> に設定されたときに実行される 自動セキュリティスキャン DISTRIBUTIONEXTERNAL とは異なります。詳細については :ref:`label-native_app_listing_approval_flow をご参照ください。
リストを作成する前に、適用要件を理解していることを確認し、アプリケーションパッケージが各要件に従っていることを確認してください。アプリケーションパッケージがこれらの要件に従っていない場合は、申請が却下される可能性があります。
申請したアプリケーションパッケージについて却下通知を受け取った場合は、推奨される変更を行い、承認を得るためにアプリケーションパッケージを再申請してください。
Snowflake Marketplace 上での Snowflake Native Apps の基準¶
Snowflake Native App 機能審査プロセスにより、 Snowflake Marketplace で公開されるアプリの品質が保証されます。このプロセス中に評価される内容を明確にするために、 Snowflake Marketplace を通じて配布されるすべての Snowflake Native Apps に次の基準が適用されます。
即時ユーティリティ
アプリの機能はコンシューマーアカウント内で提供される必要があり、アプリはインストールされるとすぐに動作可能になる必要があります。
スタンドアロン
アプリは、Snowflake上で製品エクスペリエンスを提供し、Snowflakeの関数を通じて外部要件を促進する必要があります。
データ中心
アプリは、Snowflakeに保存されたデータを活用するデータ中心のユースケースに基づいている必要があります。
透明性、シンプル、安全
アプリはSnowflakeの機能を使用して、アプリのリソースとアクセス要件を開示し、コンシューマーの構成プロセスを簡素化する必要があります。
適用される基準¶
Snowflakeは、次の要件を使用して Snowflake Native App が Snowflake Marketplace での公開の基準を満たしているかどうか判断します。これらの要件は、 Snowflake Marketplace にアプリケーションパッケージを添付してリストを申請する際に確認されます。
即時ユーティリティ
アプリは、機能を宣伝するシェルアプリであってはなりません。アプリは宣伝されている機能を提供する必要があります。
アプリには、アプリの関数を利用するための明確な枠組みと指示が含まれていなければなりません。
アプリがクラッシュしたり、フリーズしたり、その他の異常な関数が発生しないようにしてください。
アプリはすべての必要な認証情報をリストアップする必要があり、プロバイダーはテスト提出時に必要な認証情報を Snowflake と共有する必要があります。
アプリがすぐに動作不可能な場合は、コンシューマー向けの予想されるワークフローをドキュメント化し、コンシューマーがアプリを完全にインストールして構成できるようにする必要があります。
スタンドアロン
アプリはパススルーであってはなりません。例えば、アプリのコア関数を有効にするために、コンシューマーを外部サービスにリダイレクトしてはなりません。
アプリのインターフェイスは、インストール後にSnowflakeから直接アクセスできる必要があります。
アプリは、 Snowflake Marketplace を、外部のアプリケーションまたはサービスをクロスセリングするための販売プラットフォームとして使用することはできません。
外部サービスにアクセスし、ユーザー認証を活用するアプリは、以下の基準に準拠する必要があります。
アプリは、外部サービスへのアクセスを有効にするためにのみ、Snowflakeアカウント内にサービスユーザーの作成をコンシューマーに要求する場合があります。
受け入れ可能な認証方法は、プログラマティックアクセストークン(PAT)、OAuth、またはキーペアです。サービスユーザーには、アプリが機能するために必要な最小限の権限のみを付与する必要があります。
ユーザー認証を必要とするアプリは、認証のためにコンシューマーに以下を要求することはありません。
コンシューマーのSnowflakeユーザー名とパスワードを入力します。
秘密/公開キーを作成し、秘密キーを共有します。
データ中心
アプリは、以下のいずれかの方法でSnowflakeデータを活用する必要があります。
アプリ プロバイダーのアカウントからデータを共有します。
Snowflake Marketplace からのデータセットを使用します。
コンシューマーアカウントのデータにアクセスします。
透明性がありシンプル
アプリが必要とするアカウントレベルの権限と参照はすべて、アプリケーションパッケージの マニフェストファイルにリストされている必要があります。
Snowflake Native App のすべてのリソース要件は、アプリの marketplace.yml ファイルに記載する必要があります。アプリは、インストールとセットアップの一環として、これらのリソースを作成する必要があります。
アプリケーションパッケージマニフェストファイルに記載されているすべてのアカウントレベルの権限およびリファレンスは、 Snowsight または Python Permission SDK を通じてコンシューマーにリクエストする必要があります。
アプリはReadmeファイルを提供する必要があります。Streamlitまたはカスタムユーザーインターフェイスを含まないアプリは、Readmeファイルに以下の情報を含める必要があります。
アプリが何をするのかの説明。
アプリがインストールされた後、コンシューマーがアプリを構成するために実行する必要のあるステップ。
アプリが使用するストアドプロシージャとユーザー定義関数。
アプリが必要とする権限。
コンシューマーにアプリの使用方法を示す SQL コマンドの例。
必要な SQL コマンドはすべて、Snowflake を使用し、コードブロックとして形式化して配信する必要があります。
アプリがサンプルデータをプロバイダーする場合は、サンプルデータの使用方法に関するプロシージャを含める必要があります。
アプリケーションパッケージにStreamlitアプリが含まれていても、readmeファイルが含まれていない場合は、 デフォルトのStreamlitアプリを構成する 必要があります。
Snowflake Native App 公開時のベストプラクティス¶
Snowflakeは、 Snowflake Marketplace にアプリケーションパッケージを申請する際の要件に加えて、 Snowflake Native App を公開する際のベストプラクティスとして以下を推奨しています。
申請するアプリのバージョンに応じて、必要なすべてのファイルが指定されたステージにアップロードされていることを確認してください。
マニフェストファイル。
セットアップスクリプト。
README ファイル
アプリケーションパッケージに必要な外部ストアドプロシージャまたはユーザー定義関数。
アプリケーションパッケージに必要なStreamlitファイル。
Python、Javaなどの外部ソースコード。
開発中のアプリのバージョンが 自動セキュリティスキャン に合格していることを確認してください。
CREATE APPLICATION コマンドを使用してアプリケーションオブジェクトをローカルに作成し、アプリケーションパッケージの新しいバージョンをテストします。
アプリの開発中やテスト中は、アプリケーションパッケージに新しいバージョンを追加したり、 DISTRIBUTION プロパティを EXTERNAL に設定したりしないでください。これらのアクションは 自動セキュリティスキャン をトリガーします。代わりに、 名前付きステージでファイル を使用してアプリケーションオブジェクトを作成します。
アプリにStreamlitアプリが含まれている場合は、 Snowsight でアプリケーションをテストし、Streamlitアプリが期待どおりに動作することを確認してください。
StreamlitアプリとSnowflakeワークシート間のインタラクションがシームレスであり、コンシューマーが両者間を過度に移動する必要がないことを確認します。
承認のために申請する前に、リストのすべての部分を確認します。
リスト、readmeファイル、Streamlitアプリに誤字やその他のテキストエラーがないことを確認してください。
トライアルリストの推奨¶
アプリのトライアルリストの期限が切れると、Snowflakeは自動的にアプリを停止し、コンシューマーに余分なコンピューティングコストが発生しないようにします。Snowflakeは、現在アクティブなアプリが所有するオブジェクトのみを中断します。Snowflakeは、すでに中断されているオブジェクトのステータスを変更しません。
トライアルリストがフルまたは有料リストに変更されると、Snowflakeはタスク、コンテナー、およびコンピューティングプールを再開することによって、アプリの再有効化を試みます。Snowflakeは、
auto_resumeプロパティがfalseに設定されているサービスとコンピューティングプールのみを再開します。
コンテナーを使用したアプリの推奨事項¶
コンピューティングプールは、アイドル状態のコンピュートノードを避けるために、 Snowpark Container Services ジョブと組み合わせて自動的に一時停止するように設定する必要があります。
アップグレード時の可用性を高め、コールドスタートのレイテンシを短縮するために、Snowflake では
MIN_NODESパラメーターを 1 より大きく設定することを推奨します。同一アプリ内で異なるサービス間の接続が必要な場合は、外部アクセス統合を構成する代わりに、サービスの DNS 名を使用します。
イベント共有の推奨¶
プロバイダーは、コンシューマーがどのような情報が収集されるかを確実に理解するために、 サポート対象のイベント定義 に適合するログメッセージとトレースイベントを発するようにアプリを構成するべきです。
必須イベント定義は、アプリが必要とするログメッセージとトレースイベントに限定されるべきです。過剰または不必要な必須イベント定義は避ける必要があります。
バージョンアップで新しい必須イベント定義を追加するには、コンシューマーがアプリのイベント定義を再度有効にする必要があります。
Python Permission SDKを使用して、コンシューマーがオプションのイベントを共有できるようにします。
接続済みアプリ¶
SnowflakeはSaaSプロバイダーが接続済みアプリを Snowflake Marketplace にリストするのを許可しています。接続済みアプリとは、Snowflakeのカスタマーアカウントに安全に接続して、ワークフローの一部として指定されたデータを読み取り、または取り込む統合SaaSアプリケーションです。接続済みアプリにより、コンシューマーは外部UIを通じてSnowflakeデータを直接操作できるようになります。
Snowflake Marketplace で接続済みアプリを公開するための要件¶
パートナーネットワークティア: プロバイダーは、 Snowflakeパートナーネットワーク(SPN) のメンバーであり、 Select 、 Premier 、または Elit ティア指定を保持している必要があります。
CSID要件: 各接続済みアプリは、接続文字列識別子(CSID)を使用し、完全なテレメトリーと使用状況の追跡を可能にする必要があります。プロバイダーには、アプリケーションごとに単一のCSIDに統合することをお勧めします。ただし複数のCSIDsは必要な場合サポートされます。CSID(複数可)は、最初にSPNを介して送信する必要があり、その後リスト送信時に必要となり、レビュープロセス中に検証されます。
セキュリティの透明性: プロバイダーは、リストプロセスの一環として、短い セキュリティおよびデータ処理認証 を完了する必要があります。
リストタイプ: すべての接続済みアプリリストは、パブリックの有料リストを活用し、標準オファーまたはプライベートオファーを使用してトランザクションを実行する必要があります。
Snowflake Marketplace での接続済みアプリの継続的な基準¶
エコシステムへの貢献: 接続済みアプリは、 **Snowflake Data Cloudエコシステム* に有意に貢献し、データコラボレーション、消費、またはワークロードの採用を促進する必要があります。
アクティブなパートナーシップ: ** プロバイダーは、Snowflakeエコシステムに対して **アクティブなコントリビューター である必要があります。Marketplaceに継続して掲載されるためには、プロバイダーはSelectティア以上のパートナーネットワーク内のクラスを維持する必要があり、アプリケーションは継続的にエコシステムに恩恵を与えなければなりません。プロバイダーがエコシステムに貢献しなくなった場合(Snowflakeの裁量で)、またはパートナーの適格性基準を満たしなくなった場合、Snowflakeはリストを削除することがあります。