Created
December 5, 2018 08:29
-
-
Save blpabhishek/cd82200c7605379fb2dab53da6486f9e to your computer and use it in GitHub Desktop.
This script downloads messages from AWS Queue to a folder
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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