0

我正在使用 botocore,因为我使用的是 python 3 并且不能使用 boto。所以我按照这里的例子,可以上传文件

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'

但是当我尝试从 dict 更改类型时,比如说,像这样的字符串

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
4

1 回答 1

0

正如 garnaat 所说,我后来发现在 botocore github(和 aws-cli github)中检查了问题列表,这是一个未解决的问题,所以我会考虑这个问题

于 2014-02-13T02:14:01.840 回答