Add a script to delete sqs queues:

* Uses boto to retrieve/delete queues
* Additional functions to output/read from csv
This commit is contained in:
Imdad Ahad
2017-05-25 13:33:26 +01:00
parent d23a92fbc0
commit 586c83a2c7

View File

@@ -0,0 +1,84 @@
import boto3
import csv
from datetime import datetime
from pprint import pprint
import os
client = boto3.client('sqs', region_name=os.getenv('AWS_REGION'))
def _formatted_date_from_timestamp(timestamp):
return datetime.fromtimestamp(
int(timestamp)
).strftime('%Y-%m-%d %H:%M:%S')
def get_queues():
response = client.list_queues()
queues = response['QueueUrls']
return queues
def get_queue_attributes(queue_name):
response = client.get_queue_attributes(
QueueUrl=queue_name,
AttributeNames=[
'All'
]
)
queue_attributes = response['Attributes']
return queue_attributes
def delete_queue(queue_name):
response = client.delete_queue(
QueueUrl=queue_name
)
if response['ResponseMetadata']['HTTPStatusCode'] == 200:
print('Deleted queue successfully')
else:
print('Error occured when attempting to delete queue')
pprint(response)
return response
def output_to_csv(queue_attributes):
csv_name = 'queues.csv'
with open(csv_name, 'w') as csvfile:
fieldnames = [
'Queue Name',
'Number of Messages',
'Number of Messages Delayed',
'Number of Messages Not Visible',
'Created'
]
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for queue_attr in queue_attributes:
queue_url = client.get_queue_url(
QueueName=queue_attr['QueueArn']
)['QueueUrl']
writer.writerow({
'Queue Name': queue_attr['QueueArn'],
'Queue URL': queue_url,
'Number of Messages': queue_attr['ApproximateNumberOfMessages'],
'Number of Messages Delayed': queue_attr['ApproximateNumberOfMessagesDelayed'],
'Number of Messages Not Visible': queue_attr['ApproximateNumberOfMessagesNotVisible'],
'Created': _formatted_date_from_timestamp(queue_attr['CreatedTimestamp'])
})
return csv_name
def read_from_csv(csv_name):
queue_urls = []
with open(csv_name, 'r') as csvfile:
next(csvfile)
rows = csv.reader(csvfile, delimiter=',')
for row in rows:
queue_urls.append(row[1])
return queue_urls
queues = get_queues()
for queue in queues:
delete_queue(queue)