ごった煮

色々な事を書いてます

Azure Logc App で SFTP にファイルを転送したい

C# で SFTP に接続してなんやかんやする場合、いいライブラリが少なかったり実装がややこしかったりで結構面倒だと思っていました。 ですが Logic App には、SFTP へのコネクトがちゃんと用意されているので今回は、それを使ってファイルを転送する方法についてまとめます。

やりたいこと

Blob storage と SFTP サーバの両方にテキストファイルを転送する

サービス

Azure Logic App

やってみる

Blob storage の変化を検知する

Logic App のエディタで、 Azure Blob Storage をトリガーとして選択します。 f:id:papemk2:20200323175149p:plain

選択すると When a blob is added or modified の項目があるので選択します。 初めての場合、ストレージアカウントを選択する画面になるので、ストレージアカウントを選択します。

f:id:papemk2:20200323175651p:plain

トリガーが作成されると監視するコンテナを選択する画面が出るので、適当に設定します。 f:id:papemk2:20200323175856p:plain

Blob に配置されたファイルの中身を取得する

New Step から処理を追加します。 また Azure Blob Storage を選択します。 すると色々 Action が出てくるので、Get blobg content を選択します。

f:id:papemk2:20200323180137p:plain

選択すると、Blob で何をするか設定する画面になります。 Blob の項目を List of Files Path に設定します。

f:id:papemk2:20200323180317p:plain

これで、後続の処理に Blob の中身を渡せるようになります。

SFTP へ接続する

また Action を追加します。 SFTP で検索すると、SFTP 用のアクションがいくつか出てくるので Create file を選択します。 f:id:papemk2:20200323180536p:plain

選択すると、SFTP の設定情報を埋める画面が出るので、適当に埋めます。

f:id:papemk2:20200323180714p:plain

private key は、ppk の中身をべた張りで OK です。

接続設定がおかしい場合は、この段階でエラーになってくれるので設定を見直しましょう。 f:id:papemk2:20200323180855p:plain

SFTP へファイルを転送する

SFTP の接続設定が終わると、ファイル名とファイルの中身をどうするか設定する画面になります。 以下のように File name に List of Files DisplayName, File content に File Content を設定します。 Folder path は、任意のパスで埋めます。

f:id:papemk2:20200323181221p:plain

これで準備完了です。

指定した Blob にファイルをアップロードすると、いい感じに SFTP にファイルをコピーしてくれます。 デフォルトの状態だと、 3分に一度の感覚でポーリングするので、ファイルをアップロードしてから最大3分で処理が行われます。

まとめ

C# だと面倒な処理でも Logic App を組み合わせると簡単にできることがあるので、適材適所で Logic App も使ってみましょう。