TL

静的サイトホスティング

Cloud Storage にビルド成果物を置き、外部 Application Load Balancer + Cloud CDN で安全・高速・低コストに配信する Google Cloud の最小構成。

基礎コスト最適化パフォーマンス効率セキュリティ運用上の優秀性

このパターンは?

HTML/CSS/JS(や SPA、静的サイトジェネレータの出力)を、サーバーレスで世界配信する Google Cloud の最小・最安構成。Cloud Storage に成果物を置き、外部 Application Load Balancer(外部 ALB)に Cloud CDN を有効化して、Google のグローバルエッジから HTTPS 配信します。

AWS の「S3 + CloudFront」に相当しますが、Google Cloud では CDN が独立製品ではなく外部 ALB の機能である点が最大の違いです。

構成

[ユーザー]
   │ HTTPS
   ▼
Cloud DNS (A/AAAA → Anycast IP)
   │
   ▼
外部 Application Load Balancer
  ├─ グローバル静的 IP(Anycast, IPv4/IPv6)
  ├─ Google マネージド SSL 証明書(TLS 終端)
  ├─ URL マップ(パス/ホストのルーティング)
  └─ Cloud CDN(--enable-cdn / バックエンドバケット)
        │  キャッシュフィル
        ▼
   バックエンドバケット → Cloud Storage(ビルド成果物)

CI/CD: Cloud Build / GitHub Actions ─(build)→ out/
        ─(gcloud storage rsync)→ バケット
        ─(invalidate-cdn-cache)→ Cloud CDN

各コンポーネントの役割

  • Cloud Storage: ビルド成果物を保存するバックエンドバケット均一なバケットレベルのアクセスを有効にし、公開せず ALB 経由で読ませる
  • Cloud Load Balancing: 外部 ALB がグローバル Anycast IP・HTTPS 終端・ルーティングを担う。Cloud CDN を有効化する「入れ物」
  • Cloud CDN: バックエンドバケットに --enable-cdn を付け、Google のエッジ(PoP)でキャッシュ配信
  • Cloud DNS: 独自ドメインを LB の**静的 IP(A/AAAA)**に向ける
  • Google マネージド SSL 証明書: LB にアタッチする TLS 証明書。自動発行・自動更新で無料
バケット全公開はNG

Cloud Storage を allUsers に公開して直接配信するのはアンチパターン。外部 ALB + バックエンドバケット経由なら、**HTTPS・独自ドメイン・CDN・WAF(Cloud Armor)**が使え、バケットも公開せずに済みます。

AWS との対応

役割Google CloudAWS
オブジェクト保管Cloud Storage バケットS3 バケット
CDN / エッジ配信Cloud CDN(外部 ALB の機能)CloudFront(独立製品)
HTTPS / ルーティング外部 Application Load BalancerCloudFront ディストリビューション
TLS 証明書Google マネージド SSL 証明書ACM(us-east-1)
DNSCloud DNSRoute 53
キャッシュ削除invalidate-cdn-cacheInvalidation

設計の勘所

  • デプロイは build → バケットへ rsync → Cloud CDN を invalidate
  • キャッシュはファイル名にハッシュを付け、index.html短い TTL(または毎回 invalidate)に
  • バケットのオブジェクトに Cache-Control を設定し、Cloud CDN のキャッシュモードを USE_ORIGIN_HEADERS にすると制御しやすい
  • バックエンドバケットには --enable-cdn のほか、ディレクトリ URL(/gcp/)を index.html に解決するためカスタムレスポンスヘッダや 404/301 リダイレクトの設計を検討
  • IPv4/IPv6 両対応にするならグローバル静的 IP を IPv4・IPv6 で 2 つ確保し、A/AAAA を両方登録
まず軽く試すなら

独自ドメイン・CDN が不要な検証段階なら、Cloud Storage 単体の静的ウェブサイト機能index.html/404.html 指定)でも公開できます。ただし HTTP のみ・独自ドメインの HTTPS には別途 LB が必要なので、本番は外部 ALB 構成に寄せます。

Well-Architected の観点

  • コスト最適化: サーバーレスで固定費が小さい。Cloud CDN のキャッシュヒットでオリジンの下り(egress)と Cache Fill を削減
  • パフォーマンス効率: Google のグローバルエッジ+プライベートバックボーンで低遅延配信
  • セキュリティ: バケット非公開+ALB 経由、HTTPS 必須。必要なら Cloud KMSCMEK でバケット暗号化、Cloud Armor で WAF/DDoS 対策
  • 運用上の優秀性: Cloud Build や GitHub Actions でビルド→デプロイ→キャッシュ無効化を自動化

よくある落とし穴

アンチパターン
  • Cloud Storage を allUsers 公開で直接配信し、HTTPS・独自ドメイン・CDN を諦める
  • 外部 ALB を介さず Cloud CDN を使おうとする(CDN は外部 ALB の機能で、単体では有効化できない)
  • デプロイ後に Cloud CDN の invalidate を忘れ、エッジに古いコンテンツが残る
  • Google マネージド SSL 証明書を使う際、DNS を LB の IP に向ける前にプロビジョニングが完了せず証明書が FAILED/PROVISIONING のまま

アクセス分析・配信状況の監視は Cloud Monitoring と Cloud CDN/LB のログ(Cloud Logging)で行います。

Google Cloud Pattern

静的サイトホスティングを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

cost

比較で見る軸

クラウド: Google Cloud / 難易度: basic / 関連サービス: 6件

導入後に効く点

Cloud Storage にビルド成果物を置き、外部 Application Load Balancer + Cloud CDN で安全・高速・低コストに配信する Google Cloud の最小構成。

先に潰すリスク

パターンをそのまま写すのではなく、可用性、権限、ネットワーク境界、運用手順を自分の要件に合わせる必要がある。

数字・仕様の読み方
クラウド
Google Cloud
難易度
basic
関連サービス
6件
設計柱
cost / performance / security / operational

判断チェックリスト

  • 自社の用途が「cost / performance」に近いか確認する。
  • 強みである「Cloud Storage にビルド成果物を置き、外部 Application Load Balancer + Cloud CDN で安全・高速・低コストに配信する Google Cloud の最小構成。」が本当に評価軸になるか確認する。
  • 注意点の「パターンをそのまま写すのではなく、可用性、権限、ネットワーク境界、運用手順を自分の要件に合わせる必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

costperformancesecurityoperationalCloud StorageCloud Load BalancingCloud CDNCloud DNS