概要
タイトルの通りなのですが日本語記事がなかったのでまとめておきます。
経緯
の対応でGooglePlayの定期購読ユーザの購読状態をリアルタイムに更新するため、Real-time developer notificationsを導入しました。
その際Pub/SubのPush型Subscriptionでリアルタイムにwebhookが飛ぶようにPush型のSubscriptionを設定したのですが、Google Domains管理下に無い独自ドメインだとINVALID_ARGUMENT
というエラーが出ていました。
日本語だとエラーがより分かりにくかった記憶です。残念ながらスクショ等撮っておらず覚えてません。
ググって見ると以下の記事がヒットし、ドメインの認証が必要であることが分かりました。
ドキュメントにも以下のように書いてあります。
Cloud Pub/Sub では、望ましくないトラフィックを防止するために、push エンドポイントの所有権を検証する必要があります。次のものを除き、エンドポイントでは後続の手順を実行する必要があります。
Using push subscriptions | Cloud Pub/Sub Documentation | Google Cloud
Pub/Subは大量のメッセージを扱えるため、好き勝手にエンドポイントを設定できたらそれだけでDoS攻撃ができてしまいますし当然といえば当然な制限ですね。
手順
大きく2つのステップを踏みます。
1. ドメイン認証をする
まず以下のURLに飛びます。
https://console.cloud.google.com/apis/credentials/domainverification
そしてドメインの追加
を押します。
以下のポップアップが出るのでドメインを入力せずに、Search Console
のリンクをクリックします。
2019/02から新しいコンソールができたので、新しいSearch Consoleを使用する
をクリック
左ハンバーガーメニューからプロパティの追加
をクリック
以下のようにこのTXTレコードを追加してね
と指定されるので
自分の独自ドメインのDNSの設定に上記のTXTレコードを追加します。
追加してdigで確認できたら
$ dig xxx.yyy txt ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;xxx.yyy. IN TXT ;; ANSWER SECTION: xxx.yyy. 3600 IN TXT "google-site-verification=hogehoge-fugafuga"
先程のダイアログの確認
ボタンを押します。
すると確認完了のダイアログが表示されます。
2. Webhookに使うサブドメインの登録をする
先程サブドメインを入力しなかった画面で、今度は登録して追加ボタンを押します。
するとドメインが登録され、SubscriptionのPushのエンドポイントとして利用することができるようになります。
まとめ
一度ドメイン認証をしてしまえばサブドメインはさくっと追加することが可能です。
ただ新しいドメインの場合は都度認証が必要になります。
Push型はPull型と違ってハンドリングしやすくリアルタイム性も担保できるので是非活用したいですね。