0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【S3/CloudFront】画像を配信する

Last updated at Posted at 2025-10-26

記事一覧

前回記事

全体像

AWS S3.drawio.png
WordPressから画像を投稿したら、S3に保存されるようにする。
画像の配信もS3から行うようにする。
CloudFrontを利用して画像をキャッシュできるようにして配信を高速化する。

画像の保存場所をWebサーバーではなくS3にする理由

  • Webサーバーのストレージが画像でいっぱいになるのを防ぐ
  • HTMLへのアクセスと画像へのアクセスを分けることで負荷分散する
  • サーバーの台数を増やしやすくする
    • Webサーバー上に画像が保存されていると、Webサーバーの台数を増やしたときに、画像を同期する必要があり、スケールアウトが難しい
  • コンテンツ配信サービスから配信することで、画像配信を高速化できる

AWS側の準備

S3のバケット作成

S3ダッシュボードに移動し、バケットを作成をクリック
FireShot Capture 056 - ホームページ - S3 - ap-northeast-1 - [ap-northeast-1.console.aws.amazon.com].png
バケット名:aws-and-infra-wp21301(グローバルで一意になるように設定する)
オブジェクト所有者:ACL 有効を選択
「パブリックアクセスをすべて ブロック」のチェックを外す
バケットを作成をクリック
FireShot Capture 079 - S3 バケットを作成 - S3 - ap-northeast-1 - [ap-northeast-1.console.aws.amazon.com].png
FireShot Capture 061 - S3 バケットを作成 - S3 - ap-northeast-1 - [ap-northeast-1.console.aws.amazon.com].png
FireShot Capture 062 - S3 バケットを作成 - S3 - ap-northeast-1 - [ap-northeast-1.console.aws.amazon.com].png

S3の権限を持ったIAMユーザーを作成

IAMダッシュボードに移動し、左のタブからユーザーを選択
ユーザーの作成をクリック
FireShot Capture 063 - ユーザー - IAM - Global - [us-east-1.console.aws.amazon.com].png
ユーザー名:自分で入力
次へをクリック
FireShot Capture 064 - ユーザーの作成 - IAM - Global - [us-east-1.console.aws.amazon.com].png
許可のオプション:ポリシーを直接アタッチする
許可ポリシーの検索窓に「S3」を入力
「AmazonS3FullAccess」にチェックを入れる
次へをクリック
ユーザーの作成をクリック
FireShot Capture 065 - ユーザーの作成 - IAM - Global - [us-east-1.console.aws.amazon.com].png
作成したIAMユーザーをクリック
中段にあるアクセスキーを作成をクリック
FireShot Capture 071 - aws-andinfra-wp-admin - IAM - Global - [us-east-1.console.aws.amazon.com].png
ユースケースを選択し、確認にチェックを入れる
次へをクリック
アクセスキーを作成をクリック
FireShot Capture 072 - アクセスキーを作成 - IAM - Global - [us-east-1.console.aws.amazon.com].png
アクセスキーとシークレットアクセスキーを保存・管理しておく
FireShot Capture 073 - アクセスキーを作成 - IAM - Global - [us-east-1.console.aws.amazon.com].png

WordPressの設定

プラグインをインストール

WordPress管理画面を表示する

  • Webブラウザで「http://[パブリックIPアドレス]/wp-admin/」に移動

左のプラグインタブ→プラグインを追加をクリック
FireShot Capture 066 - ダッシュボード ‹ test — WordPress - [52.192.133.38].png
プラグインの検索窓に「WP offload media」を入力
「Amazon S3、DigitalOcean Spaces、Google Cloud Storage 用の WP Offload Media Lite」を今すぐインストール
有効化をクリック
FireShot Capture 067 - プラグインを追加 ‹ test — WordPress - [52.192.133.38].png
FireShot Capture 068 - プラグイン ‹ test — WordPress - [52.192.133.38].png

必要なライブラリをEC2にインストール

Tera TermでWebサーバーにログインする
必要なライブラリをEC2にインストール

sudo yum install -y php-xml
sudo yum install -y php-gd

Apacheを再起動

sudo systemctl restart httpd.service

プラグインの設定

WordPress管理画面を表示する
左の設定タブ→WP Offload Mediaを選択
FireShot Capture 069 - WP Offload Media Lite ‹ test — WordPress - [52.192.133.38].png
3. Add Credentialsのコードをコピーする
FireShot Capture 070 - WP Offload Media Lite ‹ test — WordPress - [52.192.133.38].png
Tera Termで/var/www/html/ディレクトリに移動する

cd /var/www/html/

nanoエディタでwp-config.phpを編集する

nano wp-config.php

defineが記述されている所にコピーしたコードを貼り付ける
TeraTerm1.png
'access-key-id'と'secret-access-key'(WordPressからS3にアクセスするためのIAMユーザーの認証情報)に、作成したIAMユーザーのアクセスキーを入力する
TeraTerm2.png
WordPress管理画面のWP Offload Mediaページを再表示する
Browse existing bucketsを選択し、作成したバケットを選択する
Saveをクリック
FireShot Capture 074 - WP Offload Media Lite ‹ test — WordPress - [52.192.133.38].png
サーバー側の画像を削除してサーバーの容量を節約するため、Remove Local Mediaにチェックを入れる
Saveをクリック
FireShot Capture 075 - WP Offload Media Lite ‹ test — WordPress - [52.192.133.38].png

動作確認

左の投稿タブから投稿一覧をクリック
編集をクリック
FireShot Capture 077 - 投稿 ‹ test — WordPress - [52.192.133.38].png
画像をアップロードする
保存をクリック
Webページに画像が表示されたら成功
FireShot Capture 078 - 投稿を編集 “Hello world!” ‹ test — WordPress - [52.192.133.38].png

CloudFrontから配信する

ディストリビューションの作成

CloudFrontダッシュボードに移動し、CloudFrontディストリビューションを作成をクリック
FireShot Capture 080 - ディストリビューション - CloudFront - Global - [us-east-1.console.aws.amazon.com].png
Distribution name:自分で入力
FireShot Capture 082 - ディストリビューション - CloudFront - Global - [us-east-1.console.aws.amazon.com].png
FireShot Capture 083 - ディストリビューション - CloudFront - Global - [us-east-1.console.aws.amazon.com].png
FireShot Capture 084 - ディストリビューション - CloudFront - Global - [us-east-1.console.aws.amazon.com].png
FireShot Capture 085 - ディストリビューション - CloudFront - Global - [us-east-1.console.aws.amazon.com].png
Create distributionをクリック
FireShot Capture 086 - ディストリビューション - CloudFront - Global - [us-east-1.console.aws.amazon.com].png
作成したCloudFrontディストリビューションのDomain nameをコピーしておく
FireShot Capture 089 - ディストリビューション - CloudFront - Global - [us-east-1.console.aws.amazon.com].png
WP Offload Mediaの設定→Delivery Settings→Editをクリック
Amazon CloudFrontを選択
FireShot Capture 087 - WP Offload Media Lite ‹ test — WordPress - [3.112.243.147].png
WP Offload Mediaの設定→Delivery Settings→Use Custom Domain NameにコピーしたDomain nameを貼り付け
Saveをクリック
FireShot Capture 090 - WP Offload Media Lite ‹ test — WordPress - [3.112.243.147].png

次の記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?