in aws_sra_examples/solutions/firewall_manager/firewall_manager_org/lambda/src/app.py [0:0]
def associate_admin_account(delegated_admin_account_id: str):
"""
Associate an administrator account for Firewall Manager
:param delegated_admin_account_id: Delegated admin account ID
:return: None
"""
firewall_manager_client = boto3.client("fms", region_name="us-east-1") # APIs only work in us-east-1 region
try:
logger.info("Making sure there is no existing admin account")
admin_account = firewall_manager_client.get_admin_account()
if "AdminAccount" in admin_account:
logger.error("Admin account already exists. Disassociate the account first")
raise ValueError("Admin account already exists. Disassociate the account first")
except ClientError as ce:
if "ResourceNotFoundException" in str(ce):
logger.info(f"Administrator account does not exist. Continuing... {ce}")
else:
logger.error(f"Unexpected error: {ce}")
raise ValueError("Error getting existing admin account.")
try:
logger.info("Associating admin account in Firewall Manager")
firewall_manager_client.associate_admin_account(AdminAccount=delegated_admin_account_id)
logger.info("...waiting 1 minute")
time.sleep(60) # use 1 minute wait
while True:
try:
logger.info("Getting admin account status in Firewall Manager")
admin_account_status = firewall_manager_client.get_admin_account()
logger.info(f"get admin account status is {admin_account_status['RoleStatus']}")
if admin_account_status["RoleStatus"] == "READY":
logger.info("Admin account status = READY")
break
logger.info("...waiting 20 seconds")
time.sleep(20)
continue
except ClientError:
logger.error("There was an getting admin account info in Firewall Manager")
raise ValueError("Error getting admin account info in Firewall Manager")
except ClientError as ce:
logger.error(f"There was an issue associating admin account in Firewall Manager: {ce}")
raise ValueError("Unexpected error. Check logs for details.")
except Exception as exc:
logger.error(f"Unexpected error: {exc}")
raise ValueError("Unexpected error. Check logs for details.")