diff --git a/libs/opsworks.py b/libs/opsworks.py index 10b0e3c..052835e 100644 --- a/libs/opsworks.py +++ b/libs/opsworks.py @@ -5,26 +5,38 @@ import pprint pp = pprint.PrettyPrinter(indent=5, width=80) #from http://docs.aws.amazon.com/general/latest/gr/rande.html -regions = ['us-east-1', 'us-east-2', 'us-west-1', 'us-west-2', 'ca-central-1', 'eu-central-1', 'eu-west-1', 'eu-west-2', 'ap-northeast-1', 'ap-northeast-2', 'ap-southeast-1', 'ap-southeast-2', ] +#http://docs.aws.amazon.com/general/latest/gr/rande.html#opsworks_region +regions = ['us-east-1', 'us-east-2', 'us-west-1', 'us-west-2', ] -region = 'us-east-1' +#region = 'us-east-1' -def get_stacks(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY): +def describe_stacks(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY): print('#### Listing Stacks ####') try: - client = boto3.client( + for region in regions: + client = boto3.client( 'opsworks', aws_access_key_id = AWS_ACCESS_KEY_ID, aws_secret_access_key = AWS_SECRET_ACCESS_KEY, region_name=region ) - stacks = client.describe_stacks() - print stacks - for stack in stacks['StackId']: - pp.print(stack) + response = client.describe_stacks() + #debug + print response + if response.get('Stacks') is None: + print "{} likely does not have Lambda permissions\n" .format(AWS_ACCESS_KEY_ID) + elif len(response['Stacks']) <= 0: + print "[-] DescribeStacks allowed for {} but no results (everyone seems to have this permission) [-]\n" .format(region) + else: #THIS PART IS UNTESTED + for r in response['Stacks']: + pp.pprint(r) + except botocore.exceptions.EndpointConnectionError as e: + print "Unexpected error: {}" .format(e) except botocore.exceptions.ClientError as e: - print e - - -get_stacks(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) \ No newline at end of file + if e.response['Error']['Code'] == 'InvalidClientTokenId': + sys.exit("{} : The AWS KEY IS INVALID. Exiting" .format(AWS_ACCESS_KEY_ID)) + elif e.response['Error']['Code'] == 'EndpointConnectionError': + print "[-] Cant connect to the {} endpoint [-]" .format(region) + else: + print "Unexpected error: {}" .format(e) diff --git a/opsworks_describe_stacks.py b/opsworks_describe_stacks.py new file mode 100644 index 0000000..253210d --- /dev/null +++ b/opsworks_describe_stacks.py @@ -0,0 +1,17 @@ +import boto3 +import botocore + +import json +import urllib +import logging +import sys,os +import pprint + +pp = pprint.PrettyPrinter(indent=5, width=80) + +from libs.opsworks import * + +AWS_ACCESS_KEY_ID = '' +AWS_SECRET_ACCESS_KEY = '' + +describe_stacks(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) \ No newline at end of file