From 3615c730edd73c08e7c301bbb9ede9a9906f540f Mon Sep 17 00:00:00 2001 From: Adam Faraj Date: Wed, 25 Mar 2026 13:22:22 -0400 Subject: [PATCH] Remove suspended accounts from targets --- .../aft_customizations_identify_targets.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/aft_lambda/aft_customizations/aft_customizations_identify_targets.py b/src/aft_lambda/aft_customizations/aft_customizations_identify_targets.py index 9f7731da..e963ad39 100644 --- a/src/aft_lambda/aft_customizations/aft_customizations_identify_targets.py +++ b/src/aft_lambda/aft_customizations/aft_customizations_identify_targets.py @@ -68,8 +68,21 @@ def lambda_handler(event: Dict[str, Any], context: LambdaContext) -> Dict[str, A target_accounts = included_accounts target_account_info = [] + final_target_accounts = list(target_accounts) for account_id in target_accounts: sanitized_account_id = sanitize_input_for_logging(account_id) + try: + account_details = orgs_agent.describe_account(account_id) + if account_details["Status"] == "SUSPENDED": + logger.info( + f"Account with ID {sanitized_account_id} is SUSPENDED - ignoring" + ) + final_target_accounts.remove(account_id) + continue + except ClientError as error: + logger.error(f"Failed to describe account {sanitized_account_id}: {error}") + final_target_accounts.remove(account_id) + continue logger.info( f"Building customization payload for {sanitized_account_id}" ) @@ -80,7 +93,7 @@ def lambda_handler(event: Dict[str, Any], context: LambdaContext) -> Dict[str, A logger.info( f"Account with ID {sanitized_account_id} does not exist or is suspended - ignoring" ) - target_accounts.remove(account_id) + final_target_accounts.remove(account_id) continue else: raise error @@ -100,8 +113,8 @@ def lambda_handler(event: Dict[str, Any], context: LambdaContext) -> Dict[str, A target_account_info.append(account_payload) return { - "number_pending_accounts": len(target_accounts), - "pending_accounts": target_accounts, + "number_pending_accounts": len(final_target_accounts), + "pending_accounts": final_target_accounts, "target_accounts_info": upload_target_account_info( aft_management_session, target_account_info, execution_id ),