AWS LightsailからCloudflare Pagesへ ~静的サイト移行&ホスティング無料化への道筋~

数年間運用してきたAWS Lightsail上のWordPress。重い腰を上げて、ついにCloudflare Pagesへの完全移行を果たしました。

「動的サイト」から「静的サイト」へ。そして「重課金」から「ほぼ無料」へ。

その全記録と、今回ぶつかった手強い壁(難所)を詳しく記録します。

🚀 今回の移行後の新構成

移行前はLightsailのインスタンス2台(WordPress本体とCloudFront用)を運用していましたが、現在は以下のモダンな構成に進化しました。

  • 執筆環境: OCI (Oracle Cloud) 無料インスタンス上のWordPress
  • 静的化: StaticPress プラグイン
  • 公開基盤: Cloudflare Pages(無料)
  • デプロイ: 自作シェルスクリプトによる自動化(Geminiが自作)
  • リダイレクト: AWS S3 + CloudFront (Naked Domain対策)

🛠 苦労したポイント(難所)

今回の作業で特に技術的な試行錯誤が必要だったポイントが3つあります。

1. 「ゾンビIPアドレス」の置換問題

StaticPressで静的ファイルを作成する際、内部リンクにOCIのプライベートIPや旧ドメインが混入する問題が発生しました。

OCIにはセキュリティ上の理由からTailscale経由でのみ入れる設定にしています。Tailscaleが割り当てたIPアドレスが変動する場合があるため、力技で修正するとメンテナンスが困難です。

【解決策】

デプロイ用のシェルスクリプト内で、正規表現(sedコマンド)を駆使し、HTML/CSS内に含まれるIPアドレスを一括で本番ドメイン(www.can.ne.jp)に置換する処理を自動化しました(Geminiが)。これにより、デプロイ時に生IPアドレスが混入する問題を解消しました。

2. AWSの重課金リソースの完全削除

Lightsailはインスタンスを消しただけでは課金が止まらない場合があります。「静的IP」や「ディストリビューション」が残っていると月額数千円の請求が続くため、AWSコンソールの奥深くまで潜り込み、全てを綺麗に掃除(Terminate)しました。

3. DNS移管なしでの「wwwなし」リダイレクト

DNS(Route 53)の管理をAWSに残したまま、can.ne.jp(wwwなし)を www.can.ne.jp へ飛ばす設定が最後の難関でした。

Lightsailを消してしまったため、S3バケットの「静的ウェブサイトホスティング」とCloudFrontを組み合わせた「転送専用ゲートウェイ」を構築。CloudFront用のSSL証明書はバージニア北部(us-east-1)に置く必要があるという罠も、ACMの再発行で乗り越えました。


💡 移行を終えて

今回の移行で、Lightsailの固定費(約40ドル/月〜)とおさらばすることができました。たかが個人サイトで月5000円以上も課金させられるなんて有り得ません。AWS側も貧乏人を追い出すつもりだったはずですので、これでお互いWin-Winです。

化石のようなPHPで構築されたWordPressを外部に公開していないという安心感は大きいです。本当はCMS自体を現代的なものに置き換えたいところですが、生成AI全盛時代に個人サイトで四苦八苦するのも時代遅れなので、いったんWordPressのスタティック化でお茶を濁そうと思います。

なお、移行作業(nanoなどで設定ファイルを山ほど書き換え)や移行後の運用(シェルからデプロイコマンドを実行)はAIの助けがあっても数年程度のLinuxシェル使用経験がないと厳しいので、「
自ら進んで地獄を見たい(システム運用の経験を積んで成長したい)」ということでない限り、ただのアフィリエイトブロガーの方は真似しない方が身のためです。


編集後記

もし同じようにAWSの課金に悩んでいる方がいたら、Cloudflare Pagesの静的サイトへの移行は最安の選択肢の一つです。

設定はとても複雑ですが、一度組んでしまえば基本無料でブログを運用できます。生成AI全盛である今はもうブログで儲かるような時代ではないので、運用費も無料にしましょう。それが無理ならブログはやめてZennなりnoteなりで埋もれながらコンテンツを運用するのが「コスパが良い生き方」というものです。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です