Openflow Connector for Salesforce Bulk API のトラブルシューティング

注釈

このコネクタは、 Snowflakeコネクタ規約 に従うものとします。

このトピックでは、 Openflow Connector for Salesforce Bulk API のトラブルシューティング方法について説明します。

モニタリング

SalesforceからSnowflakeに同期されるデータの量を追跡するには、イベントテーブルをクエリします。次のクエリ例は、過去30分間から関連するログを取得します。

SELECT
  timestamp,
  Deployment_ID,
  Runtime_Key,
  parsed_log:level as log_level,
  parsed_log:loggerName as logger,
  parsed_log:formattedMessage as message,
  parsed_log
FROM (
  SELECT
    timestamp,
    resource_attributes:"openflow.dataplane.id" as Deployment_ID,
    resource_attributes:"k8s.namespace.name" as Runtime_Key,
    TRY_PARSE_JSON(value) as parsed_log
  FROM OPENFLOW.TELEMETRY.EVENTS
  WHERE true
    AND timestamp > dateadd('minutes', -30, sysdate())
    AND record_type = 'LOG'
    AND resource_attributes:"k8s.namespace.name" like 'runtime-%'
  ORDER BY timestamp DESC
)
WHERE true
  AND logger = 'org.apache.nifi.processors.standard.LogMessage'
  AND message LIKE '%SALESFORCE_BULK_API%';

トラブルシューティング

コネクタの問題をトラブルシューティングするには、以下の情報を使用します。

認証およびOAuthに関するエラー

コネクタはOAuth 2.0 JWTベアラーフローを使用してSalesforceで認証します。認証エラーは通常、初期設定時に発生し、コネクタを起動する前にコントローラーサービスに対して:ref:`確認機能<salesforce-verify-connection>`を使用することによって診断できます。

``invalid_grant``エラー

``invalid_grant``エラーは、SalesforceがOAuthトークンリクエストを拒否したことを示します。一般的な原因には次のものがあります。

  • **誤ったOAuthフロータイプ。**Salesforceの外部クライアントアプリに対して:extui:Enable JWT Bearer Flow`チェックボックスがオンになっていません。コネクタはこの特定のフローを必要とします。その他のOAuthフロー(認証コードフローなど)はサポートされていません。:ref:`salesforce-create-external-client-app をご参照ください。

  • **プライベートキーと証明書の不一致。**コネクタで構成されているプライベートキー(:ui:`Connected App Key`パラメーター)が、Salesforceの外部クライアントアプリにアップロードされたパブリック証明書と一致しません。

  • 誤ったコンシューマーキー。:ui:`OAuth2 Client ID`パラメーターが、証明書がアップロードされた外部クライアントアプリの:ui:`Consumer Key`と一致しません。

  • **複数のアプリの認証情報が混在。**複数の外部クライアントアプリを作成した場合、または異なる構成を実験した場合、クライアントID、証明書、およびプライベートキーは異なるアプリに属している可能性があります。3つはすべて同じ外部クライアントアプリから取得する必要があります。

  • **廃止された接続済みアプリ。**Salesforceによって廃止された接続済みアプリは、外部クライアントアプリに取って代わられました。接続済みアプリを使用している場合について、Snowflakeは代わりに新しい外部クライアントアプリを作成することをお勧めします。

  • トークンエンドポイントURLが正しくない。OAuth2 Token Endpoint URL`パラメーターは、正しいSalesforceインスタンスをポイントしている必要があります。例: ``https://myCompany.my.salesforce.com/services/oauth2/token`

  • **オーディエンスが正しくない。**実稼働環境の場合は、:ui:`OAuth2 Audience`パラメーターを``https://login.salesforce.com``に設定する必要があります。またはサンドボックスおよびテスト環境の場合は、``https://test.salesforce.com``に設定する必要があります。

権限エラー

JWTトークンが正常に生成されたものの、ユーザーに権限が欠落している場合は、権限または認証に関するエラーが表示されます。これはJWTベアラーフローは機能しているものの、Salesforceユーザー(OAuth2サブジェクト)は外部クライアントアプリを使用することを許可されていないことを示しています。

この問題を解決するには:

  1. Salesforceで、外部クライアントアプリの:extui:`Policies`タブに移動します。

  2. :extui:`Permitted Users`が:extui:`Admin approved users are pre-authorized`に設定されていることを確認します。

  3. :extui:`App Policies`セクションで割り当てられたプロファイルまたは権限のセットに、コネクタの:ui:`OAuth2 Subject`パラメーターで指定されたユーザーが含まれていることを確認します。

詳細については、 ユーザーのクライアントアプリの承認 をご参照ください。

コネクタの状態を確認する

コネクタの状態を調べて、データが期待どおりに複製されていることを確認できます。コネクタは、現在および過去の操作の状態を維持して、Salesforceの変更が欠落しないようにし、失敗が発生した場合に一括ジョブクエリを再試行します。

状態を表示するには、以下を実行します。

  1. キャンバスを右クリックして、 Controller services を選択します。

  2. Salesforce Bulk Jobs State という名前のコントローラーサービスを見つけます。

  3. Salesforce Bulk Jobs State メニューで、 View state をクリックします。

状態は、キーがSalesforceオブジェクトタイプのキー/値のペアのセットです。たとえば、 Account オブジェクトの状態は次の例のようになります。

{"previousLast":"2025-09-30T09:41:23.484406926Z","currentLast":"2025-09-30T09:41:23.484406926Z","status":"COMPLETED"}

status は、次のいずれかになります。

  • IN_PROGRESS

  • COMPLETED

  • FAILED

  • ABORTED

ステータスが IN_PROGRESS の場合、 FlowFile はそのオブジェクトタイプに対してまだ処理中です。

注意

フローファイルは手動で削除しないでください。これにより、状態を手動で更新できないため、ジョブが IN_PROGRESS ステータスのまま無期限に残る可能性があります。

これが発生した場合は、そのオブジェクトタイプに対して完全な再ロードを実行する必要があります。

指定のオブジェクトタイプにフルロードを強制する

コネクタに1つ以上のオブジェクトタイプのフルリフレッシュを実行するように強制するには、以下を実行します。

  1. フロー内のすべてのプロセッサーを停止します。

  2. 実行中の FlowFiles が処理されていないことを確認してください。

  3. キャンバスを右クリックして、 Disable all controller services を選択します。

  4. Controller services に移動し、 Salesforce Bulk Jobs State という名前のコントローラーサービスの状態を開きます。

  5. 次のアクションのいずれかを実行します。

    • Clear state を選択して、状態全体をクリアします。これにより、コネクタによってフェッチされた すべて の構成オブジェクトタイプのフルロードが強制されます。

    • 特定のオブジェクトタイプの横にあるゴミ箱アイコンを選択すると、特定のオブジェクトタイプの状態のみをクリアします。これにより、コネクタの次の実行時に特定のオブジェクトタイプのフルロードが強制されます。

  6. キャンバスで右クリックし、 Enable all controller services を選択してから、すべてのプロセッサーを起動します。

オブジェクトタイプが IN_PROGRESS ステータスのままである場合

特定のオブジェクトタイプの状態が IN_PROGRESS のままで、そのオブジェクトタイプに実行中の FlowFiles がない場合、ステータスを更新する前に、 FlowFile が手動で削除された可能性があります。

この場合、コネクタがすべてのイベントをキャプチャするように、そのオブジェクトタイプに対してフルロードを実行する必要があります。

状態が IN_PROGRESS のままで、手動で削除された FlowFiles が存在しない場合は、 Snowflakeサポート にお問い合わせください。