目次
はじめに
前回の記事では、WordPressの画像をAmazon S3に自動同期する仕組みを作りました。
あわせて読みたい


WordPress画像をAmazon S3へ自動保存する方法【AWS EC2 + Amazon Linux 2023】
はじめに EC2上で動かしているWordPress(charakatsu.com)の画像ファイルをAmazon S3に自動同期する仕組みを作りました。 画像をS3に移すことで、EC2への負荷を減らし…
今回はその続きとして、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→ メディアライブラリのURLwp_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)← 画像はここから配信!
まとめ
| 項目 | 変更前 | 変更後 |
|---|---|---|
| 画像の配信元 | EC2 | S3 |
| 画像URL | charakatsu.com/wp-content/uploads/ | charakatsu-media.s3.amazonaws.com/wp-content/uploads/ |
| EC2への負荷 | 画像リクエストもEC2が処理 | 画像はS3が処理 |
学習時間は約1時間。DBの書き換え箇所が複数あることに気づくまでが一番時間がかかりました。
次はCloudFront + WordPress高速化に挑戦します!

