我正在使用此代码将图像从python上传到S3,但我需要立即将它们公开,而不是手动更改权限。
im2.save(out_im2, 'PNG')
conn = boto.connect_s3(keys)
b = conn.get_bucket('example')
k = b.new_key('example.png')
k.set_contents_from_string(out_im2.getvalue())
我已经尝试过这段代码:
b.set_acl('public-read-write')
答案 0 :(得分:3)
尝试:
k.set_acl('public-read')
根据the boto documentation,您可以在单个项目上设置固定ACL。
更改存储桶上的acl(就像使用b.set_acl
一样,只会影响存储桶操作的权限(例如存储桶中的列表对象),而不会影响对象操作,例如读取对象(即你想要什么。。有关应用于存储桶和对象时不同权限的含义的更多详细信息,请参阅Amazon S3 ACL Overview - Permissions。
但是,根据图像的键结构,您可能会发现设置存储桶策略更加简单,该策略授予对给定路径中所有键的读取权限。然后,您不必对任何单个对象执行任何特殊操作。