Все объекты в Amazon S3 по умолчанию частные .
Чтобы сделать содержимое folderB
publi c, вам нужно добавить Bucket Policy аналогично:
{
"Version": "2012-10-17",
"Id": "Policy1596533716384",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::bucket/folderB/*"
}
]
}
Это делает все в folderB
publi c.
Что касается того, чтобы сделать все в folderA
доступным через предварительно подписанные URL-адреса, ваше приложение будет отвечать за создание предварительно подписанных URL . Обычно поток будет следующим:
- Пользователь аутентифицируется в вашем приложении
- Пользователь запрашивает доступ к частному объекту (в вашем случае это будет что-то в
folderA
) - Приложение проверит, имеет ли пользователь право доступа к этому объекту.
- Если они имеют право на доступ к объекту, то приложение сгенерирует предварительно подписанный URL, который предоставляет ограниченный по времени доступ к частному объекту
- . Приложение предоставит пользователю этот подписанный URL-адрес либо в виде ссылки, либо как часть страницы HTML (например, в теге
<img>
). - Браузер пользователя получит доступ к объекту через предоставленный URL. S3 будет проверять, что URL-адрес правильно подписан и что период времени не истек. Если это так, он предоставляет доступ к частному объекту.
Примечание: Когда вы нажимаете кнопку Открыть в консоли Amazon S3, консоль генерирует предварительно подписанный URL-адрес, позволяющий получить доступ к частному объекту. Этот предварительно подписанный URL-адрес создается при нажатии кнопки , и он будет работать только в том случае, если вашему IAM-пользователю был предоставлен доступ к объекту. То есть он использует разрешения человека, использующего консоль, для создания предварительно подписанного URL.
В вашей политике говорится: «Запретить всем доступ к folderA
». Это включает в себя пользователя IAM, который использует консоль, поэтому он не может получить доступ к файлу даже при использовании предварительно подписанного URL-адреса. Предварительно подписанный URL-адрес имеет доступ только к объектам, доступным пользователю IAM, которые сгенерировали предварительно подписанный URL-адрес.