ググってもあまり情報でなかったのでやってみました。
ParallelのBranchのStateごとにretry書くことはできます。
マニュアルだとTypeがTaskかParallelにだけRetryが書けるとかいてあり分かりづらいですが、Parallelの中のTaskかParallelのTypeであればretryが書けます。言葉ではわかりずらいので以下のように失敗するLambda関数を一つ用意して以下をコピペして実行する(ベースはParallelのブループリントです)
{
"Comment": "An example of the Amazon States Language using a parallel state to execute two branches at the same time.",
"StartAt": "Parallel",
"States": {
"Parallel": {
"Type": "Parallel",
"Next": "Final State",
"Branches": [
{
"StartAt": "Wait 20s",
"States": {
"Wait 20s": {
"Type": "Task",
"End": true,
"Resource": "arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxx:function:test-lambda",
"ResultPath": "$.chkcount",
"Retry": [{
"ErrorEquals": ["States.ALL"],
"IntervalSeconds": 5,
"MaxAttempts": 5,
"BackoffRate": 2.0
}]
}
}
},
{
"StartAt": "Pass",
"States": {
"Pass": {
"Type": "Pass",
"Next": "Wait 10s"
},
"Wait 10s": {
"Type": "Wait",
"Seconds": 10,
"End": true
}
}
}
]
},
"Final State": {
"Type": "Pass",
"End": true
}
}
}
結果はこのような形でFailしているのがわかります。
実行の履歴を見るとLambdaが6回Failしているのがわかります。つまり5回リトライされ6回目のFailでParallelStateFailになりパラレル処理全体のFailになったことがわかります