ラベル Firebase の投稿を表示しています。 すべての投稿を表示
ラベル Firebase の投稿を表示しています。 すべての投稿を表示

2021/08/07

サブドメインでのGAEアプリ運用

 独自ドメインのサブドメインでGAEアプリを運用する場合について調査したときの、忘備録です。


Google提供のサービスのみでの実現

当初LotteryServは以下の様なY's Software Atelierのサブドメインでの運用を考えていました。


Y's Software Atelier

ドメイン : ys-software-atelier.biz
実体は下記とは違うGAEアプリ、この独自ドメインはGoogle Domainsで取得。

LotteryServ

サブドメイン : lotteryserv.ys-software-atelier.biz
実体はGAEアプリLotteryServ、上記ドメインのサブドメインにしたい。


いきなり結論ですが、このような構成はGoogleから提供されるサービスのみでは出来ないようです。理由はこちらのGoogle DNSのドキュメント「重複するゾーン」の以下の制限です。

重複する一般公開ゾーン同士は、同じ Cloud DNS ネームサーバー上に存在できません。

メインドメイン/サブドメイン共にGAEアプリであり、どちらもドメイン名をGoogle DNSで割り当てようとしているので、上記の制限に該当します。最初から無理でした。他にも複数のサブドメインで複数のGAEアプリを運用するケースも該当しますね。

解決策

この状況を解決しようと思えば、以下の方法があるようです。どちらも私が試したわけではなく、調査のみですが。

Firebase Hostingを併用する

Googleの提供するDNSサービスはGoogle DNSの他にFirebase Hostingもあります。片方をこれに替えれば解決できそうです。
ただしFirebase Hostingを利用するには、スタティックなwebコンテンツのみの実装にする必要があります。コンテンツに動的に動作/表示を変えたい部分があれば、そこはajaxとFirebase Realtime Datebase/Firestore/Cloud Functionsあたりを使用することになると思います。

Google以外のDNSサービスを併用する

Google以外のサービスも併用すればサブドメインでの運用も実現できるようです。これに挑戦した方の記事としては以下が見つかりました。
どちらも独自ドメインをお名前.comで取得しているので、サブドメインはお名前.comのDNSサービスで実現しています。
お名前.comでなくても、MyDNS.JPでも解決できると思われます。MyDNS.JPは無料で利用できるのが利点ですが、1週間ごとに利用の通知が必要です。これはCloud SchedulerとGAEで簡単に実現できますが。

2021/07/29

ログイン/再認証時のドメイン表示について

LotteryServに Eメールアドレス/パスワード以外の方法でログインまたは再認証するとき、以下の画面キャプチャの様にLotteryServではないドメインが表示されます。これは不具合ではなく、正常な動作ですのでご安心ください。



以下、このような表示になる原因について説明します。技術的な内容ですので、興味のある方だけ読んでいただければ十分です。


LotteryServは主にGCPの中の1サービスであるGAEを使って実装していますので、独自ドメインlotteryserv.bizはGAEアプリに接続しています。

その一方でユーザ認証は同じくGCPの中の別のサービスであるIdentity Platformを使用しています。Identity Platformでは「認証ハンドラのカスタマイズ」からリンクされた「カスタムドメインを接続する」に上記ユーザ認証画面で独自ドメインを表示する方法が説明されています。ここを読めばわかるように、上記のユーザ認証画面で独自ドメインを表示するには、独自ドメインをFirebase Hostingに接続する必要があります。

つまり独自ドメインをGAEとFirebase Hostingで奪い合って競合する事態になります。LotteryServでは独自ドメインはGAEに接続し、ユーザ認証画面での独自ドメイン表示は諦めています。

FirebaseはもともとGoogleとは独立した会社であったFirebase社が2011年に開始したサービスだったのですが、2014年にGoogleに買収されてGCPの一員となった経緯があります。そのためFirebase社の名残がいろいろなところにあったり、今回のユーザ認証画面の表示の様に まだGCPに統合しきれていない部分が残っていたりします。

FirebaseがGCPに完全に統合されるまで、この対応は簡単ではないと思われます。


2021/09/27追記

FirebaseAuth.generateEmailVerificationLink()メソッドなどが生成するEメールアドレス確認のリンクも、同様にドメインがFirebaseですね。