WordPressに投稿したメディアをAWS S3に自動的にアップロードする「Nephila clavata (絡新婦)」をインストールしてみた

WordPressに投稿したメディアをAWS S3に自動的にアップロードする「Nephila clavata (絡新婦)」をインストールしてみた

以前にサーバをAWSのEC2に移管した旨を記載させて頂きましたが、静的なデータはEC2ではなくS3に置いておいたほうが効率的のような気がしていました。

ただ、毎回S3にファイルをアップして、ブログでリンクを貼る作業をしようとするとどうしても面倒だったところ、WordPressで投稿したメディアを自動的にS3にアップしてくれるプラグイン「Nephila clavata (絡新婦)」があったので試してみました。

仕組みについて

我が家のお猫様です

WordPressでメディアを追加すると、「/wp-contet/uploads/***」に保存されますが、その「uploads」以下のデータをS3に転送します。

管理画面上の操作はWordPress設置側のメディアを扱い、表示時に自動的にメディアへのリンクURLをS3側に書き換えて表示されるようです。

なので右図の画像は「blog.sus-happy.net」にも存在していますが、表示する際に自動的に「s3.sus-happy.net」に書き換えられて表示されるようになります。

実装方法

S3バケットの用意

AWSのアカウントを持っていないのであれば、AWSのサイトからアカウントを作成します。

バケットの用意の仕方については、こちらのサイトで詳しくご紹介されておりますので、ご参考にしていただければと思います。

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

Nephila clavata (絡新婦)プラグインは公式ディレクトリに公開されていますので、そちらからダウンロードしてアップ、または管理画面からインストールして有効化します。

設定内容

有効化すると「設定」の中に「Nephila clavata (絡新婦)」というメニューが追加されますので、下記を参考に入力します。

AWS アクセスキー ID
アクセスキー ID
AWS シークレットアクセスキー
シークレットアクセスキー
AWS リージョン
S3を作成したリージョンを選択
上記内容を入力、一度保存をして、登録内容に間違いが無ければ、下記入力欄が表れます。
S3 バケット
「S3バケットの用意」で登録したバケット名を選択
S3 URL
バケットのプロパティに表示される「Endpoint」のURLを入力 もしくは、バケットを作成する時に独自ドメインでホスティング出来るようにした場合はそのURLを入力
すると、今までのメディアも自動的にAWS S3にアップロードしてくれます。

注意点

  • WordPressを設置しているサーバにもメディアは残るので、容量削減の名目で利用することは出来ません。
    (プラグインが無効化された時でもメディアにリンクが繋がるようにするため)
  • AWS SDK for PHP 2を利用しているためPHP 5.3以降のバージョンが必要

雑感

PHP等のプログラムをEC2で、静的データをS3に置いたほうが負荷分散も出来ていいよなぁ、なんて思ってはいたのですが、実際にやろうと思うと腰が重かったのが、こういった便利なプラグインなどで簡単に出来ると非常に嬉しいですね。

参考