Amazon S3 において、デフォルトではアップロードしたファイルや画像を部外者がそのままURL叩くと、Access Denied になって取得することはできない。
これに対応するためにはいくつか方法がある。
- S3 Console 上で対象フォルダ or ファイルを右クリック -> Make Public
- アップロードのコードで、AccessControl を public read に設定
- Bucket Policy を変更
個々のファイルごとに設定を変えたい場合は、1か2をする必要があるが、まとめて全部公開したい場合は3が有効。
Bucket の Property の Permisson にて、add bucket policy
を選択。そこに
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::YOUR_BUCKET_NAME/*" } ] }
で適用。これで指定Bucketが全てpublic readになる。