Skip to content
This repository was archived by the owner on Dec 31, 2025. It is now read-only.

Commit 9c6a4c7

Browse files
linting
1 parent fd243d6 commit 9c6a4c7

1 file changed

Lines changed: 19 additions & 7 deletions

File tree

reference-artifacts/Custom-Scripts/lza-upgrade/tools/log-group-checks/log-groups-check.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
# Thread-local storage for progress tracking
99
thread_local = threading.local()
1010

11+
1112
def get_log_group_resource_policies_count(logs_client):
1213
"""Get count of log group resource policies."""
1314
try:
@@ -17,6 +18,7 @@ def get_log_group_resource_policies_count(logs_client):
1718
print(f"Error getting resource policies: {e}")
1819
return 0
1920

21+
2022
def get_log_groups_filters(logs_client):
2123
"""Fetch all log groups and return the subscription filters."""
2224
paginator = logs_client.get_paginator('describe_log_groups')
@@ -41,6 +43,7 @@ def get_log_groups_filters(logs_client):
4143

4244
return log_groups_with_two_filters
4345

46+
4447
def get_active_accounts():
4548
"""Get all active accounts from AWS Organizations."""
4649
print("Fetching active accounts from AWS Organizations...")
@@ -59,6 +62,7 @@ def get_active_accounts():
5962
print(f"Found {len(active_accounts)} active accounts")
6063
return active_accounts
6164

65+
6266
def assume_role_and_get_logs_client(account_id, role_name, region):
6367
"""Assume role in target account and return logs client."""
6468
sts_client = boto3.client('sts')
@@ -78,6 +82,7 @@ def assume_role_and_get_logs_client(account_id, role_name, region):
7882
aws_session_token=credentials['SessionToken']
7983
)
8084

85+
8186
def process_account(account, role_name, region):
8287
"""Process a single account in a specific region and return results."""
8388
account_id = account['Id']
@@ -93,24 +98,25 @@ def process_account(account, role_name, region):
9398
resource_policies_count = get_log_group_resource_policies_count(logs_client)
9499

95100
# count log groups that have two subscription filters
96-
nbLogGroupsWith2Filters = sum(1 for log_group in log_groups if len(log_group['filters']) == 2)
101+
log_groups_with_two_filters_count = sum(1 for log_group in log_groups if len(log_group['filters']) == 2)
97102

98-
print(f" {account_name} ({region}): Found {nbLogGroupsWith2Filters} log groups with 2 subscription filters")
103+
print(f" {account_name} ({region}): Found {log_groups_with_two_filters_count} log groups with 2 subscription filters")
99104
print(f" {account_name} ({region}): Found {resource_policies_count} log group resource policies")
100105

101106
return {
102107
'accountId': account_id,
103108
'accountName': account_name,
104109
'region': region,
105110
'resourcePoliciesCount': resource_policies_count,
106-
'nbLogGroupsWith2Filters': nbLogGroupsWith2Filters,
111+
'logGroupsWithTwoFiltersCount': log_groups_with_two_filters_count,
107112
'logGroups': log_groups
108113
}
109114

110115
except Exception as e:
111116
print(f" {account_name} ({region}): Error - {e}")
112117
return None
113118

119+
114120
def main():
115121
parser = argparse.ArgumentParser(
116122
prog='log-groups-check',
@@ -151,7 +157,12 @@ def main():
151157

152158
# Collect results as they complete
153159
for future in as_completed(future_to_pair):
154-
result = future.result()
160+
try:
161+
result = future.result()
162+
except Exception as e:
163+
account, region = future_to_pair[future]
164+
print(f" {account['Name']} ({region}): Failed to process - {e}")
165+
result = None
155166
if result:
156167
all_results.append(result)
157168

@@ -162,23 +173,24 @@ def main():
162173
# Final report
163174
total_log_groups = sum(len(result['logGroups']) for result in all_results)
164175
total_resource_policies = sum(result['resourcePoliciesCount'] for result in all_results)
165-
print(f"\nProcessing complete!")
176+
print("\nProcessing complete!")
166177
print(f"Results saved to: {args.output_file}")
167178
print(f"\nFinal Report: {total_log_groups} log groups across {len(all_results)} account-region combinations")
168179
print(f"Total resource policies: {total_resource_policies}")
169180
print("=" * 80)
170181

171182
for result in all_results:
172-
if result['nbLogGroupsWith2Filters'] > 0 or result['resourcePoliciesCount'] > 8:
183+
if result['logGroupsWithTwoFiltersCount'] > 0 or result['resourcePoliciesCount'] > 8:
173184
print(f"\nAccount: {result['accountName']} ({result['accountId']}) - Region: {result['region']}")
174185
print(f"Resource policies: {result['resourcePoliciesCount']}")
175-
print(f"Log Groups with 2 filters: {(result['nbLogGroupsWith2Filters'])}")
186+
print(f"Log Groups with 2 filters: {result['logGroupsWithTwoFiltersCount']}")
176187

177188
for lg in result['logGroups']:
178189
if len(lg['filters']) >= 2:
179190
print(f" • {lg['logGroupName']}")
180191
for i, filter_info in enumerate(lg['filters'], 1):
181192
print(f" Filter {i}: {filter_info['filterName']} -> {filter_info['destinationArn']}")
182193

194+
183195
if __name__ == "__main__":
184196
main()

0 commit comments

Comments
 (0)