接続構成を更新する

接続構成の更新は、 コネクタを一時停止 した後に直接呼び出すことができるステップです。このステップでは、ユーザーはソースシステムとの接続を確立してSnowflakeへのデータの取り込みを開始するために必要なプロパティを更新できます。カスタムロジックで上書きする場合は、このプロシージャを置き換えて、カスタムJavaハンドラーを指定する必要があります。

このプロシージャを呼び出すには、ユーザーに ADMIN アプリケーションロールが割り当てられている必要があります。

接続構成ステップは、内部的にいくつかのフェーズで構成されています。一部は完全にカスタマイズ可能で、デフォルトでは何も実行されません。フェーズは次のとおりです。

  1. ステータスの検証

  2. 入力の検証

  3. ドラフトコールバック

  4. ドラフト接続の検証

  5. 設定の更新

  6. 内部コールバック

  7. 接続の検証

  8. ステータスの更新

要件

接続構成では、Native Appのインストール中に少なくとも次のSQLファイルを実行する必要があります。

  • core.sql

  • configuration/app_config.sql

  • configuration/connection_configuration.sql

  • configuration/update_connection_configuration.sql

この機能の場合、 SDK ユーザーに応じて追加の要件があります。

  • PUBLIC.TEST_DRAFT_CONNECTION() および PUBLIC.TEST_CONNECTION() プロシージャのカスタム実装

ステータスの検証

接続構成の更新を実行するには、コネクタの内部ステータスが PAUSED である必要があります。

この検証は、 UpdateConnectionConfigurationHandlerBuilder を使用しても、ストアドプロシージャを上書きしても上書きできません。ただし、この種の検証を実行しないカスタムハンドラーを実装することはできます。

入力の検証

入力は、プロパティのマップを含む variant である必要がありますが、それだけでは不十分な場合もあります。そのため、 SDK は、 PUBLIC.UPDATE_CONNECTION_CONFIG_VALIDATE(config VARIANT) という内部ストアドプロシージャを提供しています。デフォルトでは、このプロシージャは 'response_code': 'OK' を返すだけですが、上書きすると検証中に提供された構成を更新できます。この機能により、入力のトリミング、大文字/小文字への変換などのカスタムロジックが可能になります。何らかの方法で変換された構成を返すには、応答 Variant に追加の "config" プロパティを含める必要があり、このプロパティには更新された構成を Variant として含める必要があります。このプロシージャは、 SQL を使用して上書きするか、 UpdateConnectionConfigurationHandlerBuilder を使用して、 ConnectionConfigurationInputValidator インターフェイスのカスタム実装を提供することでカスタマイズできます。

変換を使用したカスタム実装からの有効な応答は次のようになります。

{
    "response_code" : "OK",
    "config": {
        "key1": "value1",
        "key2": "value2"
    }
}
Copy

設定の更新

検証が正常に完了すると、構成は内部の APP_CONFIG テーブルに保存されます。これを担当するサービスは、提供された Variantconnection_configuration キーの下に保存します。この構成は、内部ドラフトコールバックとドラフト接続検証によって正常に検証および更新される必要があり、提供されるプロパティのセットは完全にユーザー次第です。

内部ドラフトコールバック

内部コールバックは、もう1つのカスタマイズ可能なステップです。デフォルトでは、 PUBLIC.DRAFT_CONNECTION_CONFIGURATION_INTERNAL(connection_configuration VARIANT) を呼び出し、 'response_code': 'OK' を返します。たとえば、外部アクセス統合を許可することで、他のプロシージャを変更するために使用できます。SQLスクリプトを通じて上書きすることも、 ConnectionConfigurationHandlerBuilder を使用して ConnectionConfigurationCallback インターフェイスのカスタム実装を提供することもできます。

ドラフト接続の検証

このステップは PUBLIC.TEST_DRAFT_CONNECTION(connection_configuration VARIANT) プロシージャをトリガーします。このプロシージャは、入力パラメーターからのデータを接続構成として使用して、ソースシステムにデータをクエリしようとします。このプロシージャはデフォルトでは実装されていないため、 SDK ユーザーが提供する必要があります。さらに、このフェーズをカスタマイズするために、 ConnectionValidator インターフェイス実装を UpdateConnectionConfigurationHandlerBuilder に提供することもできます。この場合、ストアドプロシージャを実装する必要はありません。このプロシージャでは、最小限の接続チェックのみを実行して、Snowflakeの外部アクセス機能が正しく構成され、コネクタにそれらの機能を使用するために必要なすべての権限があることを確認することをお勧めします。

内部コールバック

内部コールバックは、もう1つのカスタマイズ可能なステップです。デフォルトでは、 PUBLIC.SET_CONNECTION_CONFIGURATION_INTERNAL(connection_configuration VARIANT) を呼び出し、 'response_code': 'OK' を返します。たとえば、外部アクセス統合を許可することで、他のプロシージャを変更するために使用できます。SQLスクリプトを通じて上書きすることも、 ConnectionConfigurationHandlerBuilder を使用して ConnectionConfigurationCallback インターフェイスのカスタム実装を提供することもできます。

接続の検証

このステップは PUBLIC.TEST_CONNECTION プロシージャをトリガーします。このプロシージャは、 PUBLIC.TEST_DRAFT_CONNECTION(connection_configuration VARIANT) と連動しますが、入力パラメーターがなく、データベースに保存された構成を使用して正式な接続をテストするために使用する必要があります。

構成の表示

ADMIN および VIEWER のユーザーは、内部テーブルから現在の接続構成を返す PUBLIC.GET_CONNECTION_CONFIGURATION() プロシージャを使用できます。

応答

正常な応答

プロシージャが正常に終了すると、 TEST_CONNECTION プロシージャからの応答が返されます。次の形式を使用することをお勧めします。

{
  "response_code": "OK"
}
Copy

エラーの応答

エラーが発生した場合、応答は次の形式になります。

{
  "response_code": "<ERROR_CODE>",
  "message": "<error message>"
}
Copy

考えられるエラーコードは次のとおりです。

  • INVALID_CONNECTOR_STATUS - コネクタのステータスが無効です。期待されるステータス: [PAUSED]

  • INTERNAL_ERROR - 内部で問題が発生しました。メッセージには説明が必要です

  • PROCEDURE_NOT_FOUND - 呼び出されたプロシージャが存在しません。この場合、主に TEST_CONNECTION および TEST_DRAFT_CONNECTION プロシージャに関するものです

  • UNKNOWN_SQL_ERROR - このエラーは、内部プロシージャを呼び出すときに予期しない事態が発生したときに発生します

  • INVALID_RESPONSE - このエラーは、内部プロシージャから受信した応答に response_code が含まれていない場合、またはエラーの応答に message が含まれていないが、 response_code が含まれている場合に発生します。

  • UNKNOWN_ERROR - 予期しない問題が発生したことを意味します - スローされた例外のメッセージが転送されます

  • TEST_DRAFT_CONNECTION() プロシージャから受信したカスタムエラーコード - コネクタ開発者によって定義されます

  • DRAFT_CONNECTION_CONFIGURATION_INTERNAL() プロシージャから受信したカスタムエラーコード - コネクタ開発者によって定義されます

  • TEST_CONNECTION() プロシージャから受信したカスタムエラーコード - コネクタ開発者によって定義されます

  • SET_CONNECTION_CONFIGURATION_INTERNAL() プロシージャから受信したカスタムエラーコード - コネクタ開発者によって定義されます