SQL コマンドを使用したコネクタのインストールと構成

このトピックでは、 SQL コマンドを使用してコネクタをインストールおよび構成する方法について説明します。 ServiceNow インスタンスの準備 で説明されているプロシージャをすでに実行していることを前提としています。

このトピックの内容:

OAuth の設定

注釈

OAuth の代わりに基本認証を使用する予定がある場合は、このセクションをスキップして シークレットオブジェクトの作成 に進みます。

ServiceNow インスタンスへの認証に OAuth を使用するように、 ServiceNow 用Snowflakeコネクタを構成できます。

  • ServiceNow では、 コード付与フロー で OAuth の使用をサポートするようにインスタンスを設定する必要があります。

  • ServiceNow 用Snowflakeコネクタで、

    • コネクタは、 TYPE = API_AUTHENTICATION とのセキュリティ統合を使用して、Snowflakeを ServiceNow インスタンスに接続します。

      セキュリティ統合は、 ServiceNow インスタンスを認証するための ServiceNow OAuth クライアント ID、クライアントシークレット、およびエンドポイント URL を指定します。

    • コネクタは、Snowflakeシークレットオブジェクトを使用して、認証情報などの機密情報を管理します。

      認証に OAuth を使用する場合、コネクタは ServiceNow OAuth 更新トークン、更新トークンの有効期限、およびセキュリティ統合の名前をSnowflakeシークレットオブジェクトに格納します。

ServiceNow が OAuth を使用するようにSnowflakeコネクタを設定するには、次のステップに従います。

  1. コード付与フローのある OAuth を使用するように ServiceNow インスタンスを構成します。

    • ServiceNow インスタンスがすでに OAuth コード付与フローを使用していて、そのインスタンスをSnowflake ServiceNow コネクタで使用する場合は、クライアント ID、クライアントシークレット、 OAuth トークンに対応するエンドポイント URL をメモします。

      詳細については、 OAuth トークンを管理する をご参照ください。この情報を書き留めたら、次のステップでセキュリティ統合を作成します。

    • 別の ServiceNow インスタンスを使用する場合は、インスタンスにアクセスするか、インスタンスを作成し、 OAuth を設定するクライアントがインスタンスにアクセスできるようにエンドポイントを作成する で示したように、コード付与フローで OAuth を使用するようにインスタンスを構成します。

  2. ServiceNow にアプリケーションレジストリを作成し、それを使用してコネクタを構成します。

    1. ServiceNow インスタンスにログインし、 Homepage を選択します。

    2. OAuth を検索し、 Application Registry を選択します。

    3. New を選択してから、 Create an OAuth API endpoint for external clients を選択します。

      次の画像に示すように、アプリケーションレジストリの構成ページが表示されます。

      Displays the Application Registry page in ServiceNow.
    4. ServiceNow で、 Name フィールドに OAuth アプリケーションレジストリの名前を入力します。

    5. ServiceNow で、 Redirect URL field に次のように入力します。

      https://apps-api.c1.<cloud_region_id>.<cloud>.app.snowflake.com/oauth/complete-secret
      
      Copy

      条件:

      cloud_region_id

      Snowflakeアカウントのクラウドリージョンの識別子を指定します。

      cloud

      クラウドプラットフォームの識別子を指定します(例: awsazure、または gcp)。

    6. 必要に応じて、 ServiceNow で、 Refresh Token Lifespan フィールドと Access Token Lifespan フィールドの値を更新します。

      • Snowflakeは、アクセストークンの有効期間を少なくとも600秒に設定することをお勧めします。

      • 更新トークンの有効期間には、7776000(90日)の値を指定します。

    7. ServiceNow で、 Submit を選択します。

      OAuth アプリケーションレジストリがアプリケーションレジストリのリストに表示されます。

    8. ServiceNow で、作成したばかりのアプリケーションレジストリを選択します。

      ServiceNow が Client ID フィールドと Client Secret フィールドの値を生成したことに注意してください。これらの値は、次のセクションで セキュリティ統合を作成する ときに使用します。

OAuth 更新トークンの生成

OAuth 更新トークンを生成するには、

  1. OAuth の設定 で説明されているタスクを実行したことを確認してください。

  2. ServiceNow ドキュメントの REST OAuth 例 で説明されているように、 ServiceNow インスタンスの /oauth_token.do エンドポイントに HTTP リクエストを送信します。

    たとえば、curlを使用して HTTP リクエストを送信する場合は、

    curl -d "grant_type=password" --data-urlencode "client_id=<client_id>" --data-urlencode "client_secret=<client_secret>" --data-urlencode "username=<username>" --data-urlencode "password=<password>" -X POST https://<instance_name>.service-now.com/oauth_token.do
    
    Copy

    条件

    instance_name

    ServiceNow インスタンスの名前を指定します。

    client_id および client_secret

    ServiceNow エンドポイントの設定時に取得した値を指定します。

    username および password

    ServiceNow インスタンスの認証情報を指定します。

    注釈

    上記の例では、curlで data-urlencode コマンドラインフラグを使用して、 ServiceNow に送信される HTTP リクエスト内のクライアントシークレット、ユーザー名、およびパスワードを URL エンコード します。

    別のツールを使用して HTTP リクエストを送信している場合は、これらの値をリクエストで URL エンコードしていることを確認してください。

    HTTP 応答の本文には、 JSON オブジェクトが含まれています。このオブジェクトの refresh_token フィールドから更新トークンを取得します。

    {"access_token":"abcd1234","refresh_token":"cdef567","scope":"useraccount","token_type":"Bearer","expires_in":1799}
    
    Copy

セキュリティ統合の作成

セキュリティ統合は、Snowflakeとサードパーティ OAuth 2.0サービス間のインターフェイスを提供するSnowflakeオブジェクトです。

次の例に示すように、 CREATE SECURITY INTEGRATION コマンドを使用してセキュリティ統合を作成します。

CREATE SECURITY INTEGRATION <name>
 TYPE = API_AUTHENTICATION
 AUTH_TYPE = OAUTH2
 OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST
 OAUTH_CLIENT_ID = '<client_id>'
 OAUTH_CLIENT_SECRET = '<client_secret>'
 OAUTH_TOKEN_ENDPOINT = 'https://<my_instance>.service-now.com/oauth_token.do'
 ENABLED = TRUE;
Copy

条件:

name

セキュリティ統合の名前を指定します。

client_id

前のセクションで ServiceNow から取得した Client ID フィールドの値を指定します。

client_secret

前のセクションで ServiceNow から取得した Client Secret フィールドの値を指定します。

my_instance

ServiceNow インスタンスの名前を指定します。これは、 ServiceNow インスタンスホスト名の最初の部分です。たとえば、 ServiceNow インスタンスへの URL が次の場合、

https://myinstance.service-now.com
Copy

インスタンスの名前は myinstance になります。

シークレットオブジェクトの作成

ServiceNow 用Snowflakeコネクタが認証に使用するSnowflakeシークレットオブジェクトを作成します。

Snowflakeは、 ACCOUNTADMIN ロール(コネクタのインストール、構成、実行に使用するロール)とは別に、専用のロールを使用してシークレットオブジェクトを管理することをお勧めします。Snowflakeは、シークレットオブジェクトを専用のデータベースとスキーマに格納することもお勧めします。任意のロールを選択してシークレットを管理できること、また任意のデータベースとスキーマを選択してシークレットを格納できることに注意してください。

シークレットを管理するカスタムロールを作成するには、 CREATE ROLE コマンドを使用します。ロールに付与できる権限については、 アクセス制御権限 をご参照ください。

次のセクションでは、別のデータベースとスキーマに格納され、カスタムロールによって管理されるシークレットオブジェクトを作成する方法について説明します。

シークレットオブジェクトのスキーマの作成

まず、 CREATE DATABASE コマンドと CREATE SCHEMA コマンドを実行して、シークレットオブジェクトを格納するデータベースとスキーマを作成します。スキーマとデータベースの名前は、有効な オブジェクト識別子 である必要があります。

たとえば、シークレットオブジェクトのデータベース secretsdb とスキーマ apiauth を作成するには、次のコマンドを実行します。

USE ROLE accountadmin;
CREATE DATABASE secretsdb;
CREATE SCHEMA apiauth;
Copy

シークレットを管理するカスタムロールの作成

次に、シークレットを管理するためのカスタムロールを作成し(既存のロールを使用しない場合)、シークレットの作成に必要な権限をロールに付与します。

  1. USERADMIN システムロールを使用して CREATE ROLE コマンドを実行し、シークレットを管理するためのカスタムロールを作成します。たとえば、シークレットを管理するためのカスタムロール secretadmin を作成するには、次のコマンドを実行します。

    USE ROLE useradmin;
    CREATE ROLE secretadmin;
    
    Copy
  2. SECURITYADMIN システムロールを使用して GRANT <権限> TO ROLE コマンドを実行し、次の権限をカスタムロールに付与します。

    例:

    USE ROLE securityadmin;
    GRANT USAGE ON DATABASE secretsdb TO ROLE secretadmin;
    GRANT USAGE ON SCHEMA secretsdb.apiauth TO role secretadmin;
    GRANT CREATE SECRET ON SCHEMA secretsdb.apiauth TO role secretadmin;
    GRANT USAGE ON INTEGRATION servicenow_oauth TO role secretadmin;
    
    Copy
  3. USERADMIN システムロールを使用して GRANT <権限> TO ROLE コマンドを実行し、シークレットを作成するユーザーにカスタムロールを付与します。たとえば、ユーザー servicenow_secret_owner にロールを付与するには、次のコマンドを実行します。

    USE ROLE useradmin;
    GRANT ROLE secretadmin TO user servicenow_secret_owner;
    
    Copy

シークレットの作成

次に、コード付与フローで OAuth を使用して、Snowflakeが ServiceNow インスタンスに対して認証できるようにするシークレットを作成します。

注釈

OAuth の代わりに基本認証を使用する場合は、 以下の注意 を代わりにご参照ください。

シークレットオブジェクトを作成するには、次のパラメーターで CREATE SECRET コマンドを実行して、

  • TYPEOAUTH2 に設定します。

  • OAUTH_REFRESH_TOKENOAuth 更新トークンの生成 で取得した OAuth 更新トークンに設定します。

  • OAUTH_REFRESH_TOKEN_EXPIRY_TIME を更新トークンの有効期限のタイムスタンプ(UTC タイムゾーン)に設定します。これは、 ServiceNow からトークンが発行された日付までのトークンの有効期間を追加することで計算できます。デフォルトでは、トークンは100日で期限切れになります。

  • API_AUTHENTICATIONセキュリティ統合の作成 で作成したセキュリティ統合の名前に設定します。

たとえば、 servicenow_oauth という名前のセキュリティ統合を使用する service_now_creds_oauth_code という名前のシークレットを作成するには、次のコマンドを実行します。

USE ROLE secretadmin;
USE SCHEMA secretsdb.apiauth;
CREATE SECRET servicenow_creds_oauth_code
  TYPE = OAUTH2
  OAUTH_REFRESH_TOKEN = '34n;vods4nQsdg09wee4qnfvadH'
  OAUTH_REFRESH_TOKEN_EXPIRY_TIME = '2022-01-06 20:00:00'
  API_AUTHENTICATION = servicenow_oauth;
Copy

既存のシークレットのプロパティを変更するには(例: OAuth リフレッシュトークンを更新する)、 ALTER SECRET コマンドを使用します。

注釈

基本認証(OAuth ではなく)を使用する場合は、 CREATE SECRET コマンドを実行して、 TYPEPASSWORD に設定し、シークレットを作成します。 USERNAMEPASSWORD を ServiceNow インスタンスへの認証に使用する予定の ServiceNow ユーザーのユーザー名とパスワードに設定します。例:

USE ROLE secretadmin;
USE SCHEMA secretsdb.apiauth;
CREATE SECRET servicenow_creds_pw
  TYPE = PASSWORD
  USERNAME = 'jsmith1'
  PASSWORD = 'W3dr@fg*7B1c4j';
Copy

このユーザーに対して多要素認証が有効になっている場合は、 ServiceNow ドキュメントの REST API で説明されているように、パスワードとともに MFA トークンを提供する必要があります。

ウェアハウスの作成

Snowflakeは、コネクタ専用の ウェアハウスを作成する ことをお勧めします。専用のウェアハウスにより、コスト管理とリソースの追跡が改善されます。リソースの追跡を容易にするために、必要に応じて専用ウェアハウスに 1 つまたは複数のタグを追加 できます。

注釈

専用ウェアハウスなしで ServiceNow 用Snowflakeコネクタを実行するには、ウェアハウスの値を指定するよう求められたときに空の文字列を渡します。

コネクタウェアハウスの場合、SnowflakeはLサイズのマルチクラスターウェアハウスを使用することをお勧めします。

servicenow_conn_warehouse という名前のLサイズのウェアハウスを作成するには、次のコマンドを実行します。

USE ROLE accountadmin;
CREATE WAREHOUSE servicenow_conn_warehouse WAREHOUSE_SIZE = LARGE;
Copy

ServiceNow データのデータベースおよびスキーマの作成

次に、 ServiceNow データのデータベースとスキーマを作成します。ServiceNow 用Snowflakeコネクタは、 ServiceNow データをこのデータベースとスキーマにインジェストします。

データベースとスキーマを作成するときは、次の点に注意してください。

データベースとスキーマを作成するには、 CREATE DATABASECREATE SCHEMA コマンドを実行します。

たとえば、データベース dest_db と ServiceNow データのスキーマ dest_schema を作成するには、次のコマンドを実行します。

USE ROLE accountadmin;
CREATE DATABASE dest_db;
CREATE SCHEMA dest_schema;
Copy

注釈

コネクタを再インストールする場合は、コネクタの以前のインストール用に作成したスキーマを再利用できます。再利用できるのは、コネクタの以前のインストールですでにデータがロードされており、引き続き同じテーブルにデータをロードする場合です。

データのロードを続行するため、コネクタを再インストールする前にスキーマを変更しないでください。コネクタの以前のインストールによって作成されたテーブルの定義を変更しないでください。

後で ENABLE_TABLES ストアドプロシージャを呼び出す ときに、ストアドプロシージャはこれらの必要なオブジェクトがすでに存在することを確認し、再作成を試みません。

データのインジェスチョンを再開する場所を決定するために、コネクタはイベントログテーブルを調べます。

  • コネクタがイベントログテーブルで型 UPDATE または DELETE の行を検出した場合、コネクタは最新の行(sys_updated_on または sys_created_on 列から)のタイムスタンプをインジェスチョンの開始点として使用します。

  • イベントテーブルに UPDATE または DELETE 型の行がない場合、コネクタはイベントログテーブルの event_date 列の最も古い値を使用します。

ServiceNow インスタンスと通信するための API 統合の作成

次に、 ServiceNow インスタンスと通信するための API 統合を作成します。次の構文で CREATE API INTEGRATION コマンドを実行します。

CREATE API INTEGRATION <integration_name>
  API_ALLOWED_PREFIXES = ('https://<servicenow_instance_name>.service-now.com')
  ALLOWED_AUTHENTICATION_SECRETS = (<secret_name>)
  ENABLED = TRUE
Copy

条件:

integration_name

API 統合の名前を指定します。名前は、有効な オブジェクト識別子 である必要があります。名前は、使用するアカウントの API 統合間において一意である必要があります。

API_ALLOWED_PREFIXES = ('https://servicenow_instance_name.service-now.com')

ServiceNow インスタンスに URL を指定します。これにより、この API 統合の使用は、指定された URL を持つインスタンスに制限されます。

ALLOWED_AUTHENTICATION_SECRETS = (secret_name)

API 統合のスコープで使用できるシークレットの名前のリストを指定します。

これを シークレットオブジェクトの作成 で作成したシークレットオブジェクトの名前に設定します。

ENABLED = TRUE

この API 統合を有効にするか無効にするかを指定します。API 統合が無効になっている場合、その統合に依存する外部関数はすべて機能しません。

TRUE

統合の定義で指定されたパラメーターに基づいて統合の実行を許可します。

FALSE

メンテナンスのために統合を中断します。Snowflakeとサードパーティサービス間の統合はいずれも機能しません。

たとえば、 myinstance という名前の ServiceNow インスタンスに対して servicenow_api_integration という名前の API 統合を作成するには、次のコマンドを実行します。

USE ROLE accountadmin;
CREATE API INTEGRATION servicenow_api_integration
  API_ALLOWED_PREFIXES = ('https://myinstance.service-now.com')
  ALLOWED_AUTHENTICATION_SECRETS = (secretsdb.apiauth.servicenow_creds_pw)
  ENABLED = TRUE
Copy

注釈

CREATE API INTEGRATION ステートメントで他のパラメーターを設定する必要はありません。

コネクタのログの構成

Snowflake用 ServiceNow コネクタは、イベントテーブルを使用してコネクタのエラーログを保存します。イベントテーブルを設定するには、 イベントテーブルの設定 ガイドに従います。イベントテーブルが設定されていない場合、ログとイベント情報は破棄されます。

コネクタ用カスタムロールの作成

次に、コネクタ用カスタムロールを作成し、コネクタを実行するために必要な権限をそのロールに付与します。

このロールにより、コネクタは次を実行できるようになります。

  • データを取り込むためのタスクを作成し、管理する。

  • 専用のウェアハウスを使用する。

  • ServiceNow インスタンスに接続するために、シークレットと API 統合にアクセスする。

このロールは、コネクタによってインジェストされた ServiceNow データを含むテーブルとビューの所有者でもあります。

このロールを作成して権限を付与するには、

  1. USERADMIN システムロールを使用して CREATE ROLE コマンドを実行し、データを所有するカスタムロールを作成します。たとえば、データを所有するカスタムロール connector_resources_provider を作成するには、次のコマンドを実行します。

    USE ROLE useradmin;
    CREATE ROLE connector_resources_provider;
    
    Copy
  2. ACCOUNTADMIN ロールを使用して GRANT <権限> to ROLE コマンドを実行し、次の権限をカスタムロールに付与します。

    たとえば、 connector_resources_provider という名前のロールに次の権限を付与するには、

    • アカウントに対する EXECUTE TASK

    • アカウントに対する EXECUTE MANAGED TASK

    • ウェアハウス servicenow_conn_warehouse に対する USAGE

    • dest_db データベースに対する USAGE

    • dest_db.dest_schema スキーマに対する USAGE、 CREATE TABLE、 および CREATE VIEW

    • servicenow_api_integration 統合に対する USAGE

    • secretsdb データベースに対する USAGE

    • secretsdb.apiauth スキーマに対する USAGE

    • secretsdb.apiauth.servicenow_creds_oauth_code secret シークレットに対する USAGE

    次のコマンドを実行します。

    USE ROLE accountadmin;
    
    GRANT EXECUTE TASK ON ACCOUNT TO ROLE connector_resources_provider;
    GRANT EXECUTE MANAGED TASK ON ACCOUNT TO ROLE connector_resources_provider;
    
    GRANT USAGE ON WAREHOUSE servicenow_conn_warehouse TO ROLE connector_resources_provider;
    
    GRANT USAGE ON DATABASE dest_db TO ROLE connector_resources_provider;
    GRANT USAGE ON SCHEMA dest_db.dest_schema TO ROLE connector_resources_provider;
    GRANT CREATE TABLE ON SCHEMA dest_db.dest_schema TO ROLE connector_resources_provider;
    GRANT CREATE VIEW ON SCHEMA dest_db.dest_schema TO ROLE connector_resources_provider;
    
    GRANT USAGE ON INTEGRATION servicenow_api_integration TO ROLE connector_resources_provider;
    
    GRANT USAGE ON DATABASE secretsdb TO ROLE connector_resources_provider;
    GRANT USAGE ON SCHEMA secretsdb.apiauth TO ROLE connector_resources_provider;
    GRANT USAGE ON SECRET secretsdb.apiauth.servicenow_creds_oauth_code TO ROLE connector_resources_provider;
    
    Copy

ServiceNow 用Snowflakeコネクタをインストールした後、このロールをコネクタに付与します。

インジェスト開始後にインジェストされたデータにアクセスするためのより詳細に設定されたロールを別途作成することをお勧めしますが、このロールを使用してインジェストされたデータをクエリすることができ、さらに権限を追加してこのロールを拡張することができます。逆に、コネクタが必要とするオブジェクトに対するロール権限の取り消しや、取り込まれたデータを持つテーブルやビューのロール所有者の変更は許可されておらず、コネクタが破壊されます。

ServiceNow 用Snowflakeコネクタのインストール

コネクタをインストールするには、

  1. Snowsightを使用してコネクタインスタンスのデータベースを作成します。データベースの作成方法の詳細については、 Snowsightによるコネクタのインストールと構成 をご参照ください。

  2. SQL ワークシートに移動します。

  3. ACCOUNTADMIN ロールを持つユーザーとしてログインします。例:

    USE ROLE ACCOUNTADMIN;
    
    Copy
  4. コネクタのカスタムのロール(以前に作成したロール)を、 コネクタのインスタンスとして機能するデータベース に付与します。

    たとえば、 connector_resources_provider という名前のロールをデータベース my_connector_servicenow に付与するには、次のコマンドを実行します。

    GRANT ROLE connector_resources_provider TO DATABASE my_connector_servicenow;
    
    Copy
  5. インストールされたデータベースに FIREWALL_CONFIGURATION データベースプロパティを設定します。ServiceNow インスタンスの URL プレフィックスを含めます。

    たとえば、データベースの名前が my_connector_servicenow で、 ServiceNow インスタンス名が my-instance の場合は、次のコマンドを実行します。

    ALTER DATABASE my_connector_servicenow SET FIREWALL_CONFIGURATION = ('https://my-instance.service-now.com')
    
    Copy
  6. USE DATABASE コマンドを実行して、コネクタにデータベースを使用します。例:

    USE DATABASE my_connector_servicenow;
    
    Copy
  7. CALL コマンドを使用して CONFIGURE_CONNECTION という名前のストアドプロシージャを呼び出し、 ServiceNow インスタンスへの接続を構成します。

    CALL CONFIGURE_CONNECTION({
       'serviceNowUrl': '<servicenow_base_url>',
       'secret': '<secret_name>',
       'apiIntegrationName': '<api_integration_name>'
    })
    
    Copy

    条件:

    servicenow_base_url

    コネクタが使用する ServiceNow インスタンスの URL を指定します。URL は次の形式にする必要があります。

    https://<servicenow_instance_name>.service-now.com
    
    Copy
    secret_name

    ServiceNow への認証用の認証情報を含むシークレットオブジェクト(以前に作成したシークレット) の完全修飾名を指定します。

    シークレットオブジェクトの完全修飾名を次の形式で指定する必要があります。

    <database_name>.<schema_name>.<secret_name>
    
    Copy

    データベース、スキーマ、シークレットの名前は、有効な オブジェクト識別子 である必要があります。

    api_integration_name

    ServiceNow の API 統合(以前に作成した API 統合) の名前を指定します。

    統合の名前は、有効な オブジェクト識別子 である必要があります。

    たとえば、次の ServiceNow インスタンスへの接続を構成する場合です。

    • URL https://myinstance.service-now.com がある。

    • secretsdb.apiauth.servicenow_creds_oauth_code に格納されているシークレットを使用する。

    • servicenow_api_integration という名前の API 統合を使用する。

    次のコマンドを実行します。

     CALL CONFIGURE_CONNECTION({
        'serviceNowUrl': 'https://myinstance.service-now.com',
        'secret': 'SECRETSDB.APIAUTH.SERVICENOW_CREDS_OAUTH_CODE',
        'apiIntegrationName': 'SERVICENOW_API_INTEGRATION'
    });
    
    Copy

    接続が正常に構成された場合、このストアドプロシージャは次のメッセージを出力します。

    Connection configured successfully
    
    Copy

    注釈

    一度コネクタを構成すると、渡されたシークレットと API 統合の名前を変更することはできません。コネクタはオブジェクトを名前で参照します。そのため、オブジェクトの名前をドロップまたは変更すると、コネクタは破損し動作しなくなります。

  8. ServiceNow 用Snowflakeコネクタの開始 の説明に従ってコネクタを開始します。

新しく作成されたデータベースはコネクタのインスタンスであり、次が含まれています。

ServiceNow 用Snowflakeコネクタの開始と停止

次のセクションでは、コネクタを開始、停止、および再開する方法について説明します。

ServiceNow 用Snowflakeコネクタの開始

START_CONNECTOR という名前のプロシージャを呼び出して、コネクタを開始します。このストアドプロシージャの引数は次のとおりです。

CALL START_CONNECTOR(
  '<warehouse_name>',
  '<dest_db_schema>',
  '<name_of_journal_table>',
  '<connector_role>',
);
Copy

条件:

warehouse_name

コネクタのウェアハウスの名前を指定します。

ウェアハウスの名前は、有効な オブジェクト識別子 である必要があります。

専用ウェアハウスを使用せずにコネクタを実行するように構成するには、ウェアハウス名に空の文字列を渡します。

dest_db_schema

Snowflake内にある ServiceNow データのスキーマ(以前に作成したスキーマ) の完全修飾名を指定します。

スキーマの完全修飾名を次の形式で指定する必要があります。

<database_name>.<schema_name>
Copy

データベースとスキーマの名前は、有効な オブジェクト識別子 である必要があります。

name_of_journal_table

削除された記録に関する情報を含むテーブルの名前を指定します。詳細については、 ServiceNow インスタンスの準備 をご参照ください

削除された記録に関する情報は、削除された記録を反映するように設定したテーブルでのみ利用できることに注意してください。

削除された記録が反映されないようにするには、この引数に空の文字列を指定します。

connector_role

コネクタの 前に作成したロール のカスタムロールの名前を指定します。

ロールの名前は、有効な オブジェクト識別子 である必要があります。

たとえば、次を使用する my_connector_servicenow という名前のコネクタを開始する場合です。

  • servicenow_conn_warehouse という名前のウェアハウス

  • Snowflake内にある ServiceNow データの dest_db.dest_schema という名前のスキーマ

  • 削除された記録を追跡するための sys_audit_delete という名前の ServiceNow テーブル

  • connector_resources_provider という名前のカスタムロール

次のコマンドを実行します。

CALL START_CONNECTOR(
 'SERVICENOW_CONN_WAREHOUSE',
 'DEST_DB.DEST_SCHEMA',
 'sys_audit_delete',
 'CONNECTOR_RESOURCES_PROVIDER',
);
Copy

コネクタが正常に開始された場合、このストアドプロシージャは次のメッセージを表示します。

Successfully started the Snowflake Connector for ServiceNow. The connector can be configured now.
Copy

注釈

コネクタが開始されると、渡されたウェアハウス、宛先データベース、宛先スキーマ、コネクタのカスタムロールの名前を変更することはできません。コネクタはオブジェクトを名前で参照します。そのため、オブジェクトの名前をドロップまたは変更すると、コネクタは破損し動作しなくなります。

ウェアハウスの名前を変更する代わりに、 CONFIGURE_WAREHOUSE ストアドプロシージャを使用して、コネクタが使用するウェアハウスを変更します。

ServiceNow 用Snowflakeコネクタの停止

コネクタによって開始されたすべてのタスクを停止するには、 STOP_CONNECTOR ストアドプロシージャを呼び出します。

CALL STOP_CONNECTOR();
Copy

注釈

STOP_CONNECTOR ストアドプロシージャは、 START_CONNECTOR ストアドプロシージャを呼び出してコネクタを再開するまで使用できません。

コネクタを停止すると、 RESUME_CONNECTOR ストアドプロシージャを呼び出してコネクタが再開されるまで、コネクタとのやり取り(例: テーブルの有効化/無効化、コネクタの構成)が無効になります。

コネクタを停止すると、コネクタのコスト発生も停止します。

ServiceNow 用Snowflakeコネクタの再開

STOP_CONNECTOR ストアドプロシージャによって停止されたすべてのタスクを再開するには、 RESUME_CONNECTOR ストアドプロシージャを呼び出します。

CALL RESUME_CONNECTOR();
Copy

注釈

RESUME_CONNECTOR ストアドプロシージャは、 START_CONNECTOR ストアドプロシージャを呼び出してコネクタを再開するまで使用できません。

ServiceNow 用Snowflakeコネクタを構成およびモニターするための権限の委任

コネクタをインストールした後、 ACCOUNTADMIN ロールのみが構成プロシージャを実行し、コネクタのモニターに使用されるビューにアクセスできます。

注釈

コネクタ用カスタムロールの作成 で作成したカスタムロールには、構成プロシージャを実行したり、モニタービューにアクセスしたりする権限がありません。

これらの権限を別のロールに委任するには、 GRANT IMPORTED PRIVILEGES ON DATABASE ... TO ROLE ... コマンドを実行します。このコマンドは、次の構文を使用します。

GRANT IMPORTED PRIVILEGES ON DATABASE <connector_name> TO ROLE <connector_config_role>;
Copy

条件:

connector_name

コネクタのインスタンスとして機能するデータベースの名前 を指定します。

connector_config_role

コネクタを構成およびモニターする権限を付与するロールの名前を指定します。

注釈

これは、 connector_name データベースをドロップしたり、 Snowflake内に ServiceNow データを含むスキーマ にアクセスしたりする権限をロールに付与しません。

たとえば、 connector_config_role という名前のカスタムロールを作成し、 my_connector_servicenow という名前のコネクタインスタンスを構成およびモニターする権限をそのロールに付与するには、次のコマンドを実行します。

USE ROLE useradmin;
CREATE ROLE connector_config_role;

USE ROLE securityadmin;
GRANT IMPORTED PRIVILEGES ON DATABASE my_connector_servicenow TO ROLE connector_config_role;
Copy

コネクタが使用するウェアハウスの変更(オプション)

コネクタが使用するウェアハウスを変更するか、専用のウェアハウスを追加するには、次を呼び出します。

CALL CONFIGURE_WAREHOUSE('<warehouse_name>');
Copy

条件:

warehouse_name

コネクタが使用するウェアハウスの名前を指定します。

専用ウェアハウスを使用せずにコネクタを実行するように構成するには、ウェアハウス名に空の文字列を渡します。

注釈

別のウェアハウスを使用するようにコネクタを構成する前に、 コネクタで使用されるカスタムロール が新しいウェアハウスに対する USAGE 権限を持っていることを確認してください。