Проверьте наличие ошибок в параллельной задаче без карты и выбора

#amazon-web-services #aws-step-functions

Вопрос:

У меня есть две задачи ( SQS 1 A и SQS 1 B ) в состоянии parellel, которые я хочу выполнить независимо. Если один из них потерпит неудачу, я не против, чтобы другой был завершен, но я не хочу переходить к финальной задаче ( SQS 2 ). Поэтому я добавил состояние прохождения в качестве ловца ошибок для обоих SQS 1 A , и SQS 1 B поэтому проверку ошибок можно выполнять вне параллельного состояния.

Затем я просматриваю вывод параллельной задачи и ищу любую ошибку. Мне это кажется немного неуклюжим. Есть ли более приятный способ сделать это?

введите описание изображения здесь

Определение:

 {  "Comment": "A description of my state machine",  "StartAt": "Start",  "States": {  "Start": {  "Type": "Pass",  "Next": "Run in parallel"  },  "Run in parallel": {  "Type": "Parallel",  "Branches": [  {  "StartAt": "SQS 1 A",  "States": {  "SQS 1 A": {  "Type": "Task",  "Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken",  "Parameters": {  "QueueUrl": "lt;redactedgt;",  "MessageBody": {  "MyTaskToken.$": "$.Task.Token"  }  },  "End": true,  "Catch": [  {  "ErrorEquals": [  "States.ALL"  ],  "Next": "Handle Error",  "ResultPath": "$.error"  }  ],  "ResultPath": "$.Status"  },  "Handle Error": {  "Type": "Pass",  "End": true  }  }  },  {  "StartAt": "SQS 1 B",  "States": {  "SQS 1 B": {  "Type": "Task",  "Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken",  "Parameters": {  "QueueUrl": "lt;redactedgt;",  "MessageBody": {  "MyTaskToken.$": "$.Task.Token"  }  },  "End": true,  "ResultPath": "$.Status",  "Catch": [  {  "ErrorEquals": [  "States.ALL"  ],  "Next": "Handle Error 2",  "ResultPath": "$.error"  }  ]  },  "Handle Error 2": {  "Type": "Pass",  "End": true  }  }  }  ],  "Next": "Map",  "ResultPath": "$.parallelTaskResult"  },  "Map": {  "Type": "Map",  "Iterator": {  "StartAt": "Choice",  "States": {  "Choice": {  "Type": "Choice",  "Choices": [  {  "Variable": "$.error",  "IsPresent": true,  "Next": "Fail (1)"  }  ],  "Default": "Pass"  },  "Pass": {  "Type": "Pass",  "End": true  },  "Fail (1)": {  "Type": "Fail"  }  }  },  "ItemsPath": "$.parallelTaskResult",  "Next": "SQS 2"  },  "SQS 2": {  "Type": "Task",  "Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken",  "Parameters": {  "QueueUrl": "lt;redactedgt;",  "MessageBody": {  "MyTaskToken.$": "$.Task.Token"  }  },  "End": true  }  } }