0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Azure] LogicAppsを使用して、FTPサーバにファイル追加or更新があったら検知する

Posted at

はじめに

ファイル連係を行うFTPサーバを定期的に監視し、ファイル追加や更新を検知したい要件がありました。
AzureのLogicAppsサービスを使用することで実現できたので、対応方法をメモしておきます。

もしかしたら自分がとった方法や設定値以外に、もっと効率の良いやり方があるかもしれませんが、とりあえずできたことをメモする、というのをターゲットにしています。

なお、今回の要件です。

  • FTPサーバにはSFTPプロトコルで接続する
  • ログインにはPW認証を用い、SSH認証は行わない

前提

  • 以下は作成済みとする
    • Azureサブスクリプション
    • リソースグループ
    • LogicApps (ロジックアプリ)
    • 監視するFTPサーバ
  • スクリーンショット、UIの項目名、手順など2023/02/09時点の情報を元に記述

手順

ワークフローの作成

LogicAppsの[ワークフロー]ページにアクセスし、「追加」をクリック

ワークフロー名を入力し、状態の種類を選択します。
私の場合は信頼性の方が低遅延より重要な要件だったので、「ステートフル」を選択。

デザイナーの編集

作成したワークフローをクリックし、「デザイナー」タブを選択します。
トリガーとして、「Azure」タブにある、「SFTP - SSH」を選んでください。

以下のように、似たようなコネクタがたくさんあるので、間違えないように!
今回手順で使っているのは3ですが、僕は1でやろうとしてずっと上手くいかず悩んでました。

  1. 「ビルトイン」-「SFTP」
  2. 「Azure」-「SFTP」
  3. 「Azure」-「SFTP - SSH」

トリガーの選択

「ファイルが追加または変更されたとき」を選択

トリガーについての説明はこちらに載っています。
ファイルが追加または修正されたとき

この操作では、ファイルがフォルダー内で追加または変更されたときにフローをトリガーします。 トリガーは、ファイルのメタデータとファイルのコンテンツの両方を取得します。 トリガーは、ファイルの最終変更時刻に依存します。 サード パーティのクライアントによってファイルが作成されている場合は、クライアントで最終変更時刻の保存を無効にする必要があります。 50 MB 超えるファイルは、トリガーによってスキップされます。 サブフォルダーでファイルが追加および更新されても、トリガーは起動しません。 サブフォルダーをトリガーする必要がある場合は、複数のトリガーを作成する必要があります。

注意ポイントとしては下記でしょうか。

  • ファイルの最終変更日時を見てトリガーする
  • 50MBを超えるファイルはトリガーされない
  • サブフォルダーは監視対象とならない

接続の作成

接続名

接続名には、どのサーバに対して接続しているかが分かる名前にすると良いでしょう。

Host server address

接続するFTPサーバのIPアドレスまたはホストを記載します。
Publicアクセスになると思われるので、サーバはPublicIPを持つ必要があります。

LogicAppsをVNet統合してたらPrivateIPでも接続できるんですかね?
検証はしてません。

User name

サーバにログインするユーザ名を記載します。

Password

サーバにログインするパスワードを記載します。

SSH private key

今回はPW認証を使うので入力しません。

SSH private key passphrase

今回はPW認証を使うので入力しません。

Port number

ポート番号を記載します。

Disable SSH host key validation

今回はPW認証を使うので、チェックを入れます。

SSH host key finger-print

今回はPW認証を使うので入力しません。

Root folder path

どこをルートフォルダとして見るかのパスでしょうか?
今回は未入力にしました。

パラメーター設定

フォルダー

監視するフォルダーパスを入力します。

ファイルのコンテンツを含める

ファイル内容に関してLogicAppsワークフロー内で何かしらの処理を行いたいなら「はい」にします。
今回の要件は、検知したあと別サービスをwebhookで呼ぶのが目的であり、ファイル内容を知る必要がないので「いいえ」としました。

コンテンツタイプの推測

拡張子に基づいてコンテンツ タイプを推測してくれます。

項目を確認する頻度

ポーリング頻度を設定します。

編集内容の保存

地味に忘れやすいので注意。

検知の設定手順は以上になります。

動作確認

実際にFTPサーバの該当ディレクトリにファイルを追加したところ、実行履歴より検知ができていることを確認できました。

参照

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?