タイトル通りですが、AWSでWordpressの環境を構築した際、S3に画像データ保存を行った時に私がハマってしまった内容を載せようかと思います。
殆ど自身のための備忘録です。
構成
作りたかった構成はこんな感じ。
Wordpressで投稿した画像をS3に保存する。今回は一旦CloudFrontは使わない構成で設定しました。
(本来は使う予定でしたがS3に保存した画像が上手く表示されなかったので予定変更)
行った手順としては他のサイトで紹介されているのと同じです。私はUdemyの動画で学習した内容を実践しているような感じ。内容は似たようなものでした。
手順通り進めたはずですが発生したトラブルはこんな感じ↓
画像が上手く表示されてない(^^;;
S3の方を確認すると上手く保存されてるよな〜とかで余計分からなくなった。(ちなみにWordpressからの削除も問題なく行えます。)
WordpressのEC2にはS3フルアクセス権限を付与したIAMロールを付けてるのに。
ちゃんと説明の通り進めたのにな〜とかいろいろ考えながら原因探し。
ChatGPTやGeminiにも聞いたが「URLは合ってますか〜」とか返事ありましたがURLは合ってるし、ブロックパブリックアクセスもオフにしてます。
いろいろと原因を探していった結果、バケットポリシーに記述がないのが表示されない原因っぽいことが判明。
動画でも他のサイトでもバケットポリシーに一切触れてないので気付くのに遅れました🧐
上手く表示されました🎉
紹介するならちゃんと紹介してとか若干恨みながらも諦めずに表示できたので結果オーライですね!
この構成ですが、バケットポリシーでアクセス元を全許可にしているのでURLをブラウザに入力すれば誰でも表示される状態。
バケットポリシーには特定のロールからのみなどの制限をつけるべきかもですね。
多分ですがCloudFrontと連携させるとCloudFrontからのみのアクセスに限定する(オリジンアクセスコントロール:OAC)のでバケットポリシーとかはこの段階でスルーされたのかも?
設定しても変更するからとかですかね🤨
サイトによってCloudFrontを設定した場合のブロックパブリックアクセスのON/OFFも違うので自身で試すのが一番ですね。
やっとできたので次はCloudFrontかELBで冗長構成にするかを検討中です。