[英]Boto3: Unable to set Metadata on put/upload
如下代碼:
client = boto3.client(
's3',
aws_access_key_id='AKIA...',
aws_secret_access_key='',
aws_session_token=True
)
client.put_object(
Bucket=input_bucket,
Key=file_name_final,
Body=open(tmp_file_name, 'r'),
Metadata={'a':'b'}
)
崩潰:
Metadata={'a':'b'} TypeError: Unicode-objects must be encoded before hashing
另一方面,使用Resource:
s3 = boto3.resource(
's3',
aws_access_key_id='AKIA...',
aws_secret_access_key='m/twhd6ow8aRuf+gjQcL8gu+bS5Y3tAVjcTe1+ai',
aws_session_token=True
)
my_bucket = s3.Bucket(input_bucket)
upfile = my_bucket.Object(file_name_final);
meta = {'a':'b'}
upfile.upload_file(
tmp_file_name,
ExtraArgs={"Metadata":meta}
)
使用ExtraArgs={"Metadata":meta} : AttributeError: 'bool' object has no attribute 'split'
崩潰ExtraArgs={"Metadata":meta} : AttributeError: 'bool' object has no attribute 'split'
我想我已經嘗試了str('b','utf-8 / ascii')、. encode()和.decode()的所有變體,以及一些非常愚蠢的東西,但是沒有。 救命?
試試看
import boto3
s3 = boto3.resource('s3')
s3.Object('input_bucket', 'file_name_final').put(Body='hello world', Metadata={'foo': 'bar'})
如果您只想上傳,我用過:
s3=boto3.client('s3')
s3.upload_file("file","destinationBucket","destinationFile",ExtraArgs={"Metadata":{"meta1:val1","meta2:val2"})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.