Google Cloud Storageで静的サイト公開
— Google Cloud — 3 min read
静的サイトの引っ越し。
AWS S3 + CloudFront + Route53からGoogle Cloud Storage + Cloud DNSへ乗り換え。
ドメインはお名前ドットコムで取得管理。
Google Cloudでロードバランサを作成
IPアドレス、SSL証明書を設定
Cloud CDNを有効
Cloud Storageで静的サイト用のバケットを作成
Cloud DNSでゾーン作成
デフォルトでSOAレコード、NSレコードがある
MXレコードをRoute53と同じにする
Aレコードを作って値をロードバランサ設定で作ったIPアドレスにする
お名前ドットコムのネームサーバー情報を更新
Route53のNS情報になっていたのをCloud DNSのNSレコードに設定
暫し待つ
GoogleマネージドSSL証明書のドメインステータス
3日目でもSSL証明書のドメインステータスがFAILED_NOT_VISIBLEのまま。
更新された DNS A レコードと AAAA レコードが完全に伝播されるまで、かなり時間がかかることがあります。通常は数時間程度ですが、インターネットを介した反映には最長で 72 時間かかることもあります。ドメイン ステータスは 、伝播が完了するまで FAILED_NOT_VISIBLE になります。
インターネットを介した反映には最長で 72 時間とある。
伝播が完了するまで FAILED_NOT_VISIBLEになるとも。
他の設定を見直しても問題なさそうなので念の為Route53のゾーンを削除。
一晩待って4日目でSSL証明書のドメインステータスがACTIVEになった。
Gatsbyで静的サイト作成
ローカルでビルドしてpublicディレクトリにサイトを出力
publicディレクトリと公開バケットを同期
gcloud storage rsyncコマンドがないっていわれる
gsutil rsyncの方でデプロイ
"scripts": { ... "clean": "gatsby clean", "deploy": "gatsby build && gsutil -m rsync -r public gs://niiyz.com" },
バケットをallUsersに「Storage オブジェクト閲覧者 」を与えてインターネットに公開
バケットのウェブサイトの構成を編集してインデックスをindex.html
エラーを404.htmlに設定して完了
キャッシュ
デプロイしても更新されなかったらCloud CDNのキャッシュが効いている
急ぎの場合はCloud CDNからロードバランサに紐付いているバケットのキャッシュを無効化
トップページのみなら/index.html、全部なら/ 指定
料金
数日運用してみたもののロードバランサの料金が結構高い
1日90円くらいはかかるのでGoogle App Engineへ移行