はじめに
Azure Static Web Appsにはエンタープライズ グレードのエッジを統合できる仕組みがあります。ここでいうエンタープライズグレードのエッジとは、Azure Static Web Apps、Azure Front Door、Azure Content Delivery Network (CDN) の機能をセキュリティで保護された 1 つのクラウド CDN プラットフォームに統合することと書かれています。
-
Azure Static Web Apps のエンタープライズ レベルのエッジ | Microsoft Learn
Azure Static Web Apps エンタープライズグレード エッジについて説明します。
docs.microsoft.com
これら3つの機能を統合することで、5つの機能を有効に利用できます。
- 100 都市に及ぶ 118 か所以上のエッジ ロケーションでのグローバル プレゼンス。
- エッジでのアセットのキャッシュ。
- 分散型サービス拒否 (DDoS) 攻撃からの予防的保護。
- エンド ツー エンドの IPv6 接続と HTTP/2 プロトコルのネイティブ サポート。
- 最適化されたファイル圧縮。
キャッシュ機能の制御はstaticwebapp.config.jsonで行われるためポータルから設定することができません。現状、それしか設定できないようです。
様々な設定を行いたい場合には、エンタープライズ グレードのエッジを有効化するのではなく、手動でFront Doorを構成することをお勧めします。
注意:エンタープライズ グレードのエッジについてはプレビューになります。その為、今後機能の仕様変更や削除が行われる場合があります。
条件
以下の条件でStatic Web Appsが構築されている必要があります。
- プランがStandardである
- カスタムドメインが割り当てるられている
- プライベートエンドポイントを設定していない
下記のようなエラーがでます。
構築
設定はいたって簡単です。
有効化にチェックを入れて保存します。
すぐに反映されると思います。
これ以上、ポータルに変化はありません。
実際に有効化されているかを確認します。
digコマンドで調査します。ドメインに割り当てられているCNAMEからFront Doorが利用されていることが分かります。
<pre>$ dig webapp1.server01.pw</pre>
; <<>> DiG 9.16.1-Ubuntu <<>> webapp1.server01.pw
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41924
;; flags: qr rd ad; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;webapp1.server01.pw. IN A
;; ANSWER SECTION:
webapp1.server01.pw. 0 IN CNAME white-sand-0f3e5b10f.1.azurestaticapps.net.
white-sand-0f3e5b10f.1.azurestaticapps.net. 0 IN CNAME staticwebappsc50f287b541e41e0857f4b0efa74c528.z01.azurefd.net.
staticwebappsc50f287b541e41e0857f4b0efa74c528.z01.azurefd.net. 0 IN CNAME star-azurefd-prod.trafficmanager.net.
star-azurefd-prod.trafficmanager.net. 0 IN CNAME dual.part-0018.t-0009.t-msedge.net.
dual.part-0018.t-0009.t-msedge.net. 0 IN CNAME part-0018.t-0009.t-msedge.net.
part-0018.t-0009.t-msedge.net. 0 IN A 13.107.246.46
part-0018.t-0009.t-msedge.net. 0 IN A 13.107.213.46
;; Query time: 410 msec
;; SERVER: 172.18.64.1#53(172.18.64.1)
;; WHEN: Sun May 08 03:38:57 JST 2022
;; MSG SIZE rcvd: 562</pre>
統合されていないStatic Web Appsを確認します。こちらはFront Doorを利用していないことが分かります。
<pre>$ dig purple-mud-070068e0f.1.azurestaticapps.net
; <<>> DiG 9.16.1-Ubuntu <<>> https://purple-mud-070068e0f.1.azurestaticapps.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8412
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;https://purple-mud-070068e0f.1.azurestaticapps.net. IN A
;; ANSWER SECTION:
https://purple-mud-070068e0f.1.azurestaticapps.net. 600 IN CNAME azurestaticapps1.trafficmanager.net.
azurestaticapps1.trafficmanager.net. 60 IN CNAME msha-slice-1-hk1-0.msha-slice-1-hk1-0-ase.p.azurewebsites.net.
msha-slice-1-hk1-0.msha-slice-1-hk1-0-ase.p.azurewebsites.net. 30 IN CNAME waws-prod-hk1-9687de8d.sip.p.azurewebsites.windows.net.
waws-prod-hk1-9687de8d.sip.p.azurewebsites.windows.net. 300 IN A 52.175.64.109
;; Query time: 130 msec
;; SERVER: 172.18.64.1#53(172.18.64.1)
;; WHEN: Sun May 08 03:42:55 JST 2022
;; MSG SIZE rcvd: 278</pre>
また、気になった点としてStatic Web Appsにカスタムドメインではなく直接アクセスした場合です。これはCDNと統合されているため起こる問題です。何か気持ちわるいですね。
当然これはエンタープライズ グレードのエッジを有効化しない場合には起きない現象です。
まとめ
エンタープライズ グレードのエッジの有効化を試してみました。パフォーマンスやDDosの検証が行えないので、あまり有効化の恩恵を確認することはできませんでした。しかしエンタープライズ グレードのエッジはFront Door、CDNなど管理したくないという環境向けだと思います。また、費用に関しても月単位で課金されることや、機能別に考えた場合、手動で設定するよりも割高になる場合もあると考えられます。状況にあった利用方法を行う必要があると思います。