静的サイトホスティング

静的サイトを安全・高速・低コストに配信する Google Cloud の最小構成。Cloud Storage にビルド成果物を置き、外部 Application Load Balancer + Cloud CDN を前段に据えるだけで完結する。

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

このパターンは?

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

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

構成

横にスクロール

Cloud DNS、外部Application Load Balancer、Cloud CDN、バックエンドバケット、Cloud Storageを通る静的サイトの閲覧経路と、ハッシュ付き資産を先に配置してindex.htmlを最後に切り替えるデプロイ経路
閲覧時はエッジキャッシュを優先し、ミス時だけCloud Storageから取得します。更新時は内容ハッシュ付き資産を先に配置し、短いTTLのindex.htmlを最後に切り替えると、新旧ファイルの不整合を避けられます。

各コンポーネントの役割

  • Cloud Storage: ビルド成果物を保存するバックエンドバケット。公開サイトでは専用バケットを公開読み取りにし、通常の閲覧経路を ALB に集約する。機密コンテンツは公開サイト用バケットと分離し、署名付き URL / Cookie 等を検討する
  • 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 証明書。自動発行・自動更新で無料
公開バケットの直接URLは迂回経路になる

公開サイトを Cloud Storage のバックエンドバケットから配信する一般的な構成では、オブジェクトを allUsers が読めるようにします。そのため Storage の直接 URL でも取得でき、ロードバランサ側の独自ドメイン・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 で暗号鍵を管理し、ALB 側に Cloud Armor を適用する
  • 運用上の優秀性: Cloud Build や GitHub Actions でビルド→デプロイ→キャッシュ無効化を自動化

よくある落とし穴

アンチパターン
  • 公開サイト用バケットへ機密ファイルや管理用成果物を混在させる
  • 外部 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件

導入後に効く点

静的サイトを安全・高速・低コストに配信する Google Cloud の最小構成。Cloud Storage にビルド成果物を置き、外部 Application Load Balancer + Cloud CDN を前段に据えるだけで完結する。

先に潰すリスク

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

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

判断チェックリスト

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

次に確認する観点

costperformancesecurityoperationalCloud StorageCloud Load BalancingCloud CDNCloud DNS