mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-15 09:42:38 -05:00
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:
84
scripts/delete_sqs_queues.py
Normal file
84
scripts/delete_sqs_queues.py
Normal 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)
|
||||
Reference in New Issue
Block a user