SFTP の設定と構成
SFTP (Secure File Transfer Protocol) サーバーに接続し、ファイルに対して様々な操作を行うためのクライアントを作成することができます。この記事では、カスタム クラウド データ ソース (CCDS) に SFTP 接続を追加する方法と、SFTP 接続をスクリプトに含める方法を説明します。ファイルの暗号化と復号化については、 "PGP 暗号化の設定" を参照してください。
始める前に
- CCDS を初めて使用する場合は、概念: CCDS の概要 および カスタム クラウド データ ソース (CCDS) の設定を参照してください。
- 必要な権限:"管理" > "権限セット"の"インテグレーション開発者"
ナビゲーション
ナビゲーション メニューから、 へ移動します。 SFTP の設定と構成
新規 SFTP 接続の作成
- インテグレーション設定のペインから"認証情報""SFTP 接続"を作成します。
- 接続の名前を入力し、"作成"をクリックします。
- 接続フォームにホスト表現を入力します。指定していない場合、接続には 22 番ポートが使用されます。以下のポートがサポートされています。
- 22
- 1224
- 2222
- 5022
- 5031
- 5122
- 10022
- 20022
- 認証方法を選択してください。
- 秘密キー認証の場合、パスワードは必要ありません。
- 基本認証の場合は、パスワードを入力します。
- 秘密キー認証の場合は、公開キーをクライアント サーバーの管理者に送り、インストールしてもらいます。
- 最初に"接続テスト"を選択します。
秘密キーまたは基本認証の場合
- 最初に"接続テスト"を選択すると、"指紋"フィールドが表示されます。これにより、今後の接続時にサーバーの検証が可能になります。クライアント サーバーの管理者が"指紋"を確認することで、正しいサーバーに接続されていることが確認できます。
- 初めて"接続テスト"を実行した後、"認証情報"ペインで SFTP 接続をクリックすると、接続が再読み込みされ、"指紋" フィールドが表示されます。
- "接続テスト"を選択したり、スクリプトで SFTP 接続を使用したりする場合、サーバーからの指紋が一致しないと接続に失敗します。
- カスタム クラウド データ ソースの選択
- CCDS を選択するか、"インテグレーション設定" の"データ ソース"から CCDS を作成します。
- カスタム クラウド データ ソースへの SFTP 接続の追加
- CCDS の "デザイナー設定" タブを選択します。
- "設定コンポーネント"ペインの"追加設定"から"SFTP 接続"パラメータをドラッグ アンド ドロップします。
- "デザイナー設定" タブで SFTP 接続の設定を行います。設定名は、スクリプト内で使用するハンドル名です。たとえば、"sftpserver" などです。
- スクリプトに SFTP 接続を追加
- ai.sftp.createClient() でクライアントを作成し、SFTP 設定の名前を指定します。例:const client = ai.sftp.createClient('mysftp').接続が正常に完了すると、クライアント オブジェクトが作成されます。
- "アクション"ペインから接続をテストして、スクリプトを実行します。スクリプトのテスト結果は、"アクション"ペインの"ログ"で確認できます。
SFTP によるファイルのアップロードとダウンロード
- createClient(sftpConnection)client = ai.sftp.createClient('mysftp');
- uploadFile(Writer, uploadedFileName)client.uploadFile(writer,'./archive/datasample.csv.asc');
- downloadFile(filename)client.downloadFile('./archive/datasample.csv.asc');
- クライアントの接続解除client.disconnect();
- ファイル リーダー オブジェクトが消費するシステム リソースを解放reader.cleanUp();
SFTP サーバーに接続してファイルをダウンロードする例
function testConnection(context) { let client; try { client = ai.sftp.createClient('mysftp'); } catch(e) { ai.log.logError('An error occurred connecting to the server: ' + e); return false; } finally { if (client) client.disconnect(); } return true; } function importData(context) { const rowset = context.getRowset(); const client = ai.sftp.createClient('mysftp'); const reader = client.downloadFile('./someData.csv'); try { reader.readLine(); let line = reader.readLine(); while (line) { let cells = line.split(','); rowset.addRow(cells); line = reader.readLine(); } } catch(e) { ai.log.logError('An error occurred downloading the file: ' + e); } finally { client.disconnect(); reader.cleanUp(); } }