使用boto在S3的子桶中插入项目

4 投票
1 回答
1530 浏览
提问于 2025-04-16 23:48

假设我在S3上设置了一个存储桶,叫做

MyBucket/MySubBucket

我打算从MySubBucket中提供网站的静态媒体,比如用户上传的图片等等。现在S3的设置似乎不允许我把最上层的存储桶"MyBucket"设为公开,所以为了实现这个效果,我需要在每次添加新文件后,把这个存储桶里的每个单独的文件都设为公开。

我可以把像"MySubBucket"这样的子存储桶设为公开,但我现在遇到的问题是,怎么用boto这个工具来往那个存储桶里插入一张测试图片?有没有人能给个例子?

谢谢

1 个回答

2

其实你只需要在文件名之前加上子桶的名字和一个/。下面这段代码会把一个叫'test.jpg'的文件放到MySubBucket里。k.make_public()这个命令会让这个文件变成公开的,但不一定会让整个桶也变成公开的。

from boto.s3.connection import S3Connection
from boto.s3.key import Key

connection = S3Connection(AWSKEY,AWS_SECRET_KEY)

bucket = connection.get_bucket('MyBucket')
file = 'test.jpg'
k = Key(bucket)
k.key = 'MySubBucket/' + file
k.set_contents_from_filename(file)
k.make_public()

撰写回答