要解决“AWS BatchDELETE未从S3中删除文件”的问题,可以使用以下代码示例中的步骤:
import boto3
def delete_files_from_s3(bucket_name, file_names):
s3 = boto3.client('s3')
objects = [{'Key': file_name} for file_name in file_names]
response = s3.delete_objects(
Bucket=bucket_name,
Delete={
'Objects': objects,
'Quiet': True
}
)
return response
# 调用示例
bucket_name = 'your-bucket-name'
file_names = ['file1.txt', 'file2.txt', 'file3.txt']
response = delete_files_from_s3(bucket_name, file_names)
if response['ResponseMetadata']['HTTPStatusCode'] == 200:
print('文件已成功删除')
else:
print('删除文件时出现错误')
在上述代码示例中,delete_files_from_s3
函数接受一个S3存储桶的名称和要删除的文件名列表作为参数。使用boto3
库创建一个S3客户端,并使用delete_objects
方法来删除指定的文件。
delete_objects
方法的Bucket
参数是要删除文件的存储桶名称,Delete
参数是一个字典,包含Objects
键,其值是一个包含要删除文件的键值对列表。在这个示例中,我们使用了列表推导式来创建文件的键值对列表。
Quiet
参数被设置为True
,以便在删除文件时不返回详细信息。
最后,根据delete_objects
方法的响应中的HTTPStatusCode
判断文件是否成功删除,如果返回码为200,则表示文件已成功删除。