前提・実現したいこと
文書と画像の投稿や削除が可能なブログのようなポートフォリオ(LAMP環境、PHPのフレームワークは未使用)をローカル開発環境(docker-composeを利用)で作成完了しました。これから、本番環境のAWS(ECS on Fargate)でphp-apacheコンテナを起動して、RDSでMySQLを利用してデプロイする予定です。投稿画像がwebサーバ(ECS?)内に保存され続けると、webサーバのストレージなどの負担が大きくなるため、webサーバとは分離した「Amazon S3」というストレージサービスに、画像などの静的コンテンツを保存させるべきということが分かりました。
ローカル開発環境では、ホスト(Mac)の「wwwフォルダ」を、php-apacheコンテナ内の「/var/www」にマウントして、「www/html/assets/images/<image名>」や「www/html/assets/css/<css名>」のように、全てのファイルはMac本体に階層構造(ファイルストレージ?)で保存場所をPHPで指定しています。
AWSストレージサービスの利用に関して腑に落ちない点など私の考え・調べたこと
オブジェクトストレージであるS3と、ローカル開発環境のファイルの階層構造とは、互換性がないように思いました。調べるとファイルストレージの「Amazon EFS」を使えば、ローカル環境と本番環境での差異が少なくなりそうだと思いました。
本番環境とローカル開発環境とのPHPのアプリのコードの差異は最小限にしたいです。(できる限り、ローカル開発環境のアプリのコードを書き換えたくありません。)
S3やEFSについて数日調べましたが、「ローカル開発環境では、ローカルPCであるアプリの静的コンテンツの保存場所を、本番環境では、(EC2やECSとは分離された)S3などのAWSストレージにする」ような記事は見つけることができませんでした。
質問
①ローカル開発環境ではPHPで画像やCSSのパスを指定していましたが、本番環境ではPHPのコードを、S3などのAWSのストレージサービス用のパスに変更する必要があるのか?
②もし、ローカル開発環境のPHPのコードを変更せずに、本番環境でS3などのAWSのストレージサービスに静的コンテンツを保存や利用できる場合、画像投稿時にECS内にも「/var/www/html/assets/images/<image名>」のように保存されてしまわないか?(webサーバにも画像が保存され、webサーバのストレージに負担が掛かり、本末転倒のような気がします。)
③私のアプリやローカル開発環境の状況では、AWSストレージサービスは、S3やEFSなど、どれが適していますか?
④アプリに投稿削除機能があるが、S3やEFSなどAWSストレージサービスを利用した際にも、指定された投稿画像がAWSストレージサービスから削除されるか?
⑤上記のことを実現するためのアドバイス、おすすめのサイトや教材などがあれば教えて頂ければ、幸いです。
投げやりな質問になり、大変恐縮です。この件に関して、自分だけでは手も足も出ない状態ですので、ご教授頂ければ幸いです。よろしくお願い致します。
補足情報(FW/ツールのバージョンなど)
ローカル開発環境は、以下の3つのコンテナイメージをdocker-composeを使い、作成しました。
・php:7.2-apache
・mysql:5.7
・phpmyadmin/phpmyadmin:latest
回答6件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/22 09:16
2021/04/22 11:32 編集
2021/04/22 13:35 編集