5
1

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.

LogicAppsでBlobをトリガーとした仮想マシンへのSFTPで実行する

Last updated at Posted at 2023-03-17

目的

オンプレミスからクラウドへLift&Shift(特にLift)する際に、VMを中心としたIaaSメインとなるものの監視やセキュリティなどの管理系機能はPaaSに移行したいというケースはよくあるかと思います。LogicAppsはそんなケースで活躍できる非常に便利なサービスで、うまく実装できれば大きくコストを抑制でき、VMを立てる必要がないのでOSのメンテナンスなども不要になります。

LogicAppsには多くのコネクタを用意していますが、その設定方法は公式サイトだけでは不十分なことがあるので、以下の2つの具体的なシナリオを用いて解説していきます。

1. パブリックインターネット経由
2. プライベート経由

前提知識

LogicAppsには大きく以下の2種類があり、今回は以下のように使い分けています。

  • 従量課金(マルチテナント):パブリックインターネット経由
  • Standard(シングルテナント):プライベート経由(VNET統合が必要なため)

LogicAppsのSKU比較表はこちら

従量課金かStandardかは、デプロイする際に以下の項目で選択できます。
※消費が従量課金になります。

image.png

1.パブリックインターネット経由

構成イメージ

image.png

手順

  1. 各リソースのデプロイ

    • 仮想ネットワーク×1
    • サブネット×1
    • 仮想マシン
    • ストレージアカウント
    • LogicApps(従量課金プラン)
  2. ネットワーク設定

    • サブネット
      • ネットワークセキュリティグループを作成している場合はSSHを許可するルールを設定
  3. SFTP設定

  4. LogicApps設定
    以下のようにロジックアプリデザイナーを作成
    image.png

2.プライベート経由

構成イメージ

image.png

手順

  1. 各リソースのデプロイ

    • 仮想ネットワーク×1
    • サブネット×4
    • 仮想マシン(Bastionも同時に作成し、仮想マシンにパブリックIPは付与せずデプロイ)
    • ストレージアカウント
    • LogicApps(Standardプラン)
      • LogicAppsとVMをプライベートIPでアクセスするにはVNET統合が必要となり、LogicAppsのStandardプランを選択頂く必要があります。
      • image.png
  2. ネットワーク設定

    • ストレージアカウント
      • ファイアウォールと仮想ネットワーク
        • 選択した仮想ネットワークとIPアドレスから有効
        • ファイアウォールにクライアントIPアドレスを追加(クライアントからファイルアップロードのテストを行うため)
      • プライベートエンドポイントを作成
    • サブネット
      • ネットワークセキュリティグループを作成している場合はSSHを許可するルールを設定
  3. SFTP設定

    • 仮想マシンOpenSSHをインストール
      • (必要に応じて)SFTP用ユーザーの作成、ルートディレクトリの変更
    • OpenSSH SSH Server サービスのスタートアップ タイプを自動に設定し、サービスを起動
    • コマンド プロンプトでホスト鍵のフィンガープリントを取得(C:\ProgramData\ssh で実行)
      • ssh-keygen -l -E MD5 -f ssh_host_ed25519_key.pub
      • image.png
  4. LogicApps設定
    以下のワークフローを作成 ※公式サイトはこちら

    • ビルトインBlobトリガーコネクタ:When a blob is added or updated
    • ビルトインBlobアクションコネクタ:Read blob content
    • ビルトインSFTPアクションコネクタ:Upload file content
      • 接続情報
        • 接続名:任意
        • SSH host address:サーバー名または IP アドレス
        • Username:接続に使用するユーザー名
        • Password:パスワード
        • Port number:22
        • Host key fingerprint:取得したフィンガープリントを入力
        • ※SSH private key, SSH private key passphrase は今回は使用しない
      • Upload file content アクション
        • File path:Response from read blob action Blob Name(Blob トリガーで取得した Blob 名)
        • Overwrite existing files:はい
        • File content:Response from read blob action Content(Read blob で取得した Blob)

実際にBlobにファイルをアップロードすると1~2秒ほどでワークフローが実行され、どのアクションにどれくらい時間がかかったか確認できます。(エラーになった場合も同じくこの画面でどこでなぜエラーになったか確認できます)

image.png

まとめ

プライベートアクセスが必須かどうかで、どちらのプランを選択するか決まってくると思いますが、まずは従量課金で試して頂き、ワークフロー数が多い場合やスループットを求められる場合にStandardを検討するのがよいかと思います。

従量課金
(マルチテナント)
Standard
(シングルテナント)
基本的な考え方 1つのLogicAppsでは1つのワークフローのみ使用可 1つのLogicAppsで複数のワークフロー使用可
コスト
最初の 4,000 回のアクションは無料

175.16ドル
(WS1:1vCPU/3.5メモリの場合)
コネクタ
ネットワーク パブリックアクセスのみ VNET統合によるプライベートアクセスが可能

あと、細かいですが、Blobコネクタを利用する際に、Blobへの接続情報を入力しますが、ビルトイン コネクタとマネージド コネクタで入力項目が異なります。

  • 従量課金の場合(マネージドコネクタ)
    image.png

「認証の種類」をアクセスキーにした場合、ストレージアカウント名とアクセスキーを入力します。

  • Standardの場合(ビルトインコネクタ)
    image.png

「Authentication type」をアカウントキーにした場合、「Storage account connection string」にはストレージアカウントの"接続文字列"を入力します。

また、Standardでは接続に使用する値をすべてアプリケーション設定で格納するため、Web Apps と同じく、このような秘匿情報は Key Vault に格納して呼び出すようにした方がよりセキュアかと思います。

備考

マイクロソフトが提供しているBizTalk ServerからLogicAppsをはじめとしたAzureサービスへの移行をおススメしています。

5
1
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
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?