Python - 将S3图像上传后公开?

时间:2016-10-09 00:42:07

标签: python amazon-web-services amazon-s3 boto

我正在使用此代码将图像从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')

1 个答案:

答案 0 :(得分:3)

使用ACL

尝试:

k.set_acl('public-read')

根据the boto documentation,您可以在单个项目上设置固定ACL。

更改存储桶上的acl(就像使用b.set_acl一样,只会影响存储桶操作的权限(例如存储桶中的列表对象),而不会影响对象操作,例如读取对象(即你想要什么。。有关应用于存储桶和对象时不同权限的含义的更多详细信息,请参阅Amazon S3 ACL Overview - Permissions

使用存储桶策略

但是,根据图像的键结构,您可能会发现设置存储桶策略更加简单,该策略授予对给定路径中所有键的读取权限。然后,您不必对任何单个对象执行任何特殊操作。

Here is a sample policy that grants read-only access

this blog post discusses the differences and combinations between IAM Policies, Bucket Policies and ACLs