私は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