WordPressでメディアの保存先をAmazon S3にする
WordPressのメディア保存先としてAmazon S3を使うと色々メリットがあります。今回は、その設定をしていきます。
更新日: 2019.12.11公開日: 2017.8.21
作業の前に
前提条件
文中では、
- URL:example.com
- 画像用のURL:cdn.example.com
とします。それぞれ、ご自身のドメインに置き換えて読んでください。
また、前提として、
- Amazon S3に会員登録済み
- WordPress用のバケットを設定済み
- CDNはCloudFlareを使う & 登録・設定済み
という条件で進めます。もし、これらがまだの方は個別に設定してください。
Amazon S3のバケット名は、ドメイン名になっている必要があるので(この場合はcdn.example.com)、もし別名でバケットを作ってしまっている場合は、新規でバケットを作って、中身をコピーしておいてください。
全体の流れ
全体の流れとしては、
- Amazon S3で必要な設定をする
- CDNの設定をする
- WordPressで設定をする
という流れになります。
それでは、はじめていきましょう。
実装する
AWSでAmazon S3のバケットをホスティング設定
まずは、Amazon S3のバケットをCloudFlareのCNAMEで転送できるように、ホスティング設定をします。
- S3に入る
- バケット「cdn.example.com」を選択する
- Static website hostingを有効化(このバケットを使用してウェブサイトをホストするを選択)
- インデックスドキュメント(特に指定がないなら「index.html」)を入力する
- エラードキュメント(特に指定がないなら「error.html」)を入力する
- 保存ボタンを押す
- もう一度「Static website hosting」を選択して、表示されるエンドポイントのURLをコピーする
これで、前準備が完了しました。
あとは、次の項にあるCloudFlareでの設定をすれば、cdn.exmaple.comというドメインにアクセスすると、Amazon S3のバケットにアクセスされるようになります。
CloudFlareでcdn.example.com -> Amazon S3のバケットの転送設定をする
次に、CloudFlareで、cdn.example.com -> Amazon S3バケットの転送設定をします。
- DNSタブをクリック
- レコード種類(デフォルトではA)を「CNAME」にする
- Nameを「cdn」とする
- Domain Nameに、その1の7でコピーしたエンドポイントのURLを入力する(http://は消す)
- Add Recordをクリック
これで、cdn.example.com = Amazon S3のcdn.example.comバケット、となりました。
WordPressで、メディアの保存先をAmazon S3に設定する
ここからようやく、WordPress内での作業となります。
- プラグイン「Amazon Web Services」と「WP Offload S3 Lite」をインストール&有効化
- Amazon Web Services用に、wp-config.phpに以下のコードを追記する(場所は一番下でOK)
define( ‘DBI_AWS_ACCESS_KEY_ID’, ‘ アクセスキー’ );
define( ‘DBI_AWS_SECRET_ACCESS_KEY’, ‘シークレットアクセスキー’ ); - WP Offload S3 Liteの設定画面で、バケット・cdn.example.comを選択
- WP Offload S3 Liteの設定画面「CloudFront or Custom Domain」で、cdn.example.comを入力する
これで設定は完了です。
以上の設定ができれば、WordPressで画像をなどをアップすると、Amazon S3にファイルがアップされて、メディアのURLは、自動的にcdn.expample.com//wp-content/uploads/xxx.jpgなどになります。
ちなみに、このプラグインがやっていることは、
- 一度、/wp-content/uploads/にファイルをアップロード
- そのファイルをAmazon S3にコピー
- ファイルのパスをAmazon S3のURL or カスタムドメインのURLに書き換え
という流れで、デフォルトの設定では、アップロードをするとサーバー側にもファイルが残るようになっています。
もし、サーバー側のデータを削除したいのであれば、設定画面の「AWS -> S3 and Cloud Setting」の中の、「Advanced Options -> Remove Files From Server」をオンすればOKです。
WordPressでメディアの保存先をAmazon S3にする方法をみてきました。
最初は複雑に見えますが、慣れればサクッとできるのでぜひ試してみてください。