FIX: added pagination looping support to get all resources for aws-inventory-from-awsconfig.py
This commit is contained in:
parent
051b5267de
commit
5342f3c595
@ -1,5 +1,9 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
"""
|
||||
TODO:
|
||||
get_discovered_resource_counts has a limit of 100 resources. need to use nextToken
|
||||
to get count of all resources
|
||||
"""
|
||||
|
||||
import boto3
|
||||
import pandas as pd
|
||||
@ -7,17 +11,28 @@ import csv
|
||||
|
||||
client = boto3.client('config')
|
||||
resp = client.get_discovered_resource_counts()
|
||||
# print('totalDiscoveredResources', resp['totalDiscoveredResources'], sep=": ")
|
||||
results = []
|
||||
# print("ResourceType, ResourceId")
|
||||
for item in resp['resourceCounts']:
|
||||
if item['resourceType'] == "AWS::Config::ResourceCompliance":
|
||||
continue
|
||||
reslist = client.list_discovered_resources(resourceType=item['resourceType'])
|
||||
|
||||
for res in reslist['resourceIdentifiers']:
|
||||
# print(item['resourceType'], res['resourceId'], sep=', ')
|
||||
results += [[item['resourceType'], res['resourceId']]]
|
||||
nextToken = reslist.get('nextToken')
|
||||
while True:
|
||||
for res in reslist['resourceIdentifiers']:
|
||||
if item['resourceType'] in [
|
||||
"AWS::Config::ResourceCompliance",
|
||||
"AWS::Backup::RecoveryPoint",
|
||||
"AWS::RDS::DBSnapshot",
|
||||
"AWS::SSM::ManagedInstanceInventory",
|
||||
"AWS::SSM::AssociationCompliance",
|
||||
"AWS::IAM::Policy"
|
||||
]:
|
||||
continue
|
||||
results += [[item['resourceType'], res['resourceId']]]
|
||||
if nextToken is None:
|
||||
break
|
||||
reslist = client.list_discovered_resources(resourceType=item['resourceType'], nextToken=nextToken)
|
||||
nextToken = reslist.get('nextToken')
|
||||
|
||||
df = pd.DataFrame(results, columns=['ResourceType', 'ResourceId'])
|
||||
print(df.to_csv(index=False,quoting=csv.QUOTE_NONNUMERIC))
|
||||
# print(results)
|
||||
# print(df)
|
||||
print(df.to_csv(index=False, quoting=csv.QUOTE_NONNUMERIC))
|
||||
|
Loading…
Reference in New Issue
Block a user