0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS S3 Laravel画像アップロード オブジェクトポリシーについてのメモ

Posted at

概要

  • S3に画像アップロードを行う歳のオブジェクト(ファイル)ポリシーについて若干詰まったので簡単にまとめておく。

詰まった時の内容

まとめメモ

  • LaravelのドキュメントではStorage::putFileStorage::putの部分の記載で配信したい画像に対して下記のような記載がされている。

    putFileメソッドとputFileAsメソッドは、保存するファイルの「可視性」を指定する引数も取ります。これは、AmazonS3などのクラウドディスクにファイルを保存していて、生成されたURLを介してファイルへパブリックアクセスできるようにする場合、特に便利です。
    
  • つまり、配信を行いたいファイルはStorage::putFileもしくはStorage::putの第3引数にpublicと指定する必要がある。

  • 「このオブジェクトはURLでアクセスして自分のアプリケーション内部で表示したいから第3引数にpublicとつけよう」とするとファイル設置できない可能性がある。

  • 下記の記事で触れている様にファイルアップロード先のバケットのオブジェクト所有者が「ACLを無効にする(推奨)」に設定されていた場合、アップロードされるファイルの設定はバケットポリシーとバケットオーナーのIAM権限が使用される。

  • もちろんバケットのオブジェクト所有者の設定を「ACLを有効にする → オブジェクトライター」とすればStorage::putFileもしくはStorage::putの第3引数にpublicとして動作させることはおそらく可能である。

  • しかしながら、「ACLを無効にする(推奨)」はこのようなオブジェクト毎の公開・非公開のめんどくさい設定を一括でAWS側で管理してくれる。

  • 特殊な場合を覗いてバケットは下記の様に運用することが望ましい様に思える。

    • オブジェクト所有者 「ACLを無効にする(推奨)」を選択
    • ソースコード上では一切アップロードするファイルの公開設定などを行わない。
    • 公開・非公開・アクセスなどの設定はバケットそのものに設定

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?