リソースリファレンスの作成

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

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

PUBLIC.CREATE_RESOURCE(name VARCHAR,resource_id VARIANT,ingestion_configurations VARIANT,id VARCHAR,enabled BOOLEAN,resource_metadata VARIANT)

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

PUBLIC.CREATE_RESOURCE_VALIDATE(resource VARIANT)

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

PUBLIC.PRE_CREATE_RESOURCE(resource VARIANT)

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

PUBLIC.POST_CREATE_RESOURCE(resource_ingestion_definition_id VARCHAR)

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

カスタムハンドラー

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

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

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

ハンドラー

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

CREATE OR REPLACE PROCEDURE PUBLIC.CREATE_RESOURCE(name VARCHAR,resource_id VARIANT,ingestion_configurations VARIANT,id VARCHAR,enabled BOOLEAN,resource_metadata VARIANT)
  RETURNS VARIANT
  LANGUAGE JAVA
  RUNTIME_VERSION = '11'
  PACKAGES = ('com.snowflake:snowpark:1.11.0')
  IMPORTS = ('/connectors-native-sdk.jar')
  HANDLER = 'com.custom.handler.CustomCreateResourceHandler.createResource';

  GRANT USAGE ON PROCEDURE PUBLIC.CREATE_RESOURCE(VARCHAR, VARIANT, VARIANT, VARCHAR, BOOLEAN, VARIANT) TO APPLICATION ROLE ADMIN;
Copy

内部プロシージャ

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

CREATE OR REPLACE PROCEDURE PUBLIC.CREATE_RESOURCE_VALIDATE(resource VARIANT)
  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.CREATE_RESOURCE_VALIDATE(resource VARIANT)
  RETURNS VARIANT
  LANGUAGE JAVA
  RUNTIME_VERSION = '11'
  PACKAGES = ('com.snowflake:snowpark:1.11.0')
  IMPORTS = ('/connectors-native-sdk.jar')
  HANDLER = 'com.custom.handler.CustomHandler.createResourceValidate';
Copy

ビルダーアプローチ

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

  • CreateResourceValidator

  • PreCreateResourceCallback

  • PostCreateResourceCallback

  • ConnectorErrorHelper

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

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

class CustomHandler {

  // Path to this method needs to be specified in the PUBLIC.CREATE_RESOURCE procedure using SQL
  public static Variant createResource(
      Session session,
      String name,
      Variant resourceId,
      Variant ingestionConfigurations,
      String id,
      boolean enabled,
      Variant resourceMetadata) {
    //Using builder
    var handler = CreateResourceHandlerBuilder.builder(session)
      .withPreCreateResourceCallback(new CustomPreCreateResourceCallback())
      .build();
    return handler.createResource(resourceIngestionDefinitionId).toVariant();
  }
}
Copy