def lambda_handler()

in checkStatus/app.py [0:0]


def lambda_handler(event, context):
    '''
    This lambda function will check the status of a batch job and return the status along with an array of ARNs of the successful simulation jobs once complete.
    It is used with the aws-robomaker-simulation-launcher StepFunctions state machine.
    
    Event Structure:
    { 
        arns: Array | Completed individual simulation job ARNs. 
        isDone: Boolean | if the batch simulation describe call returns complete.
        batchSimJobArn: String | The ARN of the simulation batch.
        status: String | InProgress, Success or Failed for downstream processing.
        codePipelineJobId: String | The ID of the active CodePipeline job.
    }

    '''

    # If no batchSimJobArn is set, there was an error with a previous step.
    if (event['batchSimJobArn']):  
        
        # Set the default output. 
        output = { 'arns': None, 'isDone': False, 'batchSimJobArn': event['batchSimJobArn'], 'status': 'InProgress', 'codePipelineJobId': event['codePipelineJobId']}
        arns = []

        response = client.describe_simulation_job_batch(
            batch = event['batchSimJobArn']
        )
        
        if response['status'] == 'Completed':

            output['isDone'] = True
            
            # In this sample, we fail the code pipeline on any test failure. 
            if len(response['failedRequests']) == 0:
                output['status'] = 'Success'
            else:
                output['status'] = 'Failed'
                
            for job_output in response['createdRequests']:
                arns.append(job_output['arn'])
            
            output['arns'] = arns
            
        elif response['status'] == 'Failed' or response['status'] == 'Canceled':
            output['isDone'] = True
            output['status'] = 'Failed'
 
    else:
        output['isDone'] = True
        output['status'] = 'Failed'

    return output