-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy paths3_delete.py
36 lines (30 loc) · 1.15 KB
/
s3_delete.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import boto3
# can use this to delete all objects if you pass "" as the prefix
def delete_objects__with_prefix(session, bucket_name: str, prefix: str):
'''
Delete objects from a bucket using `prefixes` as the filter for object names
Can call `for object in bucket.object_versions.all(): print(object.key)`
to get the object that remain after running this delete function
Parameters:
`session` boto3.session.Session()
`bucket_name` str
the bucket name
`prefix` str
The path prefix to use to delete objects that start with `prefix`
'''
assert isinstance(bucket_name, str)
assert isinstance(prefix, str)
response = []
bucket = session.resource("s3").Bucket(bucket_name)
for obj in bucket.object_versions.all():
try:
if obj.object_key[:len(prefix)] == prefix:
response.append({
"Key": obj.object_key,
"VersionID": obj.version_id
})
except IndexError:
continue
bucket.delete_objects(Delete={"Objects": response})
print("Objects Deleted:", *response, sep="\n\t")
return response