質問: Amazon AWS S3 を用いて、サービスを開発しようとしています。 使用するインフラは下の通りです heroku Amazon RDS for MySQL Amazon AWS S3 Amazon SES 各言語のバージョンは以下の通りです HTML5 CSS3 PHP7.2 【自分が実現したい設計】 Aさん ストレージ容量制限 100GBまで ディレクトリA Bさん ストレージ容量制限 50GBまで ディレクトリB Cさん ストレージ容量制限 250GBまで ディレクトリC ウェブサービスでは、個人各々のアカウントが作成されるような設計になっています。 個人ストレージを実装したいのですが、S3でどのように実装すればいいのかわかりません。 また、その個人ストレージにはそれぞれ制限容量を設けたいです。 セキュリティ上、AさんからはBさんとCさんの中身を見ることはできません。(BもCも同様、ほかの人のファイルにアクセスできない・リストも見れない状態としたい) 簡単に言えば、共有機能などが一切ないGoogleドライブ、のようなイメージです。 S3バケット内でのディレクトリという表現はおかしいのかもしれませんが、便宜上そう表現させていただいております。 不足している情報等あれば追記させていただきます。 よろしくお願いいたします。
回答: PHP側でアップロードファイルのサイズと現在使用しているファイルサイズをチェックする処理を実装するしかないんじゃないでしょうか。 S3やIAMに容量を制限する機能はないです。 大半はプログラム上での実装が必要な部分かと思います。 一例ですがこのへんの、IAMユーザごとにユーザ名のディレクトリにアクセスさせるポリシーをうまく使うのも一つ方法として考えられるかもしれません。 権限周りをミスったらかなり危ないので慎重に。 ただ、IAMユーザ数には制限があるので、一時的セキュリティ認証情報をうまく使うようにしなければならないと思います。 正直なところ、ここで質問したところですぐ答えが出てくる内容ではないと思います。 きちんと設計しなければいけないところですね。