How to update metadata of an existing object in AWS S3 using python boto3?

arc000 picture arc000 · Sep 20, 2016 · Viewed 12k times · Source

boto3 documentation does not clearly specify how to update the user metadata of an already existing S3 Object.

Answer

arc000 picture arc000 · Sep 20, 2016

It can be done using the copy_from() method -

import boto3

s3 = boto3.resource('s3')
s3_object = s3.Object('bucket-name', 'key')
s3_object.metadata.update({'id':'value'})
s3_object.copy_from(CopySource={'Bucket':'bucket-name', 'Key':'key'}, Metadata=s3_object.metadata, MetadataDirective='REPLACE')