Upload objects to private S3 is not working

AI-generated summary

Users are experiencing issues with uploading objects to a private S3 bucket. Despite backups working, image uploads fail due to the bucket not allowing ACLs. mahcr has researched the issue and narrowed it down to a problem with the ACL of the bucket. They noticed that the S3 upload config code was updated, and the ACL is now set based on a parameter.

Others have reported the same issue, including shawnngtq and seong, who have also tried various solutions without success. However, lisbethw1130 was able to resolve the issue by modifying IAM permissions and bucket settings. Specifically, they:

  • Changed the IAM permission from “s3:HeadBucket” to “s3:ListBucket”
  • Set the bucket permissions according to the guide
  • Enabled ACLs by setting “Edit Object Ownership” to “object writer” in the permission tab

This solution may help resolve the issue for others experiencing similar problems.

After doing a big research, I’ve not found any guide to upload images to S3 with private ACL.

I’m experiencing a weird behavior where the backups work but not uploadimg of images.

I narrowed the issue down to a problem with ACL of the bucket (I proved that the problem is the ACL since I’m able to upload file using the sdk without specifing the ACL flag). In some cases the “block access to public” permission are set at account level and not bucket level so deactivating the checkbox in the bucket config won’t work.

I noticed that the S3 upload config code was updated, and now the ACL is set based on a param, is there away to pass that config down? discourse/lib/file_store/s3_store.rb at tests-passed · discourse/discourse · GitHub

https://meta.discourse.org/t/secure-media-uploads/meta/140017 describes how to limit uploads to logged in users. Perhaps that will help?

I tried that, images get uploaded but I get a 500 error in the dashboard with no clue, no logs

@mahcr ,

I face the same issue. I can do backup but can’t upload image due to “The bucket does not allow ACLs”.

For IAM, I attached AmazonS3FullAccess policy, but still same error.

Do you have any solution?

I’m having the same issue: backup works but upload doesn’t.

This guide is outdated:

This guide seems to be valuable for the CDN part, but is not the full solution:

I got the same issue, too. Backup upload works but image upload shows “The bucket does not allow ACLs”
And it fixed by modifying one permission in IAM and two settings in bucket

First I changed the guide about IAM permission from “s3:HeadBucket” to “s3:ListBucket” because Amazon said HeadBucket is not a valid permission

Then I follow the guide to exactly as same as in permission page in bucket

Then the most important part, enable ACLs, it’s called Edit Object Ownership in permission tab, with ACLs enabled and set to object writer, everything just fine now

Hope my experience can help you