Azure Data Factory と Azure Synapse の FTP、SFTP、および HTTP コネクタのトラブルシューティング
適用対象: Azure Data Factory Azure Synapse Analytics
ヒント
企業向けのオールインワン分析ソリューション、Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法について説明します。
この記事では、Azure Data Factory と Azure Synapse の FTP、SFTP、および HTTP コネクタの一般的な問題のトラブルシューティングのための提案を示します。
FTP
エラー コード:FtpFailedToConnectToFtpServer
メッセージ:
Failed to connect to FTP server. Please make sure the provided server information is correct, and try again.
原因:FTP サーバーに対し、FTP サーバーへの接続に Secure FTP (SFTP) リンク サービスを使用するなど、リンク サービス タイプとして正しくないものが使用されている可能性があります。
推奨事項: ターゲット サーバーのポートを確認します。 FTP はポート 21 を使用します。
エラー コード: FtpFailedToReadFtpData
メッセージ:
Failed to read data from ftp: The remote server returned an error: 227 Entering Passive Mode (*,*,*,*,*,*).
原因: データ ファクトリまたは Synapse のパイプラインでサポートされているパッシブ モードでのデータ転送用に 1024 から 65535 のポート範囲が開かれていません。
推奨事項: ターゲット サーバーのファイアウォール設定を確認します。 ポート 1024 から 65535 または FTP サーバーで指定されたポート範囲を、SHIR または Azure IR の IP アドレスに対して開きます。
SFTP
エラー コード:SftpOperationFail
メッセージ:
Failed to '%operation;'. Check detailed error from SFTP.
原因:SFTP 操作に問題があります。
推奨事項: SFTP からエラーの詳細を確認します。
エラー コード:SftpRenameOperationFail
メッセージ:
Failed to rename the temp file. Your SFTP server doesn't support renaming temp file, set "useTempFileRename" as false in copy sink to disable uploading to temp file.
原因:SFTP サーバーでは、一時ファイルの名前変更はサポートされません。
推奨事項: コピー シンクで "useTempFileRename" を false に設定して、一時ファイルへのアップロードを無効にします。
エラー コード:SftpInvalidSftpCredential
メッセージ:
Invalid SFTP credential provided for '%type;' authentication type.
原因:秘密キーのコンテンツは Azure Key Vault または SDK からフェッチされますが、正しくエンコードされていません。
推奨事項:
秘密キーのコンテンツが Key Vault からのものである場合、SFTP リンク サービスに直接アップロードすると、元のキー ファイルが機能する可能性があります。
詳細については、データ ファクトリまたは Synapse パイプラインを使用した SFTP サーバーとの間でのデータのコピーに関する記事を参照してください。 秘密キーのコンテンツは、Base64 でエンコードされた SSH 秘密キーのコンテンツです。
Base64 エンコードを使用して元の秘密キー ファイル "全体" をエンコードし、エンコードされた文字列を Key Vault に格納します。 ファイルから [アップロード] を選択した場合、元の秘密キー ファイルが、SFTP リンク サービスで使用できるキー ファイルです。
次に、文字列の生成に使用できるサンプルをいくつか示します。
C# コードを使用した場合:
byte[] keyContentBytes = File.ReadAllBytes(Private Key Path); string keyContent = Convert.ToBase64String(keyContentBytes, Base64FormattingOptions.None);
Python コードを使用した場合:
import base64 rfd = open(r'{Private Key Path}', 'rb') keyContent = rfd.read() rfd.close() print base64.b64encode(Key Content)
サードパーティの Base64 変換ツールを使用します。 Encode to Base64 format ツールをお勧めします。
原因:間違ったキー コンテンツ形式が選択されました。
推奨事項:
現在、PKCS#8 形式の SSH 秘密キー (先頭が "-----BEGIN ENCRYPTED PRIVATE KEY-----") は、SFTP サーバーへのアクセスではサポートされていません。
キーを "-----BEGIN RSA PRIVATE KEY-----" から始まる従来の SSH キー形式に変換するには、次のコマンドを実行します。
openssl pkcs8 -in pkcs8_format_key_file -out traditional_format_key_file chmod 600 traditional_format_key_file ssh-keygen -f traditional_format_key_file -p
原因:資格情報または秘密キーのコンテンツが無効です。
推奨事項: キー ファイルまたはパスワードが正しいかどうかを確認するには、WinSCP などのツールを使用して再確認します。
SFTP Copy アクティビティが失敗しました
現象:
- エラー コード:UserErrorInvalidColumnMappingColumnNotFound
- エラー メッセージ:
Column 'AccMngr' specified in column mapping cannot be found in source data.
原因:ソースには、"AccMngr" という名前の列が含まれていません。
解決方法:"AccMngr" 列が存在するかどうかを判断するには、コピー先のデータセット列をマップして、データセットの構成を再確認します。
エラー コード:SftpFailedToConnectToSftpServer
メッセージ:
Failed to connect to SFTP server '%server;'.
原因:エラー メッセージに "ソケット読み取り操作が 3 万ミリ秒後にタイムアウトしました" という文字列が含まれている場合、原因の 1 つとして、SFTP サーバーに無効なリンクされたサービス タイプが使用されていることが考えられます。 たとえば、SFTP サーバーへの接続に、FTP リンク サービスを使用している可能性があります。
推奨事項: ターゲット サーバーのポートを確認します。 既定では、SFTP はポート 22 を使用します。
原因:エラー メッセージに "Server response does not contain SSH protocol identification" (サーバーの応答に SSH プロトコルの ID が含まれていません) という文字列が含まれている場合、原因の 1 つとして、SFTP サーバーによって接続が調整されたことが考えられます。 SFTP サーバーから並列でダウンロードするために複数の接続が作成されるため、SFTP サーバーの帯域幅調整が行われる場合があります。 通常、調整が発生すると、サーバーごとに異なるエラーが返されます。
推奨事項:
SFTP データセットのコンカレント接続の最大数を 1 として指定し、Copy アクティビティを再実行します。 アクティビティが成功した場合は、調整が原因であることを確認できます。
低スループットを昇格する場合は、SFTP 管理者に問い合わせて、コンカレント接続数の上限を引き上げるか、次のいずれかを実行できます。
- セルフホステッド IR を使用している場合は、セルフホステッド IR マシンの IP を許可リストに追加します。
- Azure IR を使用している場合は、Azure Integration Runtime IP アドレスを追加します。 SFTP サーバーの許可リストに IP の範囲を追加しない場合は、代わりにセルフホステッド IR を使用してください。
エラー コード: SftpPermissionDenied
メッセージ:
Permission denied to access '%path;'
原因: 指定されたユーザーには、操作するときにフォルダーまたはファイルに対する読み取りまたは書き込みのアクセス許可がありません。
推奨事項: SFTP サーバー上のフォルダーまたはファイルに対する読み取りまたは書き込みのアクセス許可をユーザーに付与します。
エラー コード: SftpAuthenticationFailure
メッセージ:
Meet authentication failure when connect to Sftp server '%server;' using '%type;' authentication type. Please make sure you are using the correct authentication type and the credential is valid. For more details, see our troubleshooting docs.
原因: 指定された資格情報 (パスワードまたは秘密キー) が無効です。
推奨事項: 資格情報を確認してください。
原因: 指定された認証の種類は、SFTP サーバーで認証を完了するために許可されていないか、十分ではありません。
推奨事項: 正しい認証の種類を使用するために、次のオプションを適用します。
- サーバーでパスワードが必要な場合は、"Basic" を使用します。
- サーバーで秘密キーが必要な場合は、"SSH 公開キー認証" を使用します。
- サーバーで "パスワード" と "秘密キー" の両方が必要な場合は、"多要素認証" を使用します。
原因: SFTP サーバーで認証に "keyboard-interactive" が必要ですが、"password" が指定されています。
推奨事項:
"keyboard-interactive" は特殊な認証方法であり、"password" とは異なります。 つまり、サーバーにログインするときに、パスワードを手動で入力する必要があり、以前に保存したパスワードを使用することはできません。 ただし Azure Data Factory (ADF) はスケジュールされたデータ転送サービスであり、実行時にパスワードを入力するためのポップアップ入力ボックスはありません。
妥協策として、実際の手動入力の代わりにバックグラウンドで入力をシミュレートするオプションが用意されており、これは "keyboard-interactive" を "password" に変更することと同じです。 このセキュリティ上の懸念を受け入れることができる場合は、次の手順に従って有効にします。
- ADF ポータルで、SFTP リンク サービスにマウス ポインターを移動し、コード ボタンを選択してそのペイロードを開きます。
- "typeProperties" セクションに
"allowKeyboardInteractiveAuth": true
を追加します。
SFTP によって提供されるキー交換アルゴリズムが ADF でサポートされていないため、SFTP に接続できません
現象: ADF 経由で SFTP に接続できず、次のエラーメッセージが表示されます。
Failed to negotiate key exchange algorithm.
原因: SFTP サーバーによって提供されるキー交換アルゴリズムは、ADF ではサポートされていません。 ADF でサポートされているキー交換アルゴリズムは次のとおりです。
- curve25519-sha256
- curve25519-sha256@libssh.org
- ecdh-sha2-nistp256
- ecdh-sha2-nistp384
- ecdh-sha2-nistp521
- diffie-hellman-group-exchange-sha256
- diffie-hellman-group-exchange-sha1
- diffie-hellman-group16-sha512
- diffie-hellman-group14-sha256
- diffie-hellman-group14-sha1
- diffie-hellman-group14-sha1
SHIR で上記のキー交換アルゴリズムをサポートする最新バージョンは、バージョン 5.19 です。
エラー コード: SftpInvalidHostKeyFingerprint
メッセージ:
Host key finger-print validation failed. Expected fingerprint is '<value in linked service>', real finger-print is '<server real value>'
原因: SFTP コネクタでより安全なホスト キー アルゴリズムが Azure Data Factory でサポートされるようになりました。 新しく追加されたアルゴリズムについては、SFTP サーバーで対応するフィンガープリントを取得する必要があります。
新しくサポートされるアルゴリズムは、次のとおりです。
- ssh-ed25519
- ecdsa-sha2-nistp256
- ecdsa-sha2-nistp384
- ecdsa-sha2-nistp521
推奨事項: SFTP サーバーのエラー メッセージから
real finger-print
のホスト キー名を使用して、有効なフィンガープリントを取得します。 コマンドを実行して、お使いの SFTP サーバーでフィンガープリントを取得できます。 例: Linux サーバーでssh-keygen -E md5 -lf <keyFilePath>
を実行してフィンガープリントを取得します。 このコマンドは、サーバーの種類によって異なる場合があります。
エラー コード: UnsupportedCompressionTypeWhenDisableChunking
メッセージ:
"Disable chunking" is not compatible with "ZipDeflate" decompression.
原因: チャンキングの無効化は、ZipDeflate の圧縮解除と同時に利用できません。
推奨事項: バイナリ データをステージング領域 (Azure Blob Storage など) に読み込み、これらを別のコピー アクティビティで圧縮解除します。
HTTP
エラー コード:HttpFileFailedToRead
メッセージ:
Failed to read data from http server. Check the error from http server:%message;
原因: このエラーは、データ ファクトリまたは Synapse のパイプラインが HTTP サーバーと通信しているが、HTTP 要求操作が失敗した場合に発生します。
推奨事項: エラー メッセージの HTTP ステータス コードを確認し、リモート サーバーの問題を修正します。
エラー コード: HttpSourceUnsupportedStatusCode
メッセージ:
Http source doesn't support HTTP Status Code '%code;'.
原因: このエラーは、Azure Data Factory が HTTP ソースを要求したが、予期しない状態コードを取得したときに発生します。
推奨事項: HTTP 状態コードの詳細については、このドキュメントを参照してください。
関連するコンテンツ
トラブルシューティングのその他のヘルプについては、次のリソースを参照してください。