Публичный 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

Другие вопросы по тегам