リソース参照を有効にする

データベースオブジェクトとプロシージャ

ファイル ingestion/resource_management.sql が実行されると、以下のデータベース・オブジェクトが作成されます。

PUBLIC.ENABLE_RESOURCE(resource_ingestion_definition_id VARCHAR)

ADMIN ロールで使用可能なエントリポイントプロシージャ。このプロシージャは、Java関数 EnableResourceHandler.enableResource を呼び出します。

PUBLIC.ENABLE_RESOURCE_VALIDATE(resource_ingestion_definition_id VARCHAR)

コネクタ固有の構成の検証に使用される有効化プロシージャ。デフォルトでは 'response_code': 'OK' を返します。これは DefaultEnableResourceValidator によって呼び出されます。SQL でもJavaでも上書きできます。

PUBLIC.PRE_ENABLE_RESOURCE(resource_ingestion_definition_id VARCHAR)

リソースが有効になる前に呼び出されるコネクタ固有のロジックを追加するために使用されるプロシージャ。デフォルトでは 'response_code': 'OK' を返します。これは DefaultPreEnableResourceCallback によって呼び出されます。SQL でもJavaでも上書きできます。

PUBLIC.POST_ENABLE_RESOURCE(resource_ingestion_definition_id VARCHAR)

リソースが有効になった後に呼び出されるコネクタ固有のロジックを追加するために使用されるプロシージャ。デフォルトでは 'response_code': 'OK' を返します。これは DefaultPostEnableResourceCallback によって呼び出されます。SQL でもJavaでも上書きできます。

カスタムハンドラー

ハンドラーとその内部は、次の2つの方法を使用してカスタマイズできます。

プロシージャの代替アプローチ

以下のコンポーネントは SQL を使用して置き換えることができます。

ハンドラー

EnableResourceHandler の全体的なカスタム実装を提供するには、 PUBLIC.ENABLE_RESOURCE プロシージャを置き換える必要があります。例:

CREATE OR REPLACE PROCEDURE PUBLIC.ENABLE_RESOURCE(resource_ingestion_definition_id VARCHAR)
  RETURNS VARIANT
  LANGUAGE JAVA
  RUNTIME_VERSION = '11'
  PACKAGES = ('com.snowflake:snowpark:1.11.0')
  IMPORTS = ('/connectors-native-sdk.jar')
  HANDLER = 'com.custom.handler.CustomEnableResourceHandler.enableResource';

  GRANT USAGE ON PROCEDURE PUBLIC.ENABLE_RESOURCE(VARCHAR) TO APPLICATION ROLE ADMIN;
Copy

内部プロシージャ

内部プロシージャ ENABLE_RESOURCE_VALIDATEPRE_ENABLE_RESOURCEPOST_ENABLE_RESOURCE は、 SQL を通してカスタマイズすることもできます。これらのプロシージャは、別のJavaハンドラーを呼び出すこともできます。

CREATE OR REPLACE PROCEDURE PUBLIC.ENABLE_RESOURCE_VALIDATE(resource_ingestion_definition_id VARCHAR)
  RETURNS VARIANT
  LANGUAGE SQL
  EXECUTE AS OWNER
  AS
  BEGIN
    -- SOME CUSTOM LOGIC BEGIN
    SELECT sysdate();
    -- SOME CUSTOM LOGIC END

    RETURN OBJECT_CONSTRUCT('response_code', 'OK');
  END;

CREATE OR REPLACE PROCEDURE PUBLIC.ENABLE_RESOURCE_VALIDATE(resource_ingestion_definition_id VARCHAR)
  RETURNS VARIANT
  LANGUAGE JAVA
  RUNTIME_VERSION = '11'
  PACKAGES = ('com.snowflake:snowpark:1.11.0')
  IMPORTS = ('/connectors-native-sdk.jar')
  HANDLER = 'com.custom.handler.CustomHandler.enableResourceValidate';
Copy

ビルダーアプローチ

EnableResourceHandler は、 EnableResourceHandlerBuilder を使用してカスタマイズできます。このビルダーを使用すると、ユーザーは次のインターフェイスのカスタム実装を提供できます。

  • EnableResourceValidator

  • PreEnableResourceCallback

  • PostEnableResourceCallback

  • ConnectorErrorHelper

関数が提供されていない場合は、 SDK によって提供されるデフォルトの実装が使用されます。

class CustomPreEnableResourceCallback implements PreEnableResourceCallback {
  @Override
  public ConnectorResponse execute(String resourceIngestionDefinitionId) {
    // CUSTOM LOGIC
    return ConnectorResponse.success();
  }
}

class CustomHandler {

  // Path to this method needs to be specified in the PUBLIC.ENABLE_RESOURCE procedure using SQL
  public static Variant enableResource(Session session, String resourceIngestionDefinitionId) {
    //Using builder
    var handler = EnableResourceHandlerBuilder.builder(session)
      .withPreEnableResourceCallback(new CustomPreEnableResourceCallback())
      .build();
    return handler.enableResource(resourceIngestionDefinitionId).toVariant();
  }
}
Copy