静的サイトホスティング
静的サイトを安全・高速・低コストに配信する 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 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 証明書。自動発行・自動更新で無料
公開サイトを Cloud Storage のバックエンドバケットから配信する一般的な構成では、オブジェクトを allUsers が読めるようにします。そのため Storage の直接 URL でも取得でき、ロードバランサ側の独自ドメイン・Cloud Armor・ログ設計を迂回できます。公開物だけを専用バケットへ分離し、機密データを同居させないでください。
AWS との対応
| 役割 | Google Cloud | AWS |
|---|---|---|
| オブジェクト保管 | Cloud Storage バケット | S3 バケット |
| CDN / エッジ配信 | Cloud CDN(外部 ALB の機能) | CloudFront(独立製品) |
| HTTPS / ルーティング | 外部 Application Load Balancer | CloudFront ディストリビューション |
| TLS 証明書 | Google マネージド SSL 証明書 | ACM(us-east-1) |
| DNS | Cloud DNS | Route 53 |
| キャッシュ削除 | invalidate-cdn-cache | Invalidation |
設計の勘所
- デプロイは
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 KMS の CMEK で暗号鍵を管理し、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、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。