Skip to content

Instantly share code, notes, and snippets.

@blpabhishek
Created December 5, 2018 08:29
Show Gist options
  • Save blpabhishek/cd82200c7605379fb2dab53da6486f9e to your computer and use it in GitHub Desktop.
Save blpabhishek/cd82200c7605379fb2dab53da6486f9e to your computer and use it in GitHub Desktop.
This script downloads messages from AWS Queue to a folder
import argparse
import boto.sqs
import json
import os
parser = argparse.ArgumentParser(description='Saves all messages from an AWS SQS queue into a folder.')
parser.add_argument(
'-q', '--queue', dest='queue', type=str, required=True,
help='The name of the AWS SQS queue to save.')
parser.add_argument(
'-o', '--output', dest='output', type=str, default='queue-messages',
help='The output folder for saved messages.')
parser.add_argument(
'-d', '--delete', dest='delete', default=False, action='store_true',
help='Whether or not to delete saved messages from the queue.')
parser.add_argument(
'-v', '--visibility', dest='visibility', type=int, default=60,
help='The message visibility timeout for saved messages.')
args = parser.parse_args()
if not os.path.exists(args.output):
os.makedirs(args.output)
conn = boto.sqs.connect_to_region(
"eu-west-1")
queue = conn.get_queue(args.queue)
count = 0
while True:
messages = queue.get_messages(
num_messages=10,
message_attributes=['All'],
visibility_timeout=args.visibility)
if len(messages) == 0: break
for msg in messages:
filename = os.path.join(args.output, msg.id)
obj = { 'id': msg.id,
'attributes': msg.message_attributes,
'body': msg.get_body() }
with open(filename, 'w') as f:
json.dump(obj, f, indent=2)
count += 1
print("Saved message to {}".format(filename))
# if args.delete:
# queue.delete_message(msg)
print("{} messages saved".format(count))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment