小编Jos*_*ley的帖子

Ceph radosgw - 存储桶策略 - 默认将所有对象设为公开读取

我与一群非开发人员一起工作,他们通过 radosgw 将对象上传到 s3 风格的存储桶。所有上传的对象都需要公开可用,但它们不能以编程方式执行此操作。有没有办法让对象的默认权限公开读取,这样就不必每次都手动设置?必须有一种方法来做到这一点boto,但我还没有找到任何例子。使用 AWS 的 GUI 有一些浮动,但这对我来说不是一个选择。:(

我正在创建一个这样的桶:

#!/usr/bin/env python

import boto
import boto.s3.connection

access_key = "SAMPLE3N84XBEHSAMPLE"
secret_key = "SAMPLEc4F3kfvVqHjMAnsALY8BCQFwTkI3SAMPLE"

conn = boto.connect_s3(
        aws_access_key_id = access_key,
        aws_secret_access_key = secret_key,
        host = '10.1.1.10',
        is_secure=False,
        calling_format = boto.s3.connection.OrdinaryCallingFormat(),
        )

bucket = conn.create_bucket('public-bucket', policy='public-read')
Run Code Online (Sandbox Code Playgroud)

我将策略设置为 public-read 这似乎允许人们将存储桶作为目录浏览,但存储桶中的对象不继承此权限。

>>> print bucket.get_acl()
<Policy: http://acs.amazonaws.com/groups/global/AllUsers = READ, S3 Newbie (owner) = FULL_CONTROL>
Run Code Online (Sandbox Code Playgroud)

澄清一下,我知道我可以像这样在每个对象的基础上解决这个问题:

key = bucket.new_key('thefile.tgz')
key.set_contents_from_filename('/home/s3newbie/thefile.tgz')
key.set_canned_acl('public-read')
Run Code Online (Sandbox Code Playgroud)

但是我的最终用户无法执行此操作,因此我需要一种方法将其设置为上传文件的默认权限。

python amazon-s3 boto ceph radosgw

4
推荐指数
1
解决办法
2745
查看次数

标签 统计

amazon-s3 ×1

boto ×1

ceph ×1

python ×1

radosgw ×1