App Service Environmentでバックエンドと通信できない

App Service Environment(日本語名:App Service 環境)を使うとVNET(v1)※現状 に接続することができます。
普通のApp Serviceと違ってClosedな環境にしたり、VNETにつなげられるということはVPNであれこれしたりできるわけです。

なので内部用で外には公開したくないSQL Serverな仮想マシンとかVNET参加させたRedis(Premium)とかと合わせて完全VNETオンリーな環境が作れるわけですが、VNETの注意点として以下のように記載されています。

App Service 環境からバックエンド リソースへの安全な接続
App Service 環境から仮想ネットワーク内のエンドポイントへの送信トラフィックには、注意すべき点が 1 つあります。App Service 環境から、App Service 環境と同じサブネットにある仮想マシンのエンドポイントに到達することはできません。App Service 環境が、App Service 環境専用として予約されているサブネットにデプロイされていれば、通常、これは問題にはなりません。

クラシックなVNET(v1)の制限なのかNSGの制限なのか、はっきりとわかりませんでしたがApp Service Environmentと同じサブネット上の他の機器とうまく通信できないようです。

なので教訓としてApp Service Environmentは専用Subnetに配置しましょう。(作るのが大変なのでこちらを専用化したほうが楽でしょう。CIDRの都合もあるかもしれないし)

さてさて、そうは言ってもそこを何とかならないですか?というのが世の常ですね。
一応泥臭い回避策はないことはないのですが、、、

簡単に言うとApp Service EnvironmentのWorkerPoolであるWeb Appsの設定で明示的にVNETに参加させるという感じです。
この機能そのものは通常のApp Serviceでもある機能で、VNETにPoint to Site接続でVPN接続する機能です。
image

同じVNETにいるくせにVPNを張らないといけないとは!w(おまけにPoint to Siteの設定がVNET側にも必要です)
ということで結局大変でしかも余計な口ができてしまうので、あきらめて作り直したほうがいいかと思います。

まとめ

ネットワークの設計は慎重に。ドキュメントは穴があくほど見まくりましょう。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中