catchting faults when non authorized, quick and dirty
This commit is contained in:
@@ -1,6 +1,12 @@
|
|||||||
import click
|
import click
|
||||||
import boto3
|
import boto3
|
||||||
import sys
|
import sys
|
||||||
|
import botocore
|
||||||
|
from IPython import embed
|
||||||
|
|
||||||
|
mperm = {}
|
||||||
|
|
||||||
|
|
||||||
resource_counts = {}
|
resource_counts = {}
|
||||||
resource_totals = {}
|
resource_totals = {}
|
||||||
|
|
||||||
@@ -57,19 +63,111 @@ def controller(access, secret, profile):
|
|||||||
click.echo('Counting resources across regions. This will take a few minutes...')
|
click.echo('Counting resources across regions. This will take a few minutes...')
|
||||||
click.echo(' ')
|
click.echo(' ')
|
||||||
ec2_counter(account_id)
|
ec2_counter(account_id)
|
||||||
autoscaling_counter()
|
try:
|
||||||
balancer_counter()
|
autoscaling_counter()
|
||||||
s3_counter()
|
except botocore.exceptions.ClientError as e:
|
||||||
iam_counter()
|
op = e.__dict__['operation_name']
|
||||||
lambda_counter()
|
code = e.__dict__['response']['Error']['Code']
|
||||||
glacier_counter()
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
cloudwatch_rules_counter()
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
config_counter()
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
cloudtrail_counter()
|
try:
|
||||||
sns_counter()
|
balancer_counter()
|
||||||
kms_counter()
|
except botocore.exceptions.ClientError as e:
|
||||||
dynamo_counter()
|
op = e.__dict__['operation_name']
|
||||||
rds_counter()
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
try:
|
||||||
|
s3_counter()
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
try:
|
||||||
|
iam_counter()
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
try:
|
||||||
|
lambda_counter()
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
|
||||||
|
try:
|
||||||
|
glacier_counter()
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
try:
|
||||||
|
cloudwatch_rules_counter()
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
try:
|
||||||
|
config_counter()
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
try:
|
||||||
|
cloudtrail_counter()
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
try:
|
||||||
|
sns_counter()
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
try:
|
||||||
|
kms_counter()
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
try:
|
||||||
|
dynamo_counter()
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
try:
|
||||||
|
rds_counter()
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
|
||||||
# show results
|
# show results
|
||||||
click.echo('Resources by region')
|
click.echo('Resources by region')
|
||||||
@@ -120,26 +218,156 @@ def ec2_counter(account_id):
|
|||||||
vpc_peering_connection_iterator = ec2.vpc_peering_connections.all()
|
vpc_peering_connection_iterator = ec2.vpc_peering_connections.all()
|
||||||
network_acl_iterator = ec2.network_acls.all()
|
network_acl_iterator = ec2.network_acls.all()
|
||||||
vpc_address_iterator = ec2.vpc_addresses.all()
|
vpc_address_iterator = ec2.vpc_addresses.all()
|
||||||
nat_gateways = ec2client.get_paginator('describe_nat_gateways')
|
|
||||||
nat_gateway_iterator = nat_gateways.paginate()
|
|
||||||
endpoints = ec2client.describe_vpc_endpoints()
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
nat_gateways = ec2client.get_paginator('describe_nat_gateways')
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
|
||||||
|
try:
|
||||||
|
nat_gateway_iterator = nat_gateways.paginate()
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
|
||||||
|
try:
|
||||||
|
endpoints = ec2client.describe_vpc_endpoints()
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
|
||||||
# count resources
|
# count resources
|
||||||
instance_counter = len(list(instance_iterator))
|
# try to get instances
|
||||||
group_counter = len(list(security_group_iterator))
|
try:
|
||||||
volume_counter = len(list(volume_iterator))
|
instance_counter = len(list(instance_iterator))
|
||||||
snapshot_counter = len(list(snapshot_iterator))
|
except botocore.exceptions.ClientError as e:
|
||||||
image_counter = len(list(image_iterator))
|
op = e.__dict__['operation_name']
|
||||||
vpc_counter = len(list(vpc_iterator))
|
code = e.__dict__['response']['Error']['Code']
|
||||||
subnet_counter = len(list(subnet_iterator))
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
peering_counter = len(list(vpc_peering_connection_iterator))
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
acl_counter = len(list(network_acl_iterator))
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
ip_counter = len(list(vpc_address_iterator))
|
instance_counter = 0
|
||||||
|
|
||||||
|
try:
|
||||||
|
group_counter = len(list(security_group_iterator))
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
group_counter = 0
|
||||||
|
|
||||||
|
try:
|
||||||
|
volume_counter = len(list(volume_iterator))
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
volume_counter = 0
|
||||||
|
|
||||||
|
try:
|
||||||
|
snapshot_counter = len(list(snapshot_iterator))
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
snapshot_counter = 0
|
||||||
|
|
||||||
|
try:
|
||||||
|
image_counter = len(list(image_iterator))
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
image_counter = 0
|
||||||
|
|
||||||
|
try:
|
||||||
|
vpc_counter = len(list(vpc_iterator))
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
vpc_counter = 0
|
||||||
|
|
||||||
|
try:
|
||||||
|
subnet_counter = len(list(subnet_iterator))
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
subnet_counter = 0
|
||||||
|
|
||||||
|
try:
|
||||||
|
peering_counter = len(list(vpc_peering_connection_iterator))
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
peering_counter = 0
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
acl_counter = len(list(network_acl_iterator))
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
acl_counter = 0
|
||||||
|
|
||||||
|
try:
|
||||||
|
ip_counter = len(list(vpc_address_iterator))
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
ip_counter = 0
|
||||||
|
|
||||||
gateway_counter = 0
|
gateway_counter = 0
|
||||||
for gateway in nat_gateway_iterator:
|
try:
|
||||||
gateway_counter += len(gateway['NatGateways'])
|
for gateway in nat_gateway_iterator:
|
||||||
endpoint_counter = len(endpoints['VpcEndpoints'])
|
try:
|
||||||
|
gateway_counter += len(gateway['NatGateways'])
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
endpoint_counter = len(endpoints['VpcEndpoints'])
|
||||||
|
except botocore.exceptions.ClientError as e:
|
||||||
|
op = e.__dict__['operation_name']
|
||||||
|
code = e.__dict__['response']['Error']['Code']
|
||||||
|
msg = e.__dict__['response']['Error']['Message']
|
||||||
|
print('{0} {1} Operation: {2}'.format(code,msg,op))
|
||||||
|
mperm[op] = {'Code':code,'Message':msg}
|
||||||
|
endpoint_counter = 0
|
||||||
|
|
||||||
# add to the cross region totals
|
# add to the cross region totals
|
||||||
total_instances = total_instances + instance_counter
|
total_instances = total_instances + instance_counter
|
||||||
@@ -427,4 +655,4 @@ def rds_counter():
|
|||||||
resource_totals['RDS Instances'] = total_dbinstances
|
resource_totals['RDS Instances'] = total_dbinstances
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
controller()
|
controller()
|
||||||
|
|||||||
Reference in New Issue
Block a user