【Microsoft Azure】Functionsにプロキシを設定する方法

こんばんは。本日は、Azure Functionsにプロキシを設定する手順の備忘です。

Azure Functionsを複数運用している状況の元で、Proxyを設定することで、Azure Functionsへのアクセス制御、統一されたURL規則をユーザに提供することができます。

Contents

Azure Functions Proxyの作成方法

Azure Functionsを作成している前提とします。

Azure Functionsのプロキシは、Azure Functionsのプロキシ Bladeから簡単に作成することができます。

上の画面で追加を押すと、プロキシの設定画面が開きます。

ここで、

  • ルートテンプレート:なぜこのような呼び方をするか分かりませんが、これがProxyのURLになります。
    (例:”proxy”とすると、Functions AppのURL/proxyが接続URLになります)
  • 許可されているHTTP メソッド:ここで、GET/POSTなどの、メソッドの制限を加えられます。
  • バックエンドURL:Proxyから転送する先のURLです。公式ドキュメントによると、バックエンドURLには、Azure FunctionsのURLでも良いし、外部サイトでも良いようです。

[実験] Azure Functions Proxyを経由したFunctionsの呼び出し

今回は、とてもシンプルな構成でAzure Functions Proxyの動作を確認してみたいと思います。

通信経路:(Client) → (Azure Functions Proxy) → (1つのAzure Functions)

関数の作成

はじめに、ProxyのバックエンドURLとして指定する、HTTPトリガーで起動する関数を作成します。

関数アプリ>関数>追加>HTTP Triggerから作成可能です。(名前は任意)

作成した関数のURLをバックエンドURLに指定

最初のステップで作成した関数のURLを取得します。

続けて、先ほど紹介した手順でAzure Functions Proxyを作成します。

このとき、バックエンドURLに先ほど作成した関数のURLを指定します。

疎通確認

ブラウザを立ち上げて、プロキシのURLを入力します。

すると、先ほど作成した関数のURLが呼び出されて、関数の実行結果が表示されました!

このように、非常に簡単にプロキシを設定することができました。

Azure Functions Proxyのログをトレースする

Proxyが正しく動作していない場合などは、Functions Proxyのログをトレースすると有効な情報が得られるかもしれません。実は、Azure Functions Proxyのログはデフォルトでは有効化されていません。

ここでは、ログ出力を有効化する方法と、そのログを確認する方法を紹介します。

proxy.jsonに”debug”: true設定を追加する

プロキシの”詳細エディター”をクリックすることで、proxy.jsonファイルの編集画面に遷移します。

proxy.jsonファイルは、プロキシを作成した時点で、wwwrootフォルダ直下に作成されます。このファイルに、下記のように”debug”: true設定を追加します。(SampleProxy2の設定は無視してください)

この設定後、一度ProxyのURLをブラウザからたたいて、ログを出力させます。

ログは、以下の”高度なツール”ブレードから、参照できます。

ログは、D:\home\LogFiles\Application\Proxies\DetailedTrace配下に出力されていきます。

中身はこんな感じ。Proxyに入ってきたHTTPリクエストの内容、バックエンドURLに転送されたHTTPリクエストの内容を参照することができます。

以上、Azure Functionsでプロキシを設定する手順の備忘でした!

本日も最後まで御覧いただきありがとうございました!

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT US
Yuu113
初めまして。ゆうたろうと申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。 日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。