in lambdas/custom_resources/CTE_CrossAccountCloudFormation/src/cfn_helper.py [0:0]
def determine_stack_failure_event(stack_name, session=None):
"""Gets the ResourceStatusReason of the provided stack name and prints it
Args:
stack_name (str): Name of the stack to check
session (object, optional): boto3 session object
Returns:
None
"""
err_msg = None
cfn_failure_list = [
'CREATE_FAILED',
'ROLLBACK_COMPLETE',
'ROLLBACK_FAILED',
'UPDATE_FAILED',
'UPDATE_ROLLBACK_COMPLETE',
'UPDATE_ROLLBACK_FAILED',
'UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS'
]
response = describe_stack_events(stack_name=stack_name, session=session)
# logger.info(f"StackEvents:{response['StackEvents']}")
for x in response['StackEvents']:
if x['ResourceStatus'] in cfn_failure_list:
# logger.info(f"Found stack ResourceStatus in failure list")
if x.get('ResourceStatusReason'):
err_msg = f"{x['LogicalResourceId']} - {x['ResourceStatusReason']}"
logger.info(
f"Stack:{stack_name} - Error:{x['ResourceStatusReason']} LogicalResourceId:{x['LogicalResourceId']}"
)
return err_msg