ヤマムギ

growing hard days.

*

WordPress(EC2)の画像のS3へのオフロードをMedia Cloudで

      2022/03/20

タイトル通りですが、画像をwebサーバー(EC2)からではなく、S3バケットから配信します。
よくある構成ですが、この要件を満たすプラグインはわりと限られていたりします。

どうしても今回やりたっかたのは、「EBSに画像データを保存しない」です。
これを満たせるプラグインを探していて出会ったのが、「Media Cloud」でした。

ちなみに私のブログ環境は、CloudFrontを使用しています。
アーキテクチャはこんな感じです。

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

WordPressのプラグイン追加で”Media Cloud”を検索しました。

こちらです。
インストールして

有効化しました。

Media Cloudの設定

Cloud StorageをONにしました。

ついでに付属のCrop ToolもONにしました。

StorageはS3を選択しました。
他はGCPとかも対応しているようです。

IAMロールは残念ながら対応していないようですので、アクセスキーを使用します。

該当のIAMユーザーのポリシーは次のようにしました。

あんまり意味ないかもですが、Transfer AccelerationもオプションであったのでONにしました。
バケット側でもONにしました。

選択肢はPublicReadをONしかないようです。
CloudFrontでOAIを有効にしてますので、ここはS3の「任意のアクセスコントロールリスト (ACL) を介して許可されたバケットとオブジェクトへのパブリックアクセスをブロックする」をONにすることでどこからでもアクセスされてしまうことを防いでます。

プレフィックスの設定です。
年月プレフィックスが作成されるようにしています。

対象メディアファイルの選択は全ファイルにしてます。

アップロードしたファイルをサーバー上から削除することと、削除したファイルをS3から削除、は両方とも有効にしています。
これが一番やりたかったことです。
こうすることで、EBSの容量をほぼ気にすることなく運用を続けられます。

CloudFrontを使用しているので、URLを直接指定します。

テスト

最初テストしたとき、なぜか、アップロードは wp-content/uploads/2019/10/~.png にアップロードされたのに、記事内リンクは、wp-content/uploads/が重複するという現象がおきました。

原因は既存のプラグインの EWWW Image Optimizerのようです。
いさぎよくEWWW Image Optimizerを停止すると、パスは重複せず、正常になりました。

ここでは詳しくは書きませんが、もちろんCloudFrontで、S3バケットをオリジンに設定して、Behaviorsでパスに応じてオリジンを分岐させます。
これでメディアファイルはS3からの配信になります。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS , ,

ad

ad

  関連記事

リザーブドインスタンスはじめました

このブログも2014年9月にはじめたので、もうすぐ3年。 1件~17件とばらつき …

AWS CDK とにかくサンプルでやってみる

Cloud9でAWS CDK環境で作った環境でサンプルプロジェクトからのデプロイ …

AWS Transfer Family S3向けのSFTP対応サーバーをVPCで作成してEIPをアタッチ

EIPの作成 同じリージョンでEIPを作成しておきます。 SFTP対応サーバーの …

LINE Bot APIのファーストステップをLambda+API Gatewayでやってみたらものすごく簡単で驚いた

トライアル当初はホワイトリストのしばりや、初回反応するまで時間がかかったりとみな …

「ポケットスタディ AWS認定 デベロッパーアソシエイト」を執筆しました

2021年3月6日に、「ポケットスタディ AWS認定 デベロッパーアソシエイト」 …

S3 Intelligent-Tieringで高頻度階層(FREQUENT)に戻る「アクセス」にS3 SelectとGlueクローラーが該当するのか確認してみました

ユーザーガイドのS3 Intelligent-Tiering のしくみには、「低 …

[JapanTaxi] Athena 指向アナリティクス 〜真面目に手を抜き価値を得よ〜(AWS Summit Tokyo 2017)を聞いてきました

Athenaのユースケースとして聞きにいきましたが、最近触ってるRe:dashも …

VPC環境でLambdaを100同時実行してプライベートIPアドレスを確認した

2019年9月発表のLambda 関数が VPC 環境で改善されます以降に、VP …

EC2とRDSのMySQLを他のAWSアカウントへ移設する

他のAWSアカウントへシステムごと移設した場合の手順です。 構成はEC2とRDS …

AWSセルフマネージドAD環境にリモートデスクトップで接続

AWSクイックスタートのActive Directory Domain Serv …