2014-02-12 2 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}" 

я тогда получить другую ошибку, в основном говорят, что ожидает Dict

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

Я думаю, что есть ошибка в обработке ботокором значений типа «карта». Я попытаюсь отследить его и исправить. – garnaat

ответ

0

Как заявил garnaat, и по мере того как я позже выяснил, что список проблем в botocore github (и aws-cli github) является нерешенным, поэтому я буду считать это ответом

Смежные вопросы