MENU
オンライン講座開催中

【EC2 + Amazon Linux 2023】WordPressの画像URLをS3に書き換える方法【DB直接編集】

【EC2 + Amazon Linux 2023】WordPressの画像URLをS3に書き換える方法【DB直接編集】
目次

はじめに

前回の記事では、WordPressの画像をAmazon S3に自動同期する仕組みを作りました。

今回はその続きとして、WordPressの画像URLをS3のURLに書き換えて、画像をS3から直接配信する設定をやっていきます。


小学生でもわかる説明

前回までの状態はこうでした。

画像はS3に保存されている
でもWordPressは「EC2のサーバーから画像を取ってきて」と指示している

今回やることはこれです。

WordPressに「S3から画像を取ってきて」と指示を変える

住所変更通知みたいなものです。荷物(画像)は新しい場所(S3)にあるのに、古い住所(EC2)を案内していた状態を直します。


今回やったこと

① wp_postsのguidをS3のURLに書き換え
② wp_postmetaの_wp_attached_fileを書き換え
③ wp_postsのpost_contentを書き換え
④ キャッシュクリア
⑤ 動作確認

前提条件

  • EC2上にWordPressが動いている
  • S3バケット(charakatsu-media)が作成済み
  • 画像がS3に同期済み
  • RDS(MySQL)を使っている

実際にやったこと

① wp_postsのguidを書き換え

まず現在の画像URLを確認します。

bash

mysql -h [RDSエンドポイント] -u wpuser -p'パスワード' wordpress \
  -e "SELECT guid FROM wp_posts WHERE post_type='attachment' LIMIT 5;"

https://charakatsu.com/wp-content/uploads/ になっているのを確認したら書き換えます。

bash

mysql -h [RDSエンドポイント] -u wpuser -p'パスワード' wordpress \
  -e "UPDATE wp_posts SET guid = REPLACE(guid, \
  'https://charakatsu.com/wp-content/uploads/', \
  'https://charakatsu-media.s3.ap-northeast-1.amazonaws.com/wp-content/uploads/') \
  WHERE post_type='attachment';"

② wp_postmetaの_wp_attached_fileを書き換え

bash

mysql -h [RDSエンドポイント] -u wpuser -p'パスワード' wordpress \
  -e "UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, \
  'https://charakatsu.com/wp-content/uploads/', \
  'https://charakatsu-media.s3.ap-northeast-1.amazonaws.com/wp-content/uploads/') \
  WHERE meta_key='_wp_attached_file';"

③ wp_postsのpost_contentを書き換え

投稿本文に直接書き込まれているURLも書き換えます。

bash

mysql -h [RDSエンドポイント] -u wpuser -p'パスワード' wordpress \
  -e "UPDATE wp_posts SET post_content = REPLACE(post_content, \
  'https://charakatsu.com/wp-content/uploads/', \
  'https://charakatsu-media.s3.ap-northeast-1.amazonaws.com/wp-content/uploads/');"

④ キャッシュクリア

WP-CLIでキャッシュをクリアします。

bash

wp --allow-root --path=/var/www/html/wordpress cache flush

動作確認

ブラウザのシークレットモードで https://charakatsu.com を開いて、画像を右クリック → 「画像アドレスをコピー」で確認します。

✅ 成功
https://charakatsu-media.s3.ap-northeast-1.amazonaws.com/wp-content/uploads/2026/05/xxx.png

❌ まだEC2
https://charakatsu.com/wp-content/uploads/2026/05/xxx.png

ハマったポイント

guidだけ書き換えても反映されない

wp_postsのguidを書き換えただけでは画像URLが変わりませんでした。

WordPressは画像URLを複数の場所に保存しています。

  • wp_posts.guid → メディアライブラリのURL
  • wp_postmeta._wp_attached_file → ファイルパス
  • wp_posts.post_content → 投稿本文に直接書き込まれたURL

3箇所すべて書き換えて初めて反映されます。


やったこと まとめ

① wp_posts.guidをS3 URLに書き換え ② wp_postmeta._wp_attached_fileを書き換え ③ wp_posts.post_contentを書き換え ④ キャッシュクリア ⑤ S3 URLで画像が配信されることを確認


完成した構成

ユーザー
  ↓ HTTPS
CloudFront
  ↓ HTTPS
EC2(Apache + PHP + WordPress)
  ↓ 画像URLはS3を参照
S3(charakatsu-media)← 画像はここから配信!

まとめ

項目変更前変更後
画像の配信元EC2S3
画像URLcharakatsu.com/wp-content/uploads/charakatsu-media.s3.amazonaws.com/wp-content/uploads/
EC2への負荷画像リクエストもEC2が処理画像はS3が処理

学習時間は約1時間。DBの書き換え箇所が複数あることに気づくまでが一番時間がかかりました。

次はCloudFront + WordPress高速化に挑戦します!

  • URLをコピーしました!
目次