SFTP
SFTP コネクタを使用すると、SFTP サーバーに接続してファイル転送オペレーションを実行できます。
始める前に
SFTP コネクタを使用する前に、次の作業を行います。
- Google Cloud プロジェクトで次の操作を行います。
- コネクタを構成するユーザーに roles/connectors.admin IAM ロールを付与します。
- コネクタに使用するサービス アカウントに、次の IAM ロールを付与します。
roles/secretmanager.viewer
roles/secretmanager.secretAccessor
サービス アカウントは特別なタイプの Google アカウントで、Google API のデータにアクセスするのに認証を受ける必要がある人間以外のユーザーを表します。サービス アカウントがない場合は、サービス アカウントを作成する必要があります。詳細については、サービス アカウントを作成するをご覧ください。
- 次のサービスを有効にします。
secretmanager.googleapis.com
(Secret Manager API)connectors.googleapis.com
(Connectors API)
サービスを有効にする方法については、サービスを有効にするをご覧ください。
以前にプロジェクトでこうしたサービスを有効にしていない場合は、コネクタを構成するときにそれを有効にすることを求められます。
コネクタを構成する
コネクタを構成するには、データソース(バックエンド システム)への接続を作成する必要があります。接続はデータソースに特有です。つまり、多数のデータソースがある場合は、データソースごとに別々の接続を作成する必要があります。接続を作成する手順は次のとおりです。
- Cloud コンソールで、[Integration Connectors] > [接続] ページに移動し、Google Cloud プロジェクトを選択または作成します。
- [+ 新規作成] をクリックして [接続の作成] ページを開きます。
- [ロケーション] セクションで、接続のロケーションを選択します。
- リージョン: プルダウン リストからロケーションを選択します
サポートされているすべてのリージョンの一覧については、ロケーションをご覧ください。
- [次へ] をクリックします。
- リージョン: プルダウン リストからロケーションを選択します
- [接続の詳細] セクションで、次の操作を行います。
- コネクタ: 使用可能なコネクタのプルダウン リストから [SFTP] を選択します。
- コネクタのバージョン: 使用可能なバージョンのプルダウン リストからコネクタのバージョンを選択します。
- [接続名] フィールドに、接続インスタンスの名前を入力します。
接続名は次の条件を満たす必要があります。
- 接続名には英字、数字、ハイフンを使用できます。
- 文字は小文字のみを使用できます。
- 接続名の先頭には英字を設定し、末尾には英字または数字を設定する必要があります。
- 接続名は 49 文字以内で指定してください。
- 必要に応じて、接続インスタンスの [説明] を入力します。
- 必要に応じて、Cloud Logging を有効にして、ログレベルを選択します。デフォルトのログレベルは
Error
に設定されています。 - サービス アカウント: 必要なロールを持つサービス アカウントを選択します。
- 必要に応じて、接続ノードの設定を構成します。
- ノードの最小数: 接続ノードの最小数を入力します。
- ノードの最大数: 接続ノードの最大数を入力します。
ノードは、トランザクションを処理する接続の単位(またはレプリカ)です。1 つの接続でより多くのトランザクションを処理するには、より多くのノードが必要になります。逆に、より少ないトランザクションを処理するには、より少ないノードが必要になります。ノードがコネクタの料金に与える影響については、接続ノードの料金をご覧ください。値を入力しない場合は、デフォルトで最小ノード数は 2 に設定され(可用性を高めるため)、最大ノード数は 50 に設定されます。
-
Remote Path: SFTP サーバーのフォルダパス。
このフィールドは、エンティティ オペレーション(
List
、Create
、Update
、Delete
など)を実行する場合にのみ設定することを検討してください。ルートフォルダのエンティティ(ファイルまたはフォルダ)またはルートフォルダの直接の子フォルダにアクセスする場合は、このフィールドに値を設定する必要はありません。ただし、ルートフォルダから深さ 2 レベル以上にあるネストされたエンティティにアクセスする場合は、このフィールドの値を、アクセスするエンティティを含むフォルダのベースパスに設定する必要があります。たとえば、
/folder_A/folder_B/folder_C/test.png
ファイルにアクセスする場合は、リモートパスを/folder_A/folder_B/folder_C
に設定する必要があります。 - 必要に応じて、[+ ラベルを追加] をクリックして Key-Value ペアの形式でラベルを接続に追加します。
- [次へ] をクリックします。
- [宛先] セクションに、接続するリモートホスト(バックエンド システム)の詳細を入力します。
- 宛先の種類: 宛先の種類を選択します。
- リストから [ホストアドレス] を選択し、宛先のホスト名または IP アドレスを指定します。
- バックエンド システムへのプライベート接続を確立する場合は、リストからエンドポイント アタッチメントを選択し、次にエンドポイント アタッチメントリストから必要なエンドポイント アタッチメントを選択します。
セキュリティをさらに強化してバックエンドシステムへのパブリック接続を確立する場合は、接続用の静的アウトバウンド IP アドレスの構成を検討してから、特定の静的 IP アドレスのみを許可リストに登録するようファイアウォール ルールを構成します。
他の宛先を入力するには、[+ 宛先を追加] をクリックします。
- [次へ] をクリックします。
- 宛先の種類: 宛先の種類を選択します。
-
[認証] セクションで、認証の詳細を入力します。
- [認証タイプ] を選択し、関連する詳細を入力します。
SFTP 接続でサポートされる認証タイプは次のとおりです。
- ユーザー名とパスワードを指定する
- SSH_PUBLIC_KEY
- [次へ] をクリックします。
これらの認証タイプの構成方法については、認証を構成するをご覧ください。
- [認証タイプ] を選択し、関連する詳細を入力します。
- Review: 接続と認証の詳細を確認します。
- [作成] をクリックします。
認証を構成する
使用する認証に基づいて詳細を入力します。
-
ユーザー名とパスワード
- ユーザー名: 接続に使用する SFTP ユーザー名。
- パスワード: SFTP ユーザー名に関連付けられたパスワードを含む Secret Manager の Secret。
-
SSH_PUBLIC_KEY
- ユーザー名: 認証に使用される SFTP ユーザー アカウント。
- SSH Private Key: SSH 認証用の秘密鍵。
- SSH 秘密鍵パスワード: 秘密鍵を保護するパスフレーズまたはパスワード(ある場合)。
- SSH 秘密鍵タイプ: 秘密鍵の形式。
エンティティ、オペレーション、アクション
すべての Integration Connectors が、接続されたアプリケーションのオブジェクトを抽象化するレイヤを提供します。アプリケーションのオブジェクトには、この抽象化を通じてのみアクセスできます。抽象化は、エンティティ、オペレーション、アクションとして公開されます。
- エンティティ: エンティティは、接続されているアプリケーションやサービスのオブジェクト、またはプロパティのコレクションと考えることができます。エンティティの定義は、コネクタによって異なります。たとえば、データベース コネクタでは、テーブルがエンティティであり、ファイル サーバー コネクタでは、フォルダがエンティティです。また、メッセージング システム コネクタでは、キューがエンティティです。
ただし、コネクタでいずれのエンティティもサポートされていない、またはエンティティが存在しない可能性があります。その場合、
Entities
リストは空になります。 - オペレーション: エンティティに対して行うことができるアクティビティです。エンティティに対して次のいずれかのオペレーションを行うことができます。
使用可能なリストからエンティティを選択すると、そのエンティティで使用可能なオペレーションのリストが生成されます。オペレーションの詳細については、コネクタタスクのエンティティ オペレーションをご覧ください。ただし、コネクタがいずれかのエンティティ オペレーションをサポートしていない場合、サポートされていないオペレーションは
Operations
リストに含まれません。 - アクション: コネクタ インターフェースを介して統合で使用できる主要な関数の一つです。アクションを使用すると、1 つまたは複数のエンティティに対して変更を加えることができます。また、使用できるアクションはコネクタごとに異なります。通常、アクションには入力パラメータと出力パラメータがあります。ただし、コネクタがどのアクションもサポートしていない可能性があります。その場合は、
Actions
リストが空になります。
システムの上限
SFTP コネクタは、ノードごとに 1 秒あたり 1 件のトランザクションを処理することができ、この上限を超えるトランザクションはすべてthrottlesされます。デフォルトでは、Integration Connectors は、接続に 2 つのノードを割り当てます(可用性を高めるため)。
Integration Connectors に適用される上限の詳細については、上限をご覧ください。
操作
このセクションでは、コネクタでサポートされているアクションを一覧表示します。アクションの構成方法については、アクションの例をご覧ください。
Upload アクション
次の表では、Upload
アクションの入力パラメータを示します。
パラメータ名 | データ型 | 必須 | 説明 |
---|---|---|---|
コンテンツ | 文字列 | × | ファイルとしてアップロードするコンテンツ。 |
ContentBytes | 文字列 | × | ファイルとしてアップロードするバイト コンテンツ(Base64 文字列として)。バイナリデータをアップロードする場合に使用します。 |
HasBytes | ブール値 | × | コンテンツをバイトとしてアップロードするかどうかを指定します。デフォルト値は false です。 |
RemoteFile | 文字列 | ○ | リモートホスト上のファイル名。 |
上書き | ブール値 | × | リモート ファイルを上書きするかどうかを指定します。デフォルト値は false です。 |
Upload
アクションの構成例については、例をご覧ください。
ダウンロード アクション
次の表では、Download
アクションの入力パラメータを示します。
パラメータ名 | データ型 | 必須 | 説明 |
---|---|---|---|
RemoteFile | 文字列 | ○ | リモートホスト上のファイル名。 |
HasBytes | ブール値 | × | コンテンツをバイトとしてダウンロードするかどうかを指定します。デフォルト値は false です。 |
Download
アクションの構成例については、例をご覧ください。
MoveFile アクション
次の表では、MoveFile
アクションの入力パラメータを示します。
パラメータ名 | データ型 | 必須 | 説明 |
---|---|---|---|
RemoteFile | 文字列 | ○ | 移動するリモート ファイルのパス |
DestinationPath | 文字列 | ○ | ファイルを移動する新しいパス。 |
MoveFile
アクションの構成例については、例をご覧ください。
RenameFile アクション
次の表では、RenameFile
アクションの入力パラメータを示します。
パラメータ名 | データ型 | 必須 | 説明 |
---|---|---|---|
RemoteFile | 文字列 | ○ | 名前を変更するリモート ファイルのパスと名前。 |
NewFileName | 文字列 | ○ | リモート ファイルの新しい名前。 |
RenameFile
アクションの構成例については、例をご覧ください。
例
このセクションでは、このコネクタでエンティティ オペレーションとアクションの一部を実行する方法について説明します。この例では、次のオペレーションについて説明します。
- ルート ディレクトリ内のすべてのファイルの一覧表示
- ディレクトリ内のパターンに一致するファイルの一覧表示
- ファイルの移動
- ファイルの名前変更
- ファイルの削除
- ASCII テキスト ファイルのアップロード
- バイナリ ファイルのアップロード
- ASCII テキスト ファイルのダウンロード
- バイナリ ファイルのダウンロード
次の表では、コネクタのタスクのサンプル シナリオと対応する構成を示します。
タスク | サンプル コマンド | 構成 |
---|---|---|
ルート ディレクトリ内のすべてのファイルの一覧表示 | ls / |
|
ディレクトリ内の .csv ファイルを一覧表示する |
ls /tmp/*.csv |
|
ファイルの移動 | mv /tmp/dir_A/hello_world.txt /dir_B/dir_C/ |
この例では、 [{ "Success":"true" }] |
ファイルの名前変更 | mv /tmp/hello_world.txt /tmp/hello_world_new.txt |
この例では、 [{ "Success":"true" }] |
ファイルの削除 | rm /tmp/myfile.csv |
|
ASCII テキスト ファイルのアップロード | put file_1.txt /tmp/file_1.txt |
このサンプルでは、SFTP サーバーの
|
バイナリ ファイルのアップロード | put image_1.png /tmp/image_1.png |
バイナリ コンテンツをアップロードするには、まずコンテンツを Base64 形式でエンコードする必要があります。任意のツールを選択して、コンテンツをエンコードします。コンテンツをエンコードする手順については、このドキュメントでは説明しません。コンテンツを Base64 文字列として取得したら、次の手順を行います。
このサンプルでは、
|
ASCII テキスト ファイルのダウンロード | get /tmp/myfile.txt |
ダウンロードしたファイルのコンテンツは、Connectors タスクの |
バイナリ ファイルのダウンロード | get /tmp/myfile.png |
ダウンロードしたファイルのコンテンツは、Connectors タスクの |
ペイロード用の JSON スキーマ
SFTP 接続のすべてのエンティティ オブジェクトには、事前定義された JSON スキーマがあります。スキーマをよく理解することで、入力または出力のペイロード値を簡単に構成できます。SFTP 接続のエンティティ オブジェクトは、次の JSON スキーマを使用します。
{ "type": "object", "properties": { "FilePath": { "type": "string", "readOnly": false }, "Filename": { "type": [ "string", "null" ], "readOnly": false, "description": "The name of the file or directory." }, "FileSize": { "type": [ "number", "null" ], "readOnly": false, "description": "The size of the file." }, "LastModified": { "type": [ "string", "null" ], "readOnly": false }, "IsDirectory": { "type": [ "boolean", "null" ], "readOnly": false }, "Permissions": { "type": [ "string", "null" ], "readOnly": false }, "Owner": { "type": [ "string", "null" ], "readOnly": false }, "OwnerId": { "type": [ "string", "null" ], "readOnly": false }, "Group": { "type": [ "string", "null" ], "readOnly": false }, "GroupId": { "type": [ "string", "null" ], "readOnly": false } } }
filterClause の動的構成
リスト、更新、削除のオペレーションでは、統合のデータ マッピングタスクを使用して、実行時に filterClasue 入力変数の値を動的に設定できます。たとえば、統合の API トリガーを呼び出すときに、フィルタ句の値を送信できます。次の画像は、データ マッピング タスクのデータ マッピング エディタの filterClause
変数のサンプル マッピングを示しています。
Terraform を使用して接続を作成する
Terraform リソースを使用して、新しい接続を作成できます。Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
接続作成用の Terraform テンプレートのサンプルを表示するには、サンプル テンプレートをご覧ください。
Terraform を使用してこの接続を作成する場合は、Terraform 構成ファイルで次の変数を設定する必要があります。
パラメータ名 | データ型 | 必須 | 説明 |
---|---|---|---|
remote_path | STRING | False | SFTP サーバーの現在のパス。 |
インテグレーションで SFTP 接続を使用する
接続を作成すると、Apigee Integration と Application Integration の両方で使用できるようになります。この接続は、コネクタタスクを介して統合で使用できます。
- Apigee Integration で Connectors タスクを作成して使用する方法については、Connectors タスクをご覧ください。
- Application Integration で Connectors タスクを作成して使用する方法については、Connectors タスクをご覧ください。
Google Cloud コミュニティの助けを借りる
Google Cloud コミュニティの Cloud フォーラムで質問を投稿したり、このコネクタについてディスカッションしたりできます。次のステップ
- 接続を一時停止して再開する方法を確認する。
- コネクタの使用状況をモニタリングする方法を確認する。
- コネクタログを表示する方法を確認する。