C# で SFTP に接続してなんやかんやする場合、いいライブラリが少なかったり実装がややこしかったりで結構面倒だと思っていました。
ですが Logic App には、SFTP へのコネクトがちゃんと用意されているので今回は、それを使ってファイルを転送する方法についてまとめます。
やりたいこと
Blob storage と SFTP サーバの両方にテキストファイルを転送する
サービス
Azure Logic App
やってみる
Blob storage の変化を検知する
Logic App のエディタで、 Azure Blob Storage をトリガーとして選択します。
選択すると When a blob is added or modified の項目があるので選択します。
初めての場合、ストレージアカウントを選択する画面になるので、ストレージアカウントを選択します。
トリガーが作成されると監視するコンテナを選択する画面が出るので、適当に設定します。
Blob に配置されたファイルの中身を取得する
New Step から処理を追加します。
また Azure Blob Storage を選択します。
すると色々 Action が出てくるので、Get blobg content を選択します。
選択すると、Blob で何をするか設定する画面になります。
Blob の項目を List of Files Path に設定します。
これで、後続の処理に Blob の中身を渡せるようになります。
SFTP へ接続する
また Action を追加します。
SFTP で検索すると、SFTP 用のアクションがいくつか出てくるので Create file を選択します。
選択すると、SFTP の設定情報を埋める画面が出るので、適当に埋めます。
private key は、ppk の中身をべた張りで OK です。
接続設定がおかしい場合は、この段階でエラーになってくれるので設定を見直しましょう。
SFTP へファイルを転送する
SFTP の接続設定が終わると、ファイル名とファイルの中身をどうするか設定する画面になります。
以下のように File name に List of Files DisplayName, File content に File Content を設定します。
Folder path は、任意のパスで埋めます。
これで準備完了です。
指定した Blob にファイルをアップロードすると、いい感じに SFTP にファイルをコピーしてくれます。
デフォルトの状態だと、 3分に一度の感覚でポーリングするので、ファイルをアップロードしてから最大3分で処理が行われます。
まとめ
C# だと面倒な処理でも Logic App を組み合わせると簡単にできることがあるので、適材適所で Logic App も使ってみましょう。