删除对象
def delete_object():
try:
resp = s3_client.delete_object(
Bucket='YOUR_BUCKET_NAME',
Key='workflow.png',
)
print(resp)
except ClientError as e:
logging.error(e)
delete_object操作可以实现通过一个HTTP请求批量删除多个对象的功能,可以减少发起多个请求去删除大量对象的花销。delete_object操作发起一个包含了最多1000个key的删除请求,媒体存储服务会对相应的对象逐个进行删除,并且将删除成功或者失败的结果通过response返回。如果请求删除的对象不存在,会返回已删除的结果。
delete_object操作返回包含verbose 和quiet两种response模式。verbose response是默认的返回模式,该模式的返回结果包含了每个key的删除结果。quiet response返回模式返回的结果仅包含了删除失败的key,对于一个完全成功的删除操作,该返回模式不在相应消息体中返回任何信息。
如果对一个启用了MFADelete的存储桶执行delete_object操作,需要在请求参数中提供正确的MFA 信息,否则整个删除操作将不能被有效执行,这规则同样适用于删除那些没有启用版本控制的对象。
def delete_objects():
try:
resp = s3_client.delete_objects(
Bucket='YOUR_BUCKET_NAME',
Delete={
'Objects': [
{
'Key': 'workflow.png',
},
{
'Key': 'workflow2.png',
},
],
},
)
print(resp)
except ClientError as e:
logging.error(e)
默认情况下,如果开启了版本控制,使用 delete_object 操作删除对象不会将该对象彻底删除,而是添加一个 Delete Marker 作为标识。如果您确定不再需要某个对象,则在删除中携带该对象的版本号(VersionId),可以将其彻底删除。对象的版本号可以通过 __list_object_versions__接口获取。
def delete_object():
try:
resp = s3_client.delete_object(
Bucket='YOUR_BUCKET_NAME',
Key='workflow.png',
VersionId='kSdvghSnOmpSMeFtGkeGRXabQCx.RVY', #具体的VersionId
)
print(resp)
except ClientError as e:
logging.error(e)