注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
フォルダー間や Foundry データセットとのデータ同期を行うために、Foundry を SFTP サーバーに接続します。
機能 | ステータス |
---|---|
一括インポート | 🟢 一般提供 |
エクスポートタスク | 🟢 一般提供(従来の SFTP ソースのみ) |
探査 | 🟢 一般提供 |
インクリメンタル | 🟢 一般提供 |
コネクタは、任意のタイプのファイルを Foundry データセットに転送できます。ファイル形式は保持され、転送中や転送後にスキーマは適用されません。出力データセットに必要なスキーマを適用するか、データにアクセスするための下流変換を作成してください。
転送可能なファイルのサイズに制限はありません。ただし、ネットワークの問題により、大規模な転送が失敗することがあります。特に、2日以上かかる直接クラウド同期は中断されます。ネットワークの問題を回避するために、小さなファイルサイズを使用し、同期の各実行で取り込むファイルの数を制限することをお勧めします。同期はスケジュールで頻繁に実行できます。
直接接続を設定するには、Foundry がインターネット経由で SFTP サーバーにアクセスできる必要があります。オンプレミスの SFTP サーバーにアクセスするには、エージェント経由で接続を選択します。
Foundry でコネクタを設定する方法については、learn.palantir.com でも以下の内容をご覧いただけますが、アクセシビリティの観点から、ここに掲載しています。
SFTP サーバーへの接続は、パスワードまたは SSL 私有鍵のいずれかを使用して確立できます。サーバーへの接続時に問題が発生した場合は、Foundry の外部で SFTP クライアントを使用して接続を試みることで、認証の詳細が正しいことを確認してください。この接続のユーザーは、ルートディレクトリへのアクセス権限と、ルートディレクトリ内のすべてのファイルとディレクトリを読み取りおよびリストする権限が必要です。
オプション | 必須? | 説明 |
---|---|---|
Username | はい | SFTP ログインユーザー名。 |
Password | いいえ | SFTP ログインパスワード。 |
Private key | いいえ | RSA 形式の SSL 私有鍵。SFTP サーバーは、提供されたユーザー名の認証済みキーとして公開鍵を正しく設定する必要があります。 |
直接接続が SFTP コネクタを実行している場合は、ネットワークイグレスポリシーを追加して、接続を許可リストに登録する必要があります。
SFTP サーバーのホスト名(ドメイン経由で接続する場合)および SFTP サーバーホスト名が解決する IP のイグレスポリシーを作成してください。イグレスポリシーを正しく設定した後でも、非標準の接続ポート(22)がホスト名検証のために機能しない場合があります。これが発生した場合は、この接続に適用されたポリシーのリストを含む問題を Palantir サポートに報告してください。
サーバーのドメインが複数のドメインおよび/またはサーバーに解決される場合、関連するすべてのドメインおよび関連する IP をホワイトリストに登録する必要があります。サーバーが複数のドメインおよび/またはサーバーに解決されるかどうかを確認するには、接続しようとしているサーバーに対してコマンド dig <domain>
を実行し、回答セクションを確認します。
UNIX マシンでは、以下のコマンドを実行して、サーバードメインが解決する IP アドレスを見つけます:
Copied!1 2 3 4
# 'dig' コマンドは、指定したドメインのDNS情報を取得します。 # '<domain>' 部分を調査したいドメイン名に置き換えてください。 # '+short' オプションは、結果を短縮形式で表示します。 dig <domain> +short
エージェントがコネクターを実行している場合、エージェントのサーバーが SFTP サーバーへのネットワーク接続を確立できるようにし、ファイアウォールが適切に設定されていることを確認してください。必要に応じて、netcat または同様のユーティリティを使用してネットワーク接続を確認することをお勧めします。
SFTP サーバーは、公開鍵を使用して自分自身を識別します。このキーは、サーバーの管理者(推奨)から取得するか、対象の SFTP サーバーへのネットワークアクセスを持つ任意の Linux サーバーから以下のコマンドを実行することで取得できます。
Copied!1 2 3 4 5 6
# ssh-keyscanコマンドで、指定したホストから公開鍵を取得します。 # -t rsa オプションで、鍵のタイプをRSAに指定します。 # -p {port} オプションで、接続先のポート番号を指定します。 # {hostname}には接続先のホスト名を指定します。 # awkコマンドを用いて、取得した公開鍵の3列目(鍵の本体)を出力します。 ssh-keyscan -t rsa -p {port} {hostname} | awk '{print $3}'
このキーは、接続詳細ページのホストキーセクションで設定する必要があります。このキーを取得できない場合や、キーが頻繁に変更される場合は、任意のホストキーを受け入れるトグルを使用してキーの検証を無効にできます。ただし、キー検証を無効にすることは安全ではなく、お勧めしません。
Foundry は、すべての出力ルートに対してホスト名の検証を試みます。ポート 22 以外のネットワークトラフィックは、場合によっては検証されず、ハングした接続やタイムアウトエラーが発生することがあります。適切な出力ポリシー設定にもかかわらずエラーが続発する場合は、ホスト名検証を無効にするポリシーのリストとともに、Palantir サポートに問題を報告してください。
オプション | 必須? | デフォルト | 説明 |
---|---|---|---|
Hostname | はい | サーバーを指すドメイン名またはサーバーの IP アドレス。 | |
Port | はい | SFTP サーバーが実行されているポート。 | |
Root directory | はい | この接続を経由してすべてのリクエストの開始ディレクトリとして使用されるサーバー上のディレクトリ。 | |
Username | はい | SFTP ログインユーザー名。 | |
Password | いいえ | SFTP ログインパスワード。 | |
Private key | いいえ | RSA 形式の SSL 私有鍵。SFTP サーバーは、提供されたユーザー名に対して正しく構成された公開鍵を認証鍵として持っている必要があります。 | |
Host key | はい | 上記の サーバー SSH キー を参照してください。 | |
Accept any host key | いいえ | false | 上記の サーバー SSH キー を参照してください。 |
Proxy | いいえ | Direct | SFTP へのプロキシ接続を許可するには、有効にします。 |
Timeout | いいえ | 0 | 下記の タイムアウト に関する情報を参照してください。 |
Maximum concurrent connections | いいえ | ランタイム(エージェントまたは直接接続)でサポートされる最大並行アップロード数 | 通常、この値が高いほど転送速度が速くなります。この値をランタイムがサポートする最大並行アップロード数よりも高く設定しても効果はありません。SFTP サーバーがサーバーへの同時接続数を制限して負荷を管理できる場合に、この設定を使用してください。 |
接続設定 | いいえ | 下記の 接続設定 セクションで、詳細情報を参照してください。 | |
Logs | いいえ | Info | 記録されるログのレベル。あるレベルを選択すると、そのレベルまたはそれ以上のログが記録されます。例えば、Error のレベルでは、Error と Fatal のレベルのログが記録されます。詳細については、下記の ログ セクションを参照してください。 |
値が 0 の場合、接続はサーバーからのすべての応答を無期限に待ちます。このタイムアウトは、サーバーとの接続を確立する際のコネクタの待ち時間と、サーバーで実行されるすべてのコマンドの待ち時間を制御します。サーバーが応答し続ける限り、タイムアウトは発生しません。この値を低く設定しても、大きなファイルの転送が防止されることはありませんが、ハングアップした接続のデバッグに役立ちます。
SFTP 接続を確立する際、サーバーとクライアント(Foundry)は必要な詳細を交渉する必要があります。これらの詳細には、クライアントとサーバーが使用する暗号アルゴリズムを決定するための情報が含まれます。互換性の問題のため、これらの設定を自動的に交渉させるのではなく、手動で設定する必要がある場合があります。以下の表に、必要に応じて交渉を調整するために使用できる設定オプションが記載されています。詳細については、FAQ を確認してください。
設定 | 説明 |
---|---|
Key exchange algorithms | キー交換に使用できるアルゴリズムの明示的なリスト。少なくとも 1 つのアルゴリズムを選択する必要があります。 |
Ciphers | 暗号化に使用できる暗号のリスト。 |
Message Authentication Code (MAC) | MAC タイプのリスト。 |
Host key types | この接続で使用できるホストキーのタイプ。 |
Public key types | 公開鍵認証に使用されるアルゴリズム。 |
SFTP コネクタは、ファイルベースの同期インターフェースを使用します。
接続が進行せず、明らかな失敗もない場合は、タイムアウトを小さな値に設定します(たとえば、1000
)。これにより、どの呼び出しがハングアップしているかを特定するのに役立ちます。たとえば、特定のディレクトリのリストを取得するのに時間がかかっているか、ファイルの一部が読み取りに時間がかかっている可能性があります。
ハングアップした接続は、ホスト名の検証 によって発生することがあり、タイムアウトを小さく設定することで、接続の問題の根本原因を特定するのに役立つ失敗ログが生成されるようになります。
エージェント接続の設定で問題がある場合は、SFTP クライアントを使用し、ソースと同じ設定でサーバーに接続してみてください。この接続が失敗した場合、問題はコネクタのバグではありません。問題を報告する前に、ネットワーク接続性、認証、および SFTP サーバーの設定を調査してください。
エグレスプロキシロードバランサを使用している場合は、FTP がステートフルなプロトコルであることに注意してください。ロードバランサを使用すると、シーケンシャルなリクエストが同じ IP から発信されない場合、同期が失敗することがあります(非決定的に)。
コネクタは、Foundry データセットからファイルをコピーし、SFTP サーバー上の任意の場所に配置できます。
エクスポートは、現在、レガシー SFTP コネクタでのみサポートされています。古いコネクタの設定方法については、認定およびプライベートキー のドキュメントを参照してください。また、エージェントベースのソースからデータをエクスポートする場合は、まずエージェントに magritte-export-task-source
というエクスポートタスクプラグインをインストールする必要があります。必要に応じて Palantir サポートに連絡してコピーを入手してください。
データをエクスポートするには、エクスポートタスクを設定する必要があります。エクスポートしたいコネクターが含まれているプロジェクトフォルダーに移動します。コネクター名を右クリックして、データ接続タスクを作成 を選択します。
データ接続ビューの左パネルで:
Source
名が使用するコネクターと一致することを確認します。Input
という名前の inputDataset
を追加します。入力データセット は、エクスポートされる Foundry データセットです。Output
という名前の outputDataset
を追加します。出力データセット は、タスクの実行、スケジュール、および監視に使用されます。左側のパネルに表示されるコネクタと入力データセットのラベルは、YAML で定義された名前を反映していません。
エクスポートタスクの YAML を作成する際に、以下のオプションを使用してください:
オプション | 必須? | 説明 |
---|---|---|
directoryPath | はい | ファイルが書き込まれるディレクトリ。パスは / で終わる必要があります。 |
excludePaths | いいえ | 正規表現のリストで、これらの表現に一致する名前のファイルはエクスポートされません。 |
rewritePaths | いいえ | 下記の セクション を参照してください。 |
uploadConfirmation | いいえ | 値が exportedFiles の場合、出力データセットにはエクスポートされたファイルのリストが含まれます。 |
createTransactionFolders | いいえ | 有効にすると、データは指定された directoryPath 内のサブフォルダに書き込まれます。すべてのサブフォルダは、Foundry でコミットされたトランザクションの時刻に基づいて、Foundry のすべてのエクスポートされたトランザクションに対して一意の名前を持ちます。 |
incrementalType | いいえ | データセットがインクリメンタルに構築される場合、以前のエクスポート以降に発生したトランザクションのみをエクスポートするように incremental に設定します。 |
flagFile | いいえ | 下記の フラグファイルセクション を参照してください。 |
spanMultipleViews | いいえ | true の場合、Foundry の複数のトランザクションが一度にエクスポートされます。false の場合、1 回のビルドで 1 つのトランザクションのみがエクスポートされます。インクリメンタルが有効になっている場合、最も古いトランザクションのファイルが最初にエクスポートされます。 |
rewritePaths
最初のキーがファイル名と一致する場合、キーのキャプチャグループが値に置き換えられます。値自体は、ファイル名にメタデータを追加するための追加セクションを持つことができます。
値に次の要素が含まれている場合:
${dt:javaDateExpression}
:この値の部分は、ファイルがエクスポートされたときのタイムスタンプに置き換えられます。javaDateExpression
は、DateTimeFormatter パターンに従います。${transaction}
:この値の部分は、このファイルを含むトランザクションの Foundry トランザクション ID に置き換えられます。${dataset}
:この値の部分は、このファイルを含むデータセットの Foundry データセット ID に置き換えられます。例:
Foundry データセット内の "spark/file_name" というファイルを考えてみましょう。トランザクション ID が transaction_id
で、データセット ID が dataset_id
の場合、キーとして fi.*ame
を使用し、値として file_${dt:DD-MM-YYYY}-${transaction}-${dataset}_end
を使用すると、SFTP に書き込まれるときに、spark/file_79-03-2023-transaction_id-dataset_id_end
として保存されます。
コネクタは、特定のビルドのすべてのデータがコピーされた後、SFTP サーバーに空のフラグファイルを書き込むことができます。空のファイルは、コンテンツが消費の準備ができ、これ以上変更されないことを示します。フラグファイルは directoryPath
に書き込まれます。ただし、createTransactionFolders
が有効になっている場合、書き込まれたコンテンツのすべてのフォルダに対してフラグファイルが作成されます。フラグファイルが有効になっており、フラグファイルが confirmation.txt
と呼ばれる場合、ビルドでエクスポートされたファイルが書き込まれた後、すべてのフラグファイルが一度に書き込まれます。
フラグファイルは、ビルドの終了時に書き込まれます。サブフォルダがエクスポートされたときではありません。
SFTP サーバー内のファイルがフラグファイルよりも新しい場合、通常、前回のエクスポートが成功していないか、そのフォルダのエクスポートが進行中であることを示します。
シンプルなエクスポート設定の例は次のとおりです。
Copied!1 2 3 4
type: export-sftp-task directoryPath: export-directory/subdirectory # タイプ: export-sftp-task(SFTPタスクをエクスポート) # ディレクトリパス: export-directory/subdirectory(エクスポートディレクトリ/サブディレクトリ)
エクスポートタスクの設定が完了したら、右上の Save を選択します。
directoryPath
で指定されたディレクトリは、SFTP サーバーにすでに存在している必要があります。
directoryPath
で指定されたディレクトリは、ルートディレクトリに対する相対パスです。例えば、rootDirectory: /home/palantir/sftp
で接続が設定されていて、directoryPath
が export-directory
の場合、ファイルは /home/palantir/sftp/export-directory/
にエクスポートされます。
レガシー SFTP コネクターの設定を行うには、Data Connection アプリケーションに移動し、+ New source を選択し、右上から Add Custom Source を選択します。ウィザードの手順に従ってください。
YAML 設定の完全な例は以下のようになります。必須およびオプションの設定に関する詳細は、上記の 設定オプション セクションを参照してください。
レガシー SFTP ソースの type
は magritte-sftp
である必要があることに注意してください。
type: magritte-sftp
hostname: my.host.name
port: 22
username: username
password: '{{pasword}}'
rootDirectory: /home/palantir/sftp
base64Hostkey: >-
FULL CONTENTS OF THE HOST KEY
unsafeAcceptAllHostKeys: false
privateKeyFile: location/of/private/key/file
privateKeyPassphrase: '{{passphrase}}'
# プロキシ設定
proxyConfiguration:
host: hostname.of.proxy
port: port.of.proxy
type: HTTP (can be HTTP/HTTPS/SOCKS)
# 資格情報
credentials:
username: proxyUsername
password: `{{proxyPassword}}`
timeout: 0 # タイムアウト(0は無制限)
maxConcurrentConnections: 10 # 最大同時接続数
sessionParams:
customKex:
- "ecdh-sha2-nistp256"
- "ecdh-sha2-nistp384"
knownHostsFile: /path/to/known_hosts_file # 既知のホストファイルへのパス
旧コネクタから新コネクタへの自動移行は利用できません。新コネクタはほぼ同一の設定オプションをサポートしており、古いソースを置き換えるために新しいソースを作成すべきです。
以下の点に注意してください:
privateKeyFile
と privateKeyPassphrase
はもはやサポートされておらず、プライベートキー認証を使用する場合は、プライベートキーの内容をソース設定に直接入力する必要があります。knownHostsFile
はもはやサポートされておらず、base64HostKey
はソース設定で正しく設定されていなければなりません。データ接続で Logs タブを選択し、探索とビルドからのログを表示します。これらのログは、接続問題のデバッグに役立ちます。詳細を表示するには jschLogMessage
を検索します。
以下のログ詳細は、成功したログイン試行を示しています:
jschLogMessage: Connecting to <HOSTNAME> port 2232
jschLogMessage: Connection established
jschLogMessage: Remote version string: SSH-2.0-OpenSSH_8.4p1 Debian-5+deb11u1
jschLogMessage: Local version string: SSH-2.0-JSCH_0.2.12
jschLogMessage: CheckCiphers: chacha20-poly1305@openssh.com
jschLogMessage: CheckKexes: curve25519-sha256,curve25519-sha256@libssh.org,curve448-sha512
jschLogMessage: CheckSignatures: ssh-ed25519,ssh-ed448
jschLogMessage: server_host_key proposal before known_host reordering is: ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,rsa-sha2-512,rsa-sha2-256,ssh-dss,ssh-rsa
jschLogMessage: server_host_key proposal after known_host reordering is: ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-dss
jschLogMessage: SSH_MSG_KEXINIT sent
jschLogMessage: SSH_MSG_KEXINIT received
jschLogMessage: server proposal: KEX algorithms: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256
jschLogMessage: server proposal: host key algorithms: ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
jschLogMessage: server proposal: ciphers c2s: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
jschLogMessage: server proposal: ciphers s2c: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
jschLogMessage: server proposal: MACs c2s: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
jschLogMessage: server proposal: MACs s2c: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
jschLogMessage: server proposal: compression c2s: none,zlib@openssh.com
jschLogMessage: server proposal: compression s2c: none,zlib@openssh.com
jschLogMessage: server proposal: languages c2s:
jschLogMessage: server proposal: languages s2c:
jschLogMessage: client proposal: KEX algorithms: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1,ext-info-c
jschLogMessage: client proposal: host key algorithms: ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-dss
jschLogMessage: client proposal: ciphers c2s: aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc,aes192-cbc,aes256-cbc
jschLogMessage: client proposal: ciphers s2c: aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc,aes192-cbc,aes256-cbc
jschLogMessage: client proposal: MACs c2s: hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96
jschLogMessage: client proposal: MACs s2c: hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96
jschLogMessage: client proposal: compression c2s: none
jschLogMessage: client proposal: compression s2c: none
jschLogMessage: client proposal: languages c2s:
jschLogMessage: client proposal: languages s2c:
jschLogMessage: kex: algorithm: curve25519-sha256
jschLogMessage: kex: host key algorithm: ssh-ed25519
jschLogMessage: kex: server->client cipher: aes128-ctr MAC: hmac-sha2-256-etm@openssh.com compression: none
jschLogMessage: kex: client->server cipher: aes128-ctr MAC: hmac-sha2-256-etm@openssh.com compression: none
jschLogMessage: SSH_MSG_KEX_ECDH_INIT sent
jschLogMessage: expecting SSH_MSG_KEX_ECDH_REPLY
jschLogMessage: ssh_eddsa_verify: ssh-ed25519 signature true
jschLogMessage: Host '[<HOSTNAME>]:2232' is known and matches the EDDSA host key
jschLogMessage: SSH_MSG_NEWKEYS sent
jschLogMessage: SSH_MSG_NEWKEYS received
jschLogMessage: SSH_MSG_SERVICE_REQUEST sent
jschLogMessage: SSH_MSG_EXT_INFO received
jschLogMessage: server-sig-algs=<ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com,webauthn-sk-ecdsa-sha2-nistp256@openssh.com>
jschLogMessage: SSH_MSG_SERVICE_ACCEPT received
jschLogMessage: Authentications that can continue: publickey,keyboard-interactive,password
jschLogMessage: Next authentication method: publickey
jschLogMessage: PubkeyAcceptedAlgorithms = ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,rsa-sha2-512,rsa-sha2-256,ssh-rsa
jschLogMessage: PubkeyAcceptedAlgorithms in server-sig-algs = [ssh-ed25519, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, ecdsa-sha2-nistp521, rsa-sha2-512, rsa-sha2-256, ssh-rsa]
jschLogMessage: rsa-sha2-512 preauth success // rsa-sha2-512 事前認証成功
jschLogMessage: rsa-sha2-512 auth success // rsa-sha2-512 認証成功
jschLogMessage: Authentication succeeded (publickey). // 認証成功 (公開鍵)。
上記の例では、サーバーは ssh-ed25519
、rsa-sha2-512
、rsa-sha2-256
、および ssh-rsa
のホストキーのアルゴリズムをサポートしています。ssh-ed25519
を使用して接続の問題が発生した場合、ホストキーのアルゴリズム設定 を代わりに rsa-sha2-512
に設定することができます。