SFTPをデータパイプラインソースとして設定する
レコードを宛先に抽出および同期するために、SFTPをデータパイプラインソースとして設定します。このガイドを使用してSFTPを接続し、パイプラインを設定し、.csvファイルと.parquetファイルの同期動作、スキーマ処理、および制限を確認します。
サポートされている機能
SFTPをデータパイプラインソースとして使用する場合、次の機能がサポートされます。
- 設定済みフォルダのサブディレクトリ内のファイルを含む、
.csvファイルと.parquetファイルからのデータの抽出および同期 - ファイル変更時刻の検出によるフル同期および増分同期のサポート
- オブジェクト抽出のためのフィールドレベルの選択
- フィールドレベルのデータマスキング
前提条件
SFTPをデータパイプラインソースとして接続するには、次が必要です。
- Workatoのクラウドインフラストラクチャから到達可能なSFTPサーバー
- 選択した認証方法の認証情報:
- Username/password: SFTPサーバーのユーザー名とパスワード
- Public/private key pair: サーバーに登録されているユーザー名と秘密鍵。 Workatoでは、相互運用性のためにOpenSSH形式を推奨しています
- Public/private key pair and password: 両方の要素を必要とするサーバー用のユーザー名、秘密鍵、およびパスワード
- サーバーのIDを検証し、中間者攻撃からコネクションを保護するために使用される、SFTPサーバーのホスト鍵フィンガープリント(SHA256またはMD5)
- 同期予定のファイルのフォルダパスとファイルパターン
ホスト鍵フィンガープリントが必要
Workatoでは、すべてのSFTPデータパイプラインコネクションにホスト鍵フィンガープリントが必要です。これがないと、Workatoは正しいサーバーに接続していることを確認できず、資格情報が中間者攻撃にさらされます。鍵フィンガープリントについては、SFTPサーバー管理者に問い合わせてください。
SFTPへの接続
SFTPコネクターは、次の認証方式をサポートしています。
ユーザー名/パスワード
ユーザー名/パスワード認証を使用してSFTPをデータパイプラインソースとして接続するには、次の手順を実行します。
ユーザー名/パスワードで接続する
作成 > コネクションを選択するか、Cを2回押します。
新規コネクションページでSFTPを検索して選択します。
コネクション名フィールドに名前を入力します。
ロケーションドロップダウンメニューを使用して、コネクションを保存するプロジェクトを選択します。
Connection typeフィールドでCloudを選択します。
Authentication typeフィールドでUsername/passwordを選択します。
UsernameフィールドにSFTPサーバーのユーザー名を入力します。
PasswordフィールドにSFTPサーバーのパスワードを入力します。
HostnameフィールドにSFTPサーバーのアドレスを入力します。
PortフィールドにSFTPサーバーのポートを入力します。デフォルトのポートは22です。
Host key fingerprintフィールドにSFTPサーバーのホスト鍵のフィンガープリントを入力します。アルゴリズムプレフィックスを含めます。
任意です。 Workatoがファイル転送に使用するバッファのサイズを変更するには、Transfer buffer sizeフィールドに値を入力します。デフォルト値および最小値は32768で、最大値は327680です。 SFTPサーバーが対応している場合、一般的に値を大きくすると転送が高速になります。
任意です。各トランザクションの終了時に基盤となるSSHコネクションをシャットダウンするには、Force closeフィールドで値を選択します。この設定は、コネクション試行がハングしているように見える場合にのみ使用します。クリーンなコネクションのクローズを許可するには、空白のままにします。
任意です。使用するSFTPプロトコルバージョンを設定するには、Explicit versionフィールドに値を入力します。 Workatoがバージョンを自動的にネゴシエートできるようにするには、空白のままにします。
任意です。 SFTPサーバーが追加操作と変更操作をサポートしているかどうかを示すには、Append operations supported?フィールドを使用します。 SFTPプロバイダーがこれらの操作をサポートしていない場合は、Noを選択します。デフォルトはYesです。
接続を選択して、コネクションを検証して保存します。コネクションが確立されると、Workatoに成功メッセージが表示されます。
公開鍵/秘密鍵ペア
公開鍵/秘密鍵ペア認証を使用してSFTPをデータパイプラインソースとして接続するには、次の手順を実行します。
公開鍵/秘密鍵ペアで接続する
作成 > コネクションを選択するか、Cを2回押します。
新規コネクションページでSFTPを検索して選択します。
コネクション名フィールドに名前を入力します。
ロケーションドロップダウンメニューを使用して、コネクションを保存するプロジェクトを選択します。
Connection typeフィールドでCloudを選択します。
Authentication typeフィールドでPublic/private key pairを選択します。
UsernameフィールドにSFTPサーバーのユーザー名を入力します。
Private keyフィールドにSSH秘密鍵を入力します。 Workatoでは相互運用性のためにOpenSSH形式を推奨していますが、鍵テキストは変更せずにWorkatoのSSHクライアントに渡され、そのクライアントが形式に対応しているかどうかを判断します。
任意です。鍵が暗号化されている場合は、Passphraseフィールドに秘密鍵のパスフレーズを入力します。
HostnameフィールドにSFTPサーバーのアドレスを入力します。
PortフィールドにSFTPサーバーのポートを入力します。デフォルトのポートは22です。
Host key fingerprintフィールドにSFTPサーバーのホスト鍵のフィンガープリントを入力します。アルゴリズムプレフィックスを含めます。
任意です。 Workatoがファイル転送に使用するバッファのサイズを変更するには、Transfer buffer sizeフィールドに値を入力します。デフォルト値および最小値は32768で、最大値は327680です。 SFTPサーバーが対応している場合、一般的に値を大きくすると転送が高速になります。
任意です。各トランザクションの終了時に基盤となるSSHコネクションをシャットダウンするには、Force closeフィールドで値を選択します。この設定は、コネクション試行がハングしているように見える場合にのみ使用します。クリーンなコネクションのクローズを許可するには、空白のままにします。
任意です。使用するSFTPプロトコルバージョンを設定するには、Explicit versionフィールドに値を入力します。 Workatoがバージョンを自動的にネゴシエートできるようにするには、空白のままにします。
任意です。 SFTPサーバーが追加操作と変更操作をサポートしているかどうかを示すには、Append operations supported?フィールドを使用します。 SFTPプロバイダーがこれらの操作をサポートしていない場合は、Noを選択します。デフォルトはYesです。
接続を選択して、コネクションを検証して保存します。コネクションが確立されると、Workatoに成功メッセージが表示されます。
公開鍵/秘密鍵ペアとパスワード
公開鍵/秘密鍵ペアとパスワード認証を使用してSFTPをデータパイプラインソースとして接続するには、次の手順を実行します。
公開鍵/秘密鍵ペアとパスワードで接続する
作成 > コネクションを選択するか、Cを2回押します。
新規コネクションページでSFTPを検索して選択します。
コネクション名フィールドに名前を入力します。
ロケーションドロップダウンメニューを使用して、コネクションを保存するプロジェクトを選択します。
Connection typeフィールドでCloudを選択します。
Authentication typeフィールドでPublic/private key pair and passwordを選択します。
UsernameフィールドにSFTPサーバーのユーザー名を入力します。
Private keyフィールドにSSH秘密鍵を入力します。 Workatoでは相互運用性のためにOpenSSH形式を推奨していますが、鍵テキストは変更せずにWorkatoのSSHクライアントに渡され、そのクライアントが形式に対応しているかどうかを判断します。
任意です。鍵が暗号化されている場合は、Passphraseフィールドに秘密鍵のパスフレーズを入力します。
PasswordフィールドにSFTPサーバーのパスワードを入力します。この認証タイプを必要とするサーバーは、鍵ペアとパスワードをまとめて検証します。
HostnameフィールドにSFTPサーバーのアドレスを入力します。
PortフィールドにSFTPサーバーのポートを入力します。デフォルトのポートは22です。
Host key fingerprintフィールドにSFTPサーバーのホスト鍵のフィンガープリントを入力します。アルゴリズムプレフィックスを含めます。
任意です。 Workatoがファイル転送に使用するバッファのサイズを変更するには、Transfer buffer sizeフィールドに値を入力します。デフォルト値および最小値は32768で、最大値は327680です。 SFTPサーバーが対応している場合、一般的に値を大きくすると転送が高速になります。
任意です。各トランザクションの終了時に基盤となるSSHコネクションをシャットダウンするには、Force closeフィールドで値を選択します。この設定は、コネクション試行がハングしているように見える場合にのみ使用します。クリーンなコネクションのクローズを許可するには、空白のままにします。
任意です。使用するSFTPプロトコルバージョンを設定するには、Explicit versionフィールドに値を入力します。 Workatoがバージョンを自動的にネゴシエートできるようにするには、空白のままにします。
任意です。 SFTPサーバーが追加操作と変更操作をサポートしているかどうかを示すには、Append operations supported?フィールドを使用します。 SFTPプロバイダーがこれらの操作をサポートしていない場合は、Noを選択します。デフォルトはYesです。
接続を選択して、コネクションを検証して保存します。コネクションが確立されると、Workatoに成功メッセージが表示されます。
パイプラインの設定
SFTPをデータパイプラインソースとして設定するには、次の手順を実行します。
作成 > データパイプラインを選択します。
データパイプライン名フィールドにデータパイプラインの名前を入力します。
データパイプライン設定
ロケーションドロップダウンメニューを使用して、データパイプラインを保存するプロジェクトを選択します。
構築を開始を選択します。
ソースアプリから新規/更新済みレコードを抽出トリガーをクリックします。このトリガーは、パイプラインがSFTPからデータを取得する方法を定義します。
ソースアプリから新規/更新済みレコードを抽出トリガーを設定
使用可能なソースアプリの一覧からSFTPを選択します。
このパイプラインで使用するSFTPコネクションを選択します。または、+ 新規コネクションをクリックして新しいコネクションを作成します。
監視するベースディレクトリを選択または入力するには、Directoryフィールドを使用します。追加する各オブジェクトのフォルダパスは、このディレクトリを基準とした相対パスです。
Add objectをクリックしてNew objectパネルを開きます。
Add object
前の手順で選択したディレクトリを基準として、Source Folder pathフィールドに監視およびファイル取得元のフォルダを入力します。
ソースファイルの設定
パイプラインは、このフォルダのサブディレクトリ内にある一致するファイルも自動的に検出します。
ファイルタイプドロップダウンメニューを使用して、抽出するファイル形式を選択します。 Workatoでは、SFTPについて次のファイルタイプをサポートしています。
- CSV:
.csvファイルからデータを抽出します。追加のCSV設定の構成が必要です。 - Parquet:
.parquetファイルからデータを抽出します。スキーマとデータ型はファイルから直接推測されます。
ファイル名パターンフィールドでパターンを使用して、取得するファイルを定義します。ワイルドカードにはアスタリスクを使用します。例: orders_*。ファイル拡張子は、選択したファイルタイプに基づいて自動的に追加されます。
orders_*など、リテラル文字で始まるパターンは、ソースフォルダ内の直下のファイルのみに一致します。これは、リテラルプレフィックスによって一致が最上位レベルに固定されるためです。サブディレクトリ内のファイルにも一致させるには、代わりに*orders_*など、パターンをアスタリスクで始めます。先頭のアスタリスクはフォルダ境界を越えるためです。
定義したパターンに一致する最大10個のファイルをプレビューするには、Fetch matching filesをクリックします。
宛先テーブルが準拠するスキーマの基準となるファイルを選択するには、Reference fileドロップダウンメニューを使用します。
ファイルタイプ固有の設定を構成します:
参照ファイルからカラムを読み込んでプレビューするには、スキーマを取得をクリックします。 CSVスキーマは、参照ファイルのヘッダー行と最初の1,000行から推測されます。 Parquetスキーマは、ファイルの埋め込みメタデータから直接読み取られます。
スキーマを確認し、想定されるテーブル構造と一致していることを確認します。
スキーマの確認
スキーマプレビューには、ソースファイルの列と、次のシステム生成列が含まれます。
_file: 各行の取得元であるソースファイルのパス。_line: ソースファイル内の各レコードの行番号またはロー番号。_modified: 同期時点でのソースファイルの最終変更タイムスタンプ。
マージ戦略を選択フィールドで、宛先テーブル内の行をマージする方法を設定します。 Workatoは次のマージ戦略をサポートしています:
- アップサート: 新しい行を挿入し、既存の行を更新します。 Upsertを選択すると、Merge methodフィールドが表示されます。宛先テーブルの主キーとして使用する列を最大
5個選択できます。 Merge methodを空白のままにすると、パイプラインはシステム生成の_file列と_line列を複合主キーとして使用します。 - Append only: システム生成の
_file列、_line列、および_modified列を代理キーとして使用し、既存のレコードとの照合や更新を試みずにすべての行を挿入します。ファイルが時間の経過とともに変更される際に、各バージョンの完全な履歴を保持するには、このオプションを使用します。
オブジェクトを確認をクリックして、設定を確認します。この画面には、ファイル設定、ファイルタイプ固有のオプション、マージの詳細が表示されます。
Review object
Object nameフィールドに宛先テーブルの名前を入力します。
完了をクリックして、オブジェクト設定を保存します。
選択した各オブジェクトのスキーマを確認してカスタマイズします。宛先がソースと一致するように、パイプラインはオブジェクトを選択するとそのスキーマを自動的に取得します。
任意のオブジェクトを展開して、そのフィールドを表示します。使用可能なすべてのデータを抽出するにはすべてのフィールドを選択したままにし、データ抽出とスキーマレプリケーションから除外するには特定のフィールドの選択を解除します。
任意です。オブジェクトを展開し、各フィールドの処理方法を選択して、フィールドレベルのデータ保護を設定します。
- Replicate as is(デフォルト): ソースのデータ値を宛先に同一の状態で複製します。
- ハッシュ: 宛先に同期する前に、フィールド内の機密データ値をハッシュ化します。
Workatoでは、個人を特定できる情報(PII)やその他の機密フィールドをハッシュ化することを推奨します。一般的に機密データを含むオブジェクトの一覧については、機密データの処理を参照してください。
さらにオブジェクトを追加するには、もう一度オブジェクトを追加をクリックします。この手順を繰り返して、パイプラインに追加のフォルダおよびファイルパターン設定を含めます。
スキーマ変更の処理方法を選択ドロップダウンメニューを使用して、スキーマドリフトの処理オプションを選択します。
- Auto-sync new fields: ソースファイルに追加された新しいフィールドを自動的に検出して同期します。履歴行では、新しい列に
NULLが入ります。 - 新しいフィールドをブロック: パイプラインの開始後、スキーマを固定します。受信ファイル内の余分な列は無視されます。新しいフィールドは手動で追加する必要があります。
受信ファイルで欠落しているフィールドは、この設定に関係なくNULLとして挿入されます。
任意です。同時実行制限フィールドに値を入力して、同時実行操作数の上限を設定します。 Workatoで設定されたデフォルトクォータを使用するには、フィールドを空白のままにします。最大値は5です。
一部のSFTPサーバーでは、一度に1つのアクティブセッションのみを受け付けます。サーバーへの同時コネクションが失敗する場合は、この値を下げます。
パイプラインがSFTPから宛先へデータを同期する頻度を、Frequencyフィールドで設定します。標準の時間ベースのスケジュールを選択するか、カスタムcron式を定義します。
同期モード
SFTPデータパイプラインでは、フル同期を実行した後、以降の各実行で増分同期を実行します。この順序は設定できません。他のコネクターが提供するオブジェクトごとの同期モードセレクターとは異なります。
フル同期
フル同期では、設定済みフォルダとそのサブディレクトリ内でファイル名パターンに一致するすべてのファイルを一覧表示し、古いものから新しいものの順にファイルを処理し、選択したマージ戦略を使用してすべての行を宛先テーブルにロードします。このフル同期は、パイプラインの開始時に1回だけ実行されます。選択されている場合に実行のたびに繰り返される他のコネクターのフル同期とは異なります。以降の各実行は増分同期です。
フル同期の開始時、宛先テーブルは空である必要があります。テーブルにすでにデータが含まれている場合、パイプラインは設定エラーを返し、同期しません。
増分同期
SFTPサーバーは変更イベントや行レベルのタイムスタンプを公開しないため、Workatoは各ファイルの最終変更タイムスタンプ(mtime)を増分カーソルとして使用します。パイプラインは、フル同期後の各実行でフォルダツリーを再度一覧表示し、各ファイルの現在のmtimeを前回正常に実行された時刻のタイムスタンプと比較します。より新しいmtimeを持つファイルはダウンロードされ、全体が再処理されます。変更されていないファイルはスキップされます。
SFTPサーバーとWorkatoの間の時刻差に対応するため、パイプラインは各実行で、前回の同期境界から5分以内に変更されたファイルを再検査します。この方法で再読み取りされたファイルは、Upsertマージ戦略では同じ結果を生成します。
削除追跡
SFTPは削除追跡をサポートしていません。ソースフォルダからファイルが削除されても、Workatoは宛先テーブルを削除したり、その行に削除済みのマークを付けたりしません。削除を追跡する必要がある場合は、ソースファイルにis_deletedなどの列を含めます。
スキーマとデータ型の処理
SFTPからデータを同期する場合、スキーマとデータ型について次の考慮事項が適用されます。
ネストされたデータ
Parquetファイルには、ネストされたオブジェクトと繰り返しフィールド(配列)を含めることができます。 Workatoはこれらを個々の列にフラット化するのではなく、宛先列にJSON文字列として格納します。
合成列
Workatoは、SFTPオブジェクトから作成されたすべての宛先テーブルに次の合成列を追加します。
| 列 | タイプ | 目的 |
|---|---|---|
_file | 文字列 | 行が読み取られたソースファイルのパス |
_line | 整数 | ソースファイル内のレコードの行番号 |
_modified | タイムスタンプ | 同期時点でのソースファイルの最終変更タイムスタンプ(UTC) |
機密データの処理
SFTPは、給与ファイル、従業員レコード、患者データ、財務諸表、顧客リストなど、機密性の高いバッチエクスポートによく使用される転送手段です。各ファイルのスキーマは顧客が定義するため、Workatoはどの列に機密データが含まれているかを事前に予測できません。
各オブジェクトを同期する前にそのフィールドを確認し、フィールドレベルのデータ保護でHashオプションを使用して、PIIまたはその他の機密データを含む列をマスクします。詳細については、パイプラインを構成手順を参照してください。
制限事項
SFTPをデータパイプラインソースとして使用する場合、次の制限が適用されます。
ホスト鍵フィンガープリントが必要
WorkatoでSFTPコネクションを作成するには、ホスト鍵フィンガープリントが必要です。これは、ホスト鍵フィンガープリントが任意であるレシピ用のSFTPコネクターとは異なります。
SSH-RSAはクラウドコネクションではサポートされていません
Workatoは直接クラウドコネクションでSSH-RSAアルゴリズムをサポートしていません。これは、SSH-RSAがSHA-1に依存しており、現在のセキュリティ標準を満たさなくなっているためです。 SFTPサーバーがSSH-RSAを必要とする場合は、Workatoサポートに問い合わせてください。
一部のSFTPサーバーでは1つのアクティブセッションのみが許可される
一部のSFTPサーバーでは、一度に1つのアクティブセッションのみを受け付けます。サーバーにこの制限がある場合は、コネクションエラーを回避するためにConcurrency limitを1に設定します。
ファイルとオブジェクトの最大サイズ
SFTPデータパイプラインには、次のクォータが適用されます:
| 制限 | 値 |
|---|---|
| 最大ファイルサイズ | 10 GB |
| ファイルあたりの最大列数 | 300 |
| パイプラインあたりの最大オブジェクト数 | 50 |
| 主キー列の最大数 | 5 |
| エンコード(CSV) | UTF-8のみ |
最大サイズを超えるファイルはスキップされ、スキップはオブジェクトの詳細ページにログ記録されます。
名前が変更されたファイルは新しいファイルとして同期される
SFTPには、ファイルが置換されたのではなく名前変更されたことを通知する方法がありません。 Workatoは、サーバー上で名前を変更したファイルを新しいファイルとして扱い、全体を再ダウンロードします。
重複するファイル名パターンによりデータが重複する可能性がある
同じパイプライン内の2つのオブジェクトにまたがる重複したファイル名パターン(orders_*とorders_archive_*など)に一致するファイルは、両方の宛先テーブルに同期されます。各ファイルが1つのオブジェクトのみに一致するように、パターンを設計します。
最小同期頻度
サポートされる最小同期間隔は15分です。これより高い頻度で同期をトリガーすることはできません。
最終更新日: