概要
みなさんこんにちはcandleです。今回はwordpressの画像をs3にアップロードします。
私は最近まで別のs3にアップロードするプラグインを使っていたのですが、開発が2年前に止まってしまい、最新のwordpressのバージョンではうまく動かなかったので、wp offload s3に変更しました。
wp offload s3はamazon web service pluginの拡張なので、事前にそちらを入れる必要があります。そこも含めて解説していきます。
前提
amazon s3のiamを取得している。
もしも、まだ取得してない人は、こちらの記事を参照してください。
awsのs3を操作する為のaccess keyとsecret keyを取得する(IAM)
s3のバケットを作成しておく
Amazon Web Service pluginとWP Offload S3をインストールする
wp offload s3をインストールする前にamazon web service をインストールします。
wordpressの管理画面から「プラグイン」→「新規追加」を押します。
プラグインの検索から「Amazon Web Service」で検索して、画像の候補をクリックして、インストールします。
同じように検索ボックスで「wp offload s3」で検索して、インストールします。
インストールしたプラグイン一覧で、それぞれのプラグインを有効化します。
これでインストールが完了しました。
awsの設定
左のメニューにawsという項目ができます。
s3へのアクセスキーとシークレットキーはwp-configに記述するか、データベースに保存するか選べます。awsプラグインが推奨しているのは、wp-config.phpに記述するほうなので、私はそちらで設定します。
wordpressのwp-config.phpを開いて、すでに取得しているs3のiamのアクセスキーとシークレットキーを記述します。
define( ‘AWS_ACCESS_KEY_ID’, ‘********************’ );
define( ‘AWS_SECRET_ACCESS_KEY’, ‘********************************’ );
awsのキーを設定するとawsのページが以下のように変更されます。
awsの設定は以上です。
wp offload s3の設定を行う
s3にアップロードするための設定をおこないます。
左のメニューのAWSの「S3 and CloudFront」を選びます。
以下の画面が出てきます。
テキストフィールドに直接バケット名を入れても良いのですが、
「Browse existing buckets」を選べば、
設定したiamのキーで参照できるバケットの一覧が出てくるのでそちらの方が楽です。
ボタンを押すと、バケットの一覧がでてくるので、アップロードしたいバケットを選びます。
あとは自動的に設定がおこなわれて、以下のような画面が出れば成功です。
s3のurlの設定を行う
s3にアップロードしたファイルのアドレスは様々な表現が可能です。
http通信の場合
もしも、あなたのサイトがhttp通信で行われているなら、
Domainの項目は「Bucket name as subdomain」をおすすめします。
pathは「wp-content/uploads/」にします。
https通信の場合
https通信でサイトを運用している場合は問題が起こります。
s3のバケット名ではドット「. 」が使えます。https通信では不要なドットはエラーを出すらしく、このプラグインではhttps通信を行う場合は「Bucket name as subdomain」を選べません。
仕方がないので、「Bucket name as path」にします。
これ、自分のバケットはドットが入っていないのがわかっているから、なんとか設定できればいいのにと思っています。
メディアをアップロードしてみる
メディアに移動して画像をアップロードしてみます。
画像の詳細を見てみると、画像がs3のアドレスになっています。
https通信だとこんな感じのアドレスでした。
https://s3-ap-northeast-1.amazonaws.com/バケット名/wp-content/uploads/2016/01/17002715/island-984445_640.jpg
s3のマネジメントページに行くと、以下のようになっていました。
自分はewwwのプラグインを入れているので、幾つかファイルが作成されています。
まとめ
これ、やっぱりよくよく考えると、https通信の場合でもサブドメインにバケット名のせたいですね。というのも、サーバの引越しとかする場合にバケット名の部分が不要になるからです。
https://s3-ap-northeast-1.amazonaws.com/バケット名/wp-content/uploads/2016/01/17002715/island-984445_640.jpg
↓
https://joppot.info/wp-content/uploads/2016/01/17002715/island-984445_640.jpg
urlにまとめられるならそっちの方が便利ですね。