App EngineとCloud CDNの設定方法まとめ
GCPのApp Engine(GAE)とCloud CDNを合わせて使う方法について、ググってもあまり解説が見つからなかったのでまとめておきます。
GAEとCloud CDNを合わせて使うメリット
GAEにはエッジキャッシュがデフォルトで備わっています。レスポンスのヘッダーでCache-Control: public, max-age=86400
などと指定するだけでレスポンスがGoogleのエッジサーバにキャッシュされます。
残念ながら、このエッジキャッシュについて公式ドキュメントがほとんど見つかりません。
GAEのエッジキャッシュが使えるならCloud CDNは不要では?
GAEのエッジキャッシュは気軽に使えて楽なのですが、キャッシュを明示的に削除することができないという難点があります。アプリの新しいバージョンをデプロイしてもしばらくは古いキャッシュが表示され続けてしまったりするので、本番環境で使うには少し不便だったりします。
Cloud CDNを使うと
- キャッシュを削除可能。コンソールからだけでなく
gcloud
コマンドからも操作ができるため自動化も可能 - stale-while-revalidateにも対応。(GAEのエッジキャッシュでも試してみたが2021年3月の時点では未対応)
- 複数のサービスをまたいで同一のドメインを使用することが可能(例えば
example.com/storage/*
はCloud Storageに、example.com/api/*
はCloud Functionsに、その他をGAEに振り分けるといった設定ができる) - GAE東京リージョンでカスタムドメインを使用したときに生じるレイテンシを抑えられる(詳細)
などのメリットがあります。ちなみに個人的に検証した結果、Cloud CDN 経由で GAEインスタンスにアクセスした場合はGAEのエッジキャッシュは適用されないので、二重でキャッシュされる心配はなさそうです。
GAE + Cloud CDNの設定手順
ドキュメントの通りに設定を行います。以下で手順を紹介しますが、最新の情報はこちらのドキュメントをご確認ください。
GAE の代わりに Cloud Run や CloudFunctions を使った場合もほとんど同じ手順になります。
おおまかな流れ
アプリケーションが既にGAEにデプロイ済みという前提で解説します。
- 外部IPアドレスの予約
- SSL証明書リソースを作成する
- ロードバランサの作成
- ドメインのDNSレコードを更新
Cloud CDNはロードバランサと合わせて使う必要があり、そのぶん設定項目が多くなっています。
1. 外部IPアドレスの予約
まずは外部IPアドレスの予約を行います。後ほどこのIPアドレスに独自ドメインを紐付けることになります。GCPコンソールの外部IPアドレスを開き、以下のように設定をします。
リージョンは「グローバル」にしておきましょう。各項目について詳しくはドキュメントを確認ください。
2. SSL証明書リソースを作成する
SSL証明書の設定を行います。今回はGoogleが自動更新をしてくれるGoogleマネージドの証明書を作成することにします。
GCPコンソールから証明書ページを開き、SSL証明書を作成
します。
Googleマネージドの証明書を選択したうえで、CDNに紐付けたいドメインを入力しましょう。
この部分のドキュメントはこちら。
3. ロードバランサの作成
今回の手順の中でいちばん設定の多い部分です。GCPコンソールの負荷分散を開き、HTTP(S) 負荷分散
を選びます。
1枚ずつスクショを載せようと思ったのですが、項目が多く、今後の表示に変更がある可能性が大なので、ドキュメントにしたがって設定を行なってください。
ポイントは2つあります。
ひとつめは、バックエンドサービスの作成
=>サーバーレスネットワークエンドポイントグループ
で、Cloud CDNと紐付けたいGAEのアプリケーションを選ぶという点です。
ふたつめは、フロントエンドの構成
にて、IPアドレス
の項目でさきほど作成したIPアドレスを選び、証明書
の項目でさきほど作成した証明書を選ぶことです。
4. ドメインのDNSレコードを更新
最後にドメインのDNSレコードを追加します。独自ドメインをGoogleドメインで取っている場合は
https://domains.google.com/registrar/ドメイン/dns
にアクセスするとDNS設定が開きます(変わったらすみません)。
ネームサーバーがGoogle Domains のネームサーバーを使用する
になっていることを確認したうえで、Aレコードを追加します。IPv4アドレス
にはさきほど作成したIPアドレスを入力します。
詳しくはドキュメントをご確認ください。
以上で最低限必要な手順は完了です。正しく設定ができていれば、しばらく時間を置いた後に独自ドメインからGAEのアプリケーションにアクセスできるはずです。
Discussion