アプリ仕様の概要¶
このトピックでは、プロバイダーが Snowflake Native App を構成し、アプリ仕様を使用してSnowflake外のサービスおよびエンドポイントへのアクセスをリクエストする方法を説明します。アプリ仕様では、コンシューマーはアプリに必要な外部接続を確認し、承認または却下できます。
Snowflake Native App から外部サービスにアクセスする¶
一部の Snowflake Native Apps は、Snowflakeの外部に存在するリソースに接続する必要があります。これらのリソースへの接続を処理するために、Snowflakeは接続のタイプごとに異なるオブジェクトを提供します。
外部サービスにアクセスするために、Snowflakeは次のオブジェクトを提供します。
- 外部アクセス統合:
ユーザー定義関数またはストアドプロシージャ内で外部ネットワークエンドポイントへのセキュアアクセスを許可します。外部アクセス統合は、ネットワークルールを使用して、特定の外部ネットワークロケーションへのアクセスを制限する。
- セキュリティの統合:
OAuth などのサードパーティの認証プロバイダーへの安全なアクセスを許可します。セキュリティ統合は、安全な認証とアクセス制御を提供します。
権限の自動付与 を使用する場合、アプリはセットアップスクリプトを実行するときに、これらのオブジェクトを作成するために必要な権限を持っています。ただし、これらのオブジェクトはSnowflakeの外部からの接続を許可するため、コンシューマーはアプリを構成するときにこれらの接続を承認する必要があります。
アプリ仕様で権限の自動付与を使用すると、次のような利点があります。
コンシューマーは、アプリに必要な外部アクセス統合やセキュリティ統合を手動で作成し、参照を使用してそれらへのアクセスを承認する必要がありません。
プロバイダーは、インストール中やアップグレード時に、必要な権限やオブジェクトの存在をチェックするコードを記述する必要がありません。
アプリ仕様を使用して、コンシューマーが外部接続を承認できるようにする¶
アプリの仕様では、プロバイダーはアプリがどのような接続情報をリクエストするかを指定できます。コンシューマーはアプリをインストールした後、アプリの仕様を確認し、必要に応じて承認または拒否します。
アプリ仕様を使用して外部エンドポイントアクセスへのアクセスをリクエストする方法については、アプリ仕様を使用した外部アクセス統合のリクエスト(EAIs) をご参照ください。アプリの仕様を使用して OAuth 統合へのアクセスをリクエストする方法については、アプリ仕様を使用したセキュリティ統合のリクエスト. アプリ仕様を使用した外部アクセス統合のリクエスト(EAIs) をご参照ください。
アプリ仕様定義¶
アプリ仕様定義には、アプリがSnowflakeの外部にあるリソースへの接続を構成するために必要なプロパティが含まれています。これらのプロパティは承認のためにコンシューマーに表示されます。アプリ仕様定義には、外部アクセス統合またはセキュリティ統合のメタデータとプロパティのサブセットが含まれます。
セキュリティ統合のアプリ仕様定義については、セキュリティ統合のアプリ仕様定義 をご参照ください。
外部アクセス統合のアプリ仕様定義については、外部アクセス統合のアプリ仕様定義 をご参照ください。
アプリ仕様のシーケンス番号¶
シーケンス番号は、アプリ仕様のバージョン番号に似ています。シーケンス番号は、プロバイダーがアプリ仕様の定義を変更すると自動的に増加されます。アプリ仕様の定義には、構成の詳細やその他の必要な情報が含まれます。定義の一部ではないフィールド description などは、シーケンス番号の更新をトリガーしません。
シーケンス番号により、プロバイダーとコンシューマーはアプリ仕様のさまざまなバージョンを識別できます。たとえば、プロバイダーがアプリ仕様定義に新しい構成の詳細を追加すると、シーケンス番号が増えます。コンシューマーがアプリ仕様を表示すると、シーケンス番号が変わったことを確認でき、更新されたアプリ仕様を確認できます。
アプリ仕様を使用する場合のベストプラクティス¶
権限の自動付与 は、アプリが外部アクセス統合を作成するために必要な権限を持っていることを確認します。ただしコンシューマーは、外部エンドポイントへの接続を可能にするアプリ仕様を拒否することを選択できます。アプリを開発するとき、プロバイダーはアプリの仕様が承認されない可能性を考慮する必要があります
たとえば、アプリは外部アクセス統合 のために複数のネットワークポートの使用を要求するかもしれませんが、コンシューマーは1つしか許可しません。アプリには、ネットワークポートが利用できない場合に発生するエラーを処理するロジックが含まれている必要があります。また、発生する可能性のある HTTP 例外をキャッチするためのベストプラクティスです。
アプリ仕様でのコールバック関数の使用¶
状況によっては、コンシューマーがアプリの仕様を承認または却下したかをアプリが知る必要がある場合があります。たとえば、アプリはオブジェクトを作成する前に、アプリの仕様が承認されるまで待つ必要がある場合があります。
この状況に対処するため、 Snowflake Native App Framework は、コンシューマーがアプリ仕様を承認または却下したときに実行されるコールバックストアドプロシージャをプロバイダーが定義できるメカニズムを提供します。
プロバイダーは、次の例に示すように、マニフェストファイルにストアドプロシージャを追加できます。
lifecycle_callbacks:
specification_action: callbacks.on_spec_update
この例は、マニフェストファイルに callbacks.on_spec_update という名前のストアドプロシージャを作成する方法を示しています。セットアップスクリプトでは、プロバイダーは次の例に示すようにストアドプロシージャを追加できます。
CREATE OR REPLACE PROCEDURE callbacks.on_spec_update (
name STRING,
status STRING,
payload STRING)
...
この例は、callbacks.on_spec_update というストアドプロシージャの署名を示しています。このプロシージャの本文には、プロバイダーはアプリ仕様のステータスを確認し、オブジェクトを作成し、必要に応じてアクションを実行するために必要なコードを含みます。