アプリケーション構成¶
このトピックでは、|native-app|がアプリケーション構成オブジェクトを使用してコンシューマーに入力をリクエストする方法について説明します。
アプリケーション構成:概要¶
アプリケーション構成は、|native-app|とコンシューマーの間の調整メカニズムを提供するキーと値のペアです。|native-app|がコンシューマーからの入力を必要とする場合、構成キーと、構成の目的を説明する説明を定義します。コンシューマーはそのキーの値を提供します。
アプリケーション構成は、次の型をサポートします。
APPLICATION_NAMEコンシューマーは、コンシューマーアカウントにインストールされているアプリの名前を提供します。この型は:doc:`アプリ間通信<inter-app-communication>`に使用されます。
STRINGコンシューマーは、任意の文字列値を提供します。この型は、外部URLs、アカウント識別子、またはその他のアプリ固有の設定の提供など、さまざまなユースケースに使用できます。
アプリケーション構成ワークフローには、以下のステップが含まれます。
アプリは、:code:`ALTER APPLICATION SET CONFIGURATION DEFINITION`を使用して構成定義を作成し、必要な情報の種類と、構成にアクセスできるアプリロールを指定します。
コンシューマーは、:code:`SHOW CONFIGURATIONS`または|sf-web-interface|を使用して受信構成リクエストを表示します。
コンシューマーは、:code:`ALTER APPLICATION SET CONFIGURATION VALUE`または|sf-web-interface|を使用してリクエストされた値を提供します。
アプリは値を取得し、それを使用して、接続のアプリケーション仕様を作成するなどの追加操作を実行します。
|naf|は、構成値が設定または変更されたときにアプリに通知するコールバックを提供します。詳細については、 構成コールバック をご参照ください。
用語¶
アプリケーション構成では、次の用語を使用します。
- 構成定義
アプリがコンシューマーに特定の情報を要求するために作成するオブジェクト。構成定義は、リクエストされた情報の種類、ラベル、説明、および構成にアクセスできるアプリロールを指定します。
- 構成値
構成定義のリクエストに応答してコンシューマーが提供する値。
構成の使用¶
このセクションでは、構成を作成、表示、および管理する方法について説明します。
構成リクエストの作成¶
コンシューマーに構成値を要求するために、アプリはセットアップスクリプト内または実行時に構成定義を作成します。構成定義は、期待される値の型、コンシューマーに表示されるラベルと説明、および構成を表示して値を編集できるアプリロールを指定します。
次の例は、コンシューマーから会社のURLをリクエストする``STRING``型の構成定義を作成する方法を示しています。
ALTER APPLICATION SET CONFIGURATION DEFINITION company_url
TYPE = STRING
LABEL = 'Company URL'
DESCRIPTION = 'Provide the company website URL'
APPLICATION_ROLES = (app_user)
SENSITIVE = FALSE;
次のプロパティは、構成の表示方法と管理方法を制御します。
LABEL:|sf-web-interface|でコンシューマーに表示される名前。DESCRIPTION:コンシューマーが構成の目的を理解するのに役立つ説明。APPLICATION_ROLES:この構成の値を表示および設定できるアプリロール。指定されたアプリロールのいずれかが付与されているコンシューマーロールは、構成を表示し、その値を編集することができます。SENSITIVE:構成値を機密として扱うかどうかを指定します。``TRUE``に設定した場合、その値は:code:SHOW CONFIGURATIONS`の出力に表示されません。詳細については、 :ref:`label-native_apps_app_configuration_sensitiveをご参照ください。
構成リクエストの表示¶
アプリが構成リクエストを作成すると、コンシューマーはSQLまたは|sf-web-interface|を使用して保留中のリクエストを表示できます。
構成値の指定¶
アプリが構成リクエストを作成した後、コンシューマーはSQLまたは|sf-web-interface|を使用してリクエストされた値を提供します。
SQLを使用して構成の値を提供するには、:doc:`ALTER APPLICATION SET CONFIGURATION VALUE </sql-reference/sql/alter-application-set-configuration-value>`コマンドを使用します。
ALTER APPLICATION <app> SET CONFIGURATION <config> VALUE = '<value>';
|sf-web-interface|を使用して構成の値を提供するには、次の操作を実行します。
|sf-web-interface|の構成の詳細ページで:ui:`Review`ボタンをクリックします。構成の詳細ページには、次が表示されます。
構成のラベル。
何用の構成であるかの説明。
構成が機密である場合は:ui:
Sensitive data protection`バナーが表示されます。詳細については、 :ref:`label-native_apps_app_configuration_sensitiveをご参照ください。
:ui:`Value`フィールドに構成の値を入力します。
:ui:`Save`ボタンをクリックして構成の値を送信します。:ui:`Configuration updated successfully`が表示されます。構成リストが更新され、新しい値が表示されます。
構成の値の更新¶
SQLまたは|sf-web-interface|を使用して、構成の値を更新できます。
構成値を更新するには、初期値を設定するときと同じ構文を使用します。
ALTER APPLICATION <app> SET CONFIGURATION <config> VALUE = '<value>';
構成値の設定解除¶
SQLまたは|sf-web-interface|を使用して構成値を設定解除することができます。
SQLを使用して構成の値を設定解除するには、:doc:`ALTER APPLICATION UNSET CONFIGURATION </sql-reference/sql/alter-application-unset-configuration>`コマンドを使用します。
ALTER APPLICATION <app> UNSET CONFIGURATION <config>;
構成の値の取得¶
SHOW CONFIGURATIONSまたはDESCRIBE CONFIGURATIONに加えて、アプリは:doc:`get_configuration_value</sql-reference/functions/get_configuration_value>`関数を使用して、コンシューマーが提供した構成の値を取得できます。次の例は、構成の値を取得する方法を示しています。
SELECT SYS_CONTEXT('SNOWFLAKE$APPLICATION', 'GET_CONFIGURATION_VALUE' , '<config_name>')
注釈
システムコンテキストから構成値を取得できるのは、アプリのみです。コンシューマーとして構成値を表示するには、SQLまたは|sf-web-interface|を使用して構成の詳細を表示できます。詳細については、 構成リクエストの表示 をご参照ください。
機密性の高い構成¶
アプリが構成を作成するときに、:code:`SENSITIVE = TRUE`を設定することで、構成を機密としてマークできます。これは、アプリが個人アクセストークンやAPIキーなどの機密情報を消費者に要求する必要がある場合に便利です。
構成が機密である場合、コンシューマーが提供した値は他のコンシューマーのユーザーやロールから保護されます。|naf|は、Snowflakeの:doc:`SECRETオブジェクト</sql-reference/sql/create-secret>`に使用されるものと同様の保護を適用します。
コンシューマーが値を設定すると、:code:`ALTER APPLICATION SET CONFIGURATION VALUE`コマンドのクエリ履歴によってその値がマスキングされ、他のコンシューマーロールまたはユーザーに公開されなくなります。
値は、
SHOW CONFIGURATIONS、DESCRIBE CONFIGURATION、INFORMATION_SCHEMAビュー、またはACCOUNT_USAGEビューの出力に表示されません。
構成を作成したアプリは、構成が機密であっても、常にコンシューマーが提供した値を取得できます。これは仕様によるものです。アプリケーション構成の目的は、コンシューマーがアプリに値を提供することだからです。
SENSITIVEプロパティの変更¶
構成に値が設定されている間(つまり、構成が``PENDING``状態でないとき)アプリは:code:`SENSITIVE`プロパティを変更できません。この制限により、コンシューマーの値が誤って公開されることを防ぎます。値が設定されているのにアプリが:code:`SENSITIVE`プロパティを変更しようとした場合、コマンドはエラーなしで完了しますが、何も変更しません。
:code:`SENSITIVE`プロパティを変更するには、コンシューマーはまず:code:`ALTER APPLICATION UNSET CONFIGURATION`を使用して構成値を設定解除する必要があります。
SQL リファレンス¶
次のSQLコマンド、関数、ビューはアプリケーションの構成を管理するために使用されます。
SQL コマンド¶
ALTER APPLICATION SET CONFIGURATION DEFINITION:コンシューマーに値をリクエストするアプリケーション構成定義を作成または更新します。
ALTER APPLICATION DROP CONFIGURATION DEFINITION:アプリケーション構成定義を削除します。
ALTER APPLICATION SET CONFIGURATION VALUE:アプリケーション構成に値を設定します。
ALTER APPLICATION UNSET CONFIGURATION:アプリケーション構成値を設定解除します。
SHOW CONFIGURATIONS:アプリ内のすべてのアプリケーション構成をリストします。
DESCRIBE CONFIGURATION:アプリケーション構成の詳細について説明します。
SQL 関数¶
IS_CONFIGURATION_SET(SYS_CONTEXT 関数):構成に値が設定されているかどうかを返します。
GET_CONFIGURATION_VALUE(SYS_CONTEXT 関数):構成の現在の値を返します。
情報スキーマビューと関数¶
APPLICATION_CONFIGURATIONS ビュー:この情報スキーマビューには、INFORMATION_SCHEMAが配置されている指定されたデータベースまたは現在のデータベースで現在定義されている各アプリケーション構成の行が表示されます。
APPLICATION_CONFIGURATION_VALUE_HISTORY:構成の値の履歴を返します。
アカウント使用状況スキーマビュー¶
APPLICATION_CONFIGURATIONS ビュー:このアカウント使用状況ビューには、アカウント内の各アプリケーション構成の行が表示されます。
APPLICATION_CONFIGURATION_VALUE_HISTORY ビュー:このアカウント使用状況ビューには、構成の値の履歴が表示されます。
コールバック¶
構成値が変更されると、|naf|は、アプリの:doc:マニフェスト</developer-guide/native-apps/manifest-reference>`ファイルに登録されているライフサイクルコールバックを呼び出すことができます。。これらのコールバックによって、アプリは構成の変更を検証したり、準備したり、対応したりすることができます。たとえば、アプリ間通信を構成する際に、コンシューマーがサーバーアプリ名を設定する際に、:ref:`before_configuration_change<label-native_apps_configuration_callbacks_before_configuration_change>`コールバックを使用して接続仕様を自動的に作成または更新することが一般的なユースケースです。これにより、構成値を設定した後にコンシューマーが追加の手動手順を実行する必要がなくなります。アプリ間通信の詳細については、:doc:/developer-guide/native-apps/inter-app-communication`をご参照ください。
次の構成コールバックが使用可能です。
- validate_configuration_change
:code:`ALTER APPLICATION SET CONFIGURATION VALUE`コマンドの一部として呼び出される同期コールバック。アプリが指定された値に対してカスタム検証を実行できるようにします。コールバックがエラーを返す場合、コマンドは失敗し、新しい値は設定されません。
- before_configuration_change
:code:`ALTER APPLICATION SET CONFIGURATION VALUE`および:code:`ALTER APPLICATION UNSET CONFIGURATION`コマンドの一部として呼び出される同期コールバック。構成値が保存される前に、アプリが構成値に基づいて操作を実行できるようにします。
- after_configuration_change
:code:`ALTER APPLICATION SET CONFIGURATION VALUE`または:code:`ALTER APPLICATION UNSET CONFIGURATION`コマンドの完了後に呼び出される非同期コールバック。通知や追跡などの目的で、アプリが変更に対応できるようにします。
完全なコールバックの署名と戻り値については、:doc:`/developer-guide/native-apps/callbacks`をご参照ください。