Публичный ACL Riak CS по умолчанию для новых объектов
Можно ли заставить Riak CS применять ACL с публичным доступом по умолчанию при создании нового сегмента или файла в созданном сегменте? Я имею в виду, я хочу положить файлы, например, используя просто
s3cmd put file.jpg s3://my-bucket
И я хотел бы, чтобы файл my.jpg был в моем ведре, чтобы быть общедоступным.
1 ответ
Вы имеете в виду, что "объекты доступны для чтения анонимно" под "публичным доступом"? Я продолжу с предположением, что это правда.
Поскольку ACL для каждого сегмента или для объекта, политика сегмента будет более подходящей для варианта использования. После создания ведра my-bucket
можно установить определенную политику сегмента с помощью API PUT Bucket Policy [1].
Пример политики JSON, разрешающей открытый доступ к корзине, выглядит следующим образом:
{
"Version": "2008-10-17",
"Id": "Policy1355283297687",
"Statement": [
{
"Sid": "Stmt1355283289",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::my-bucket/*",
"Principal": { "AWS": ["*"] }
}
]
}
Затем вы можете положить его с надлежащим URL-адресом как API doc [1] любыми способами, простым способом является использование s3cmd
как
s3cmd setpolicy </path/to/above/json/as/file> s3://my-bucket
После этого любой пользователь, включая анонимный, может получить доступ к каждому объекту, записанному в корзине.
К сожалению, нет никакого способа применить такую политику корзины при создании корзины, но, я надеюсь, нетрудно написать скрипт-обертку для создания корзины и применить к ней политику.
[1] http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTpolicy.html