Azure Data Factory と Azure Synapse の Azure Data Lake Storage コネクタのトラブルシューティング

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

企業向けのオールインワン分析ソリューション、Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法について説明します。

この記事では、Azure Data Factory と Azure Synapse の Azure Data Lake Storage Gen1 および Gen2 コネクタの一般的な問題のトラブルシューティングのための提案を示します。

Azure Data Lake Storage Gen1

エラー メッセージ:基になる接続が閉じられました。SSL/TLS のセキュリティで保護されているチャネルに対する信頼関係を確立できませんでした。

  • 現象:コピー アクティビティが次のエラーにより失敗します。

    Message: ErrorCode = UserErrorFailedFileOperation, Error Message = The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

  • 原因:TLS ハンドシェイク中に証明書の検証に失敗しました。

  • 解決方法:回避策として、ステージング コピーを使用して、Azure Data Lake Storage Gen1 のトランスポート層セキュリティ (TLS) 検証をスキップします。 この問題を再現し、ネットワーク モニター (netmon) トレースを収集してから、ネットワーク チームに連絡し、ローカル ネットワーク構成を確認する必要があります。

    問題をトラブルシューティングするための Azure Data Lake Storage Gen1 接続の図。

エラー メッセージ:リモート サーバーがエラー(403) 禁止されています

  • 現象: コピー アクティビティが次のエラーにより失敗します。

    Message: The remote server returned an error: (403) Forbidden. Response details: {"RemoteException":{"exception":"AccessControlException""message":"CREATE failed with error 0x83090aa2 (Forbidden. ACL verification failed. Either the resource does not exist or the user is not authorized to perform the requested operation.)....

  • 原因:原因の 1 つとして、使用するサービス プリンシパルまたはマネージド ID に、特定のフォルダーまたはファイルにアクセスするためのアクセス許可が付与されていないことが考えられます。

  • 解決方法:コピーする必要があるすべてのフォルダーとサブフォルダーに適切なアクセス許可を付与します。 詳しくは、「Azure Data Lake Storage Gen1 との間でデータをコピーする」をご覧ください。

エラー メッセージ: サービス プリンシパルを使用してアクセス トークンを取得できませんでした。 ADAL エラー: service_unavailable

  • 現象:コピー アクティビティが次のエラーにより失敗します。

    Failed to get access token by using service principal. ADAL Error: service_unavailable, The remote server returned an error: (503) Server Unavailable.

  • 原因: Microsoft Entra ID によって所有されるサービス トークン サーバー (STS) が使用できない場合、要求の処理がビジー状態であるため、HTTP エラー 503 が返されます。

  • 解決方法: 数分後にコピー アクティビティを再実行します。

Azure Data Lake Storage Gen2

エラー コード:ADLSGen2OperationFailed

  • メッセージ: ADLS Gen2 operation failed for: %adlsGen2Message;.%exceptionData;.

  • 原因と推奨事項: このエラーはさまざまな原因により発生する可能性があります。 考えられる原因の分析および関連する推奨事項については、以下の一覧を確認してください。

    原因分析 推奨
    何らかの操作に失敗したことを示すエラーが Azure Data Lake Storage Gen2 によってスローされた場合。 Azure Data Lake Storage Gen2 によってスローされたエラー メッセージの詳細を確認します。 エラーが一時的なエラーである場合は、操作を再試行してください。 さらに支援が必要な場合は、Azure Storage サポートにお問い合わせください。その際、エラー メッセージに含まれる要求 ID をお知らせください。
    エラー メッセージに "許可されていません" という文字列が含まれている場合は、使用するサービス プリンシパルまたはマネージド ID に、Azure Data Lake Storage Gen2 にアクセスするための十分なアクセス許可がない可能性があります。 このエラーのトラブルシューティングを行うには、「Azure Data Lake Storage Gen2 でのデータのコピーと変換」を参照してください。
    エラー メッセージに "InternalServerError" という文字列が含まれている場合は、Azure Data Lake Storage Gen2 によってエラーが返されます。 このエラーは、一時的なエラーが原因で発生している可能性があります。 その場合は、操作を再試行します。 問題が解決しない場合は、Azure Storage サポートにお問い合わせください。その際、エラー メッセージに含まれる要求 ID をお知らせください。
    エラー メッセージが Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host である場合は、統合ランタイムでの Azure Data Lake Storage Gen2 への接続にネットワークの問題があります。 Azure Data Lake Storage Gen2 のファイアウォール規則の設定で、Azure Data Factory の IP アドレスが許可リストに含まれていることを確認します。 詳細については、Azure Storage ファイアウォールおよび仮想ネットワークの構成に関する記事を参照してください。
    エラー メッセージが This endpoint does not support BlobStorageEvents or SoftDelete である場合は、Azure Data Lake Storage Gen2 リンクされたサービスを使用して、BLOB ストレージ イベントまたは論理的な削除を有効にする Azure Blob Storage アカウントに接続しています。 次の方法を試してください。
    1. Azure Data Lake Storage Gen2 にリンクされたサービスを引き続き使用する場合は、Azure Blob Storage を Azure Data Lake Storage Gen2 にアップグレードします。 詳細については、「Azure Data Lake Storage Gen2 の機能で Azure Blob Storage をアップグレードする」を参照してください。
    2. リンクされたサービスを Azure Blob Storage に切り替えます。
    3. Azure Blob Storage アカウントで BLOB ストレージ イベントまたは論理的な削除を無効にします。

Azure Data Lake Storage Gen2 アカウントへの要求によりタイムアウト エラーが発生する

  • Message:

    • エラー コード = UserErrorFailedBlobFSOperation
    • エラー メッセージ = BlobFS operation failed for: A task was canceled.
  • 原因:この問題は、通常はセルフホステッド統合ランタイム (IR) コンピューターで発生する Azure Data Lake Storage Gen2 シンク タイムアウト エラーが原因で発生します。

  • 推奨事項:

    • 可能であれば、セルフホステッド IR マシンとターゲット Azure Data Lake Storage Gen2 アカウントを同じリージョンに配置します。 これにより、ランダム タイムアウト エラーを回避し、パフォーマンスを向上させることができます。

    • ExpressRoute などの特別なネットワーク設定があるかどうかを調べ、ネットワークに十分な帯域幅があることを確認します。 全体的な帯域幅が少ない場合は、セルフホステッド IR 同時実行ジョブの設定を小さくすることをお勧めします。 これにより、複数の同時実行ジョブにわたるネットワーク リソースの競合を回避できます。

    • ファイル サイズが中くらいまたは小さい場合に、このようなタイムアウト エラーを軽減するには、バイナリ以外のコピーにはさらに小さいブロック サイズを使用します。 詳細については、「Blob Storage Put Block」をご覧ください。

      カスタム ブロック サイズを指定するには、次に示すように、JSON ファイル エディターでプロパティを編集します。

      "sink": {
          "type": "DelimitedTextSink",
          "storeSettings": {
              "type": "AzureBlobFSWriteSettings",
              "blockSizeInMB": 8
          }
      }
      

コピー操作で Azure Data Lake Storage Gen2 からファイルを選択できません。

  • 現象: ファイル名が "Asset_Metadata" のとき、コピー操作で Azure Data Lake Storage Gen2 からファイルを選択できません。 この問題は Parquet タイプのデータセットでのみ発生します。 他のタイプのデータセットの場合、同じファイル名でも正しく動作します。

  • 原因: 下位互換性のために、_metadata はファイル名で予約されている substring として扱われます。

  • 推奨: 以下の Parquet の予約一覧を避けるため、ファイル名を変更します。

    1. ファイル名に _metadata が含まれています。
    2. ファイル名は . (ドット) で始まります。

エラー コード: ADLSGen2ForbiddenError

  • メッセージ: ADLS Gen2 failed for forbidden: Storage operation % on % get failed with 'Operation returned an invalid status code 'Forbidden'.

  • 原因:原因として、次の 2 つが考えられます。

    1. 統合ランタイムは、Azure ストレージ アカウントのファイアウォール設定のネットワーク アクセスによってブロックされます。
    2. サービス プリンシパルまたはマネージド ID には、データにアクセスするための十分なアクセス許可がありません。
  • 推奨事項:

    1. Azure ストレージ アカウントのネットワーク設定を確認して、パブリック ネットワーク アクセスが無効になっているかどうかを確認します。 無効になっている場合は、マネージド仮想ネットワーク統合ランタイムを使用し、アクセスするプライベート エンドポイントを作成します。 詳細については、「 マネージド仮想ネットワーク 」および「 マネージド VNet とプライベート エンドポイントを使用してコピー パイプラインを構築する」をご覧ください。

    2. Azure ストレージ アカウントのネットワーク設定で選択した仮想ネットワークと IP アドレスを有効にしている場合:

      1. これは、統合ランタイムの一部の IP アドレス範囲が、ストレージ アカウントのファイアウォール設定で許可されていないために発生する可能性があります。 Azure 統合ランタイムの IP アドレスまたはセルフホステッド統合ランタイム IP アドレスを、ストレージ アカウント ファイアウォールに追加します。 Azure 統合ランタイムの IP アドレスについては、「 Azure Integration Runtime の IP アドレス」を、ストレージ アカウント ファイアウォールに IP 範囲を追加する方法については、「 IP ネットワーク規則の管理」をご覧ください。

      2. 信頼された Azure サービスがファイアウォールでこのストレージ アカウントにアクセスできるようにする場合は、コピー アクティビティで マネージド ID 認証 を使用する必要があります。

      Azure ストレージ アカウントのファイアウォール設定の詳細については、「 Azure Storage ファイアウォールおよび仮想ネットワークを構成する」をご覧ください。

    3. サービス プリンシパルまたはマネージド ID 認証を使用する場合は、コピーを実行するための適切なアクセス許可をサービス プリンシパルまたはマネージド ID に付与します。 ソースの場合、少なくとも ストレージ BLOB データ閲覧者 ロールが必要です。 シンクの場合、少なくとも ストレージ BLOB データ共同作成者 ロールが必要です。 詳細については、「 Azure Data Lake Storage Gen2 でのデータのコピーと変換」をご覧ください。

トラブルシューティングのその他のヘルプについては、次のリソースを参照してください。