После тщательного исследования я не нашёл ни одного руководства по загрузке изображений в S3 с приватным ACL.
Я столкнулся со странным поведением: резервные копии создаются успешно, а загрузка изображений — нет.
Я сузил круг поиска до проблемы с ACL ведра (я подтвердил, что проблема именно в ACL, так как могу загрузить файл через SDK без указания флага ACL). В некоторых случаях разрешение «Блокировать публичный доступ» установлено на уровне аккаунта, а не на уровне ведра, поэтому снятие галочки в конфигурации ведра не поможет.
У меня возникла та же проблема. Загрузка резервной копии работает, но при загрузке изображений появляется сообщение «The bucket does not allow ACLs». Проблема была решена путем изменения одного разрешения в IAM и двух настроек в бакете.
Сначала я изменил руководство по разрешению IAM: заменил «s3:HeadBucket» на «s3:ListBucket», так как Amazon указал, что HeadBucket не является допустимым разрешением.
И наконец, самый важный шаг — включить ACL. Это называется «Изменить владение объектами» (Edit Object Ownership) на вкладке разрешений. После включения ACL и установки значения «Object Writer» всё заработало как надо.