2014-02-12 72 views
0

我正在使用botocore,因爲我正在使用python 3並且無法使用boto。所以,我在這裏遵循的例子,可以上傳文件使用botocore更改對象元數據

import botocore.session 

session = botocore.session.get_session() 
s3 = session.get_service('s3') 
operation = s3.get_operation('PutObject') 
endpoint = s3.get_endpoint('us-east-1') 
fp = open('my_large_local_file', 'rb') 
res, res_data = operation.call(endpoint, bucket='my-bucket',key='/my/key', body=fp, acl='public-read') 

但我不知道如何設置的元數據,並沒有記錄任何地方。在隨機我嘗試了添加元數據kwarg

, metadata={key:value} 

但隨後拋出這個錯誤

File "/usr/local/lib/python3.2/dist-packages/botocore/auth.py", line 382, in <genexpr> 
custom_headers[lk] = ','.join(v.strip() for v in 
AttributeError: 'dict' object has no attribute 'strip' 

但是,當我試圖改變從字典類型,這樣,比方說,像

字符串
metadata="{key:value}" 

然後我得到一個不同的錯誤,基本上說,它預計的字典

File "/usr/local/lib/python3.2/dist-packages/botocore/parameters.py", line 408, in validate 
type_name='map', param=self) 
botocore.exceptions.ValidationError: Invalid value (key:value) for param map:Metadata of type map 
+1

我覺得這是一個錯誤在botocore處理''map''類型值。我會盡力追蹤並修復它。 – garnaat

回答

0

由於garnaat指出,正如我後來發現,檢查在botocore GitHub上的問題清單(以及AWS-CLI github上),這是一個尚未解決的問題,所以我會考慮這個回答