Я полагаю, что гранулярность того, что вы пытаетесь получить, будет легче осуществить, включив некоторые другие средства.Я предлагаю политику с AWS IAM.(То есть, я собираюсь дать информацию о решении этой проблемы с помощью политик, потому что я не уверен, что это может быть выполнено только с помощью ACL, как вам бы хотелось.)
Из Amazon: "Политика определяет разрешения AWS, которые вы можете назначить пользователю, группе или роли. Вы можете создавать и редактировать политику в визуальном редакторе и используя JSON. "
С помощью политики вы можете указать привилегиивплоть до конкретной службы, команды, ресурсов и запросов.
Некоторые примеры этих политик:
s3 service, putObject only, arn:aws:s3:::<yourbucket>/*.jpg only
s3 service, deleteObject only, arn:aws:s3:::<yourbucket>/*.png only
Первая позволяет загружать файлы .jpg только в эту корзину ивторая позволяет удалять файлы .png только из этого сегмента.Вы можете создавать эти политики с помощью raw json, но я не буду их включать, потому что, я думаю, вы поймете лучше, используя для этого их интерфейс.
Вы можете настроить эти политики так, чтобы они позволяли использовать несколько сегментов и несколько типов файлов, если вы хотите разрешить более одного.Вы также можете смешивать и сопоставлять действия, т.е. только putObject, только deleteObject, только getObject или getObject и только deleteObject и т. Д.
Чтобы использовать такую созданную политику, вам нужно записать идентификатор доступа иСекретный ключ.Я вижу, вы упоминали, что делали это в браузере;у вас есть взаимодействие с сервером?Не особенно безопасно жестко кодировать ваши ключи в коде на стороне клиента.Я хотел бы предложить, чтобы ключи на сервере и код вашего сервера генерировали временные учетные данные, соответствующие политике, которую он передает клиенту для выполнения действия.Временные учетные данные AWS дают время истечения не менее 15 минут, поэтому это может также обеспечить дополнительную безопасность.
Подробнее о политиках IAM можно прочитать здесь: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html
Надеюсь, чтопомогает.
правка: последнее.Вы также захотите настроить конфигурацию CORS для соответствующих сегментов, если у вас их нет.Это может ограничить, какие домены могут выполнять действия (если хотите), и разрешить взаимодействие с клиентом, который имеет временные учетные данные, которые вы делаете.Вот пример:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>https://yoursite.com</AllowedOrigin> (or * for any)
<AllowedMethod>HEAD</AllowedMethod> (the methods allowed on the bucket)
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<MaxAgeSeconds>3600</MaxAgeSeconds>
<ExposeHeader>ETag</ExposeHeader> (information you need exposed to client)
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Вы можете прочитать о конфигурациях CORS здесь: https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html
Если этот ответ не для вас, я мог бы предложить более золотую середину.Например, проверка типа файла с помощью кода и использование политики ACL для более общих разрешений, касающихся транзакции.Приветствия