-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathqueue_manager.py
executable file
·85 lines (65 loc) · 2.75 KB
/
queue_manager.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#!/usr/bin/env python
# PYTHON_ARGCOMPLETE_OK
import argparse
import os, sys, time
import logging
from awslglib.core.config import Config
from awslglib.core.policy_generator import *
from awslglib.SNS.snsmanager import SnsManager
from awslglib.IAM.iammanager import IamManager
from awslglib.SQS.sqsmanager import SqsManager
# Example:
# queue_manager.py --iam sqs_stg-user_name --sqs sqs-name --sqsact '*' --sns sns-name --snsact SendMessage DeleteMessage "
def main():
logging.getLogger('boto').setLevel(logging.CRITICAL)
logging.basicConfig(level=logging.INFO)
usage = "Usage: %prog [options] arg1 arg2"
parser = argparse.ArgumentParser()
actions = [ 'SendMessage', '*', 'ReceiveMessage', 'DeleteMessage', 'ChangeMessageVisibility' 'GetQueueAttributes']
parser.add_argument('-u', '--iam', dest='username', type=str, help = 'Username who want to create or associate a resource')
parser.add_argument('-q', '--sqs', dest='sqs', type=str, help = 'SQS name')
parser.add_argument('-a', '--sqsact', dest='sqsact', type=str, nargs='*', help = 'SQS Actions')
parser.add_argument('-s', '--sns', dest='sns', type=str, help = 'SNS name')
parser.add_argument('-p', '--snsact', dest='snsact', type=str, nargs='*', help = 'SNS Actions')
args = parser.parse_args()
username = args.username
sqsname = args.sqs
sqsact = args.sqsact
snsname = args.sns
snsact = args.snsact
settings = Config()
account = settings.get_param('account_id')
region = settings.get_param('region')
# Username is mandatory
if username is None:
logging.critical('You must provide an username')
sys.exit(1)
# Creating objects from inherit settings
iam = IamManager(settings,username)
# Crear un usari:
iam.create_user()
if iam.is_a_new_user():
logging.info("User created: " + iam.show_user_name())
logging.info("ID for user " + iam.show_user_name() + ": " + iam.show_secretID())
logging.info("Keys for user " + iam.show_user_name() + ": " + iam.show_secretKey())
# Create queue
if sqsname:
sqs = SqsManager(settings, sqsname)
queue = sqs.create_queue()
queuearn = sqs.get_arn()
queueurl = sqs.get_url()
logging.info("SQS URL: " + queueurl)
while sqs.queue_exists() is None: pass
# Create SNS and subscribe the SQS
if snsname:
sns = SnsManager(settings,snsname)
sns.create_topic()
sns.get_topciarn()
sns.subscribe_to_topic(queuearn)
#Policy
my_policy = generate_policy(sqs=sqsname, sns=snsname, sqs_perms=sqsact, iam=username, sns_perms=snsact, account=account, region=region)
else:
my_policy = generate_policy(sqs=sqsname, sqs_perms=sqsact, iam=username, account=account, region=region)
sqs.attach_policy(my_policy)
if __name__ == "__main__":
main()