2016-07-05 52 views
0

我在亚马逊s3中已经创建了一个桶。我想在没有任何身份验证的情况下公开其内容。我已经从boto的文档中尝试过如何使py3中的s3桶公开

要为存储桶设置预设的ACL,请使用Bucket对象的set_acl方法。传递给此方法的参数必须是包含在acl.py中的CannedACLStrings列表中指定的四个允许的封装策略之一。例如,为了使水桶可读人:

b.set_acl( '公共阅读')

这是行不通的。我仍然无法公开访问我的文件。但是,为单个文件设置acl为public-read正在工作。

我想从python公开它,因为我没有访问s3控制台。

我想让整个桶公开可读。

我的代码是

conn = boto.connect_s3(
     aws_access_key_id = access_key, 
     aws_secret_access_key = secret_key, 
     host = 's3.amazonaws.com', 
     #is_secure=False,    # uncomment if you are not using ssl 
     calling_format = boto.s3.connection.OrdinaryCallingFormat(), 
     ) 
bucket = conn.get_bucket('media_library') 
bucket.set_acl('public-read') 
+0

我斗。此外,这似乎并没有Python代码。 –

+0

你有桶的链接吗? –

+0

是https://media_library.s3.amazonaws.com/public/users/Integrators/102ba277-aa60-4ec6-9e7d-84c8522d0b9d/test1-clientside/cp-2.png –

回答

1

您将需要创建一个桶政策,其在桶作为一个整体定义的权限。

参见 '斗政策' 中:Managing Access to S3 Resources (Access Policy Options)

您可以通过boto在Python与put_bucket_policy()做到这一点:

put_bucket_policy(** kwargs)

替换上的策略桶。如果存储桶已有策略,则此请求中的策略将完全取代它。

请求语法

response = client.put_bucket_policy(Bucket='string', Policy='string')

Bucket Policy Examples找到一个合适的政策。

这里是一个政策使得整个斗公开可读(只需插入自己的水桶名):已创建

{ 
    "Version":"2012-10-17", 
    "Statement":[ 
    { 
     "Sid":"AddPerm", 
     "Effect":"Allow", 
     "Principal": "*", 
     "Action":["s3:GetObject"], 
     "Resource":["arn:aws:s3:::examplebucket/*"] 
    } 
    ] 
} 
相关问题