· 9 years ago · Sep 28, 2016, 04:28 AM
1import sys, getopt, pprint
2import boto.s3
3
4##
5## Config Me
6##
7
8ACCESS_KEY="ACCESS_KEY_HERE"
9SECRET_KEY="SECRET_KEY_HERE"
10HOST="S3_HOST_NAME"
11BATCH_DELETE_SIZE=1000
12
13##
14## End Config
15##
16
17def main(argv):
18 bucketName = ''
19 channel = ''
20 runall = ""
21 try:
22 opts, args = getopt.getopt(argv,"hab:c::",["bucketName=","channel=","runall="])
23 except getopt.GetoptError:
24 print sys.argv[0] +' -b <bucket> -c channel'
25 sys.exit(2)
26 for opt, arg in opts:
27 if opt == '-h':
28 print sys.argv[0] + ' -b bucket -c channel'
29 sys.exit()
30 elif opt in ("-b", "--bucket"):
31 bucketName = arg
32 elif opt in ("-c", "--channel"):
33 channel = arg
34 elif opt in ("-a", "--all"):
35 runall = True
36 pp = pprint.PrettyPrinter(indent=4)
37 conn = boto.connect_s3(ACCESS_KEY, SECRET_KEY, host=HOST)
38 bucket = conn.get_bucket(bucketName)
39
40 if not bucketName:
41 print "Please specify a bucket"
42 sys.exit(2)
43
44 if not channel and not runall:
45 print "Please specify a channel or use -a for all."
46 sys.exit(2)
47
48 list_of_keys = bucket.list(prefix=channel)
49 keys_to_delete = []
50 for key in list_of_keys:
51 keys_to_delete.append(key)
52 if len(keys_to_delete) > BATCH_DELETE_SIZE:
53 result = bucket.delete_keys(keys_to_delete)
54 pp.pprint(result.__dict__)
55 keys_to_delete = []
56 if len(keys_to_delete) > 0:
57 result = bucket.delete_keys(keys_to_delete)
58 pp.pprint(result.__dict__)
59 delete_key_list = []
60
61
62if __name__ == "__main__":
63 main(sys.argv[1:])