2016-07-05 82 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/*"] 
    } 
    ] 
}