Похоже, что в boto3 для этого не существует какого-либо метода, но вы можете скопировать файл, чтобы перезаписать себя.
Чтобы сделать это с помощью низкоуровневого API AWS через boto3, выполните следующие действия:
s3 = boto3.resource('s3')
api_client = s3.meta.client
response = api_client.copy_object(Bucket=bucket_name,
Key=key,
ContentType="application/pdf",
MetadataDirective="REPLACE",
CopySource=bucket_name + "/" + key)
Оказывается, что MetadataDirective="REPLACE"
требуется S3 для перезаписи файла, в противном случае вы получите сообщение об ошибке This copy request is illegal because it is trying to copy an object to itself without changing the object's metadata, storage class, website redirect location or encryption attributes.
.
Или вы можете использовать copy_from
, как отметил Джордон Филлипс в комментариях:
s3 = boto3.resource("s3")
object = s3.Object(bucket_name, key)
object.copy_from(CopySource={'Bucket': bucket_name,
'Key': key},
MetadataDirective="REPLACE",
ContentType="application/pdf")
person
leo
schedule
10.06.2016