1{ 2 "version": 2, 3 "waiters": { 4 "TasksRunning": { 5 "delay": 6, 6 "operation": "DescribeTasks", 7 "maxAttempts": 100, 8 "acceptors": [ 9 { 10 "expected": "STOPPED", 11 "matcher": "pathAny", 12 "state": "failure", 13 "argument": "tasks[].lastStatus" 14 }, 15 { 16 "expected": "MISSING", 17 "matcher": "pathAny", 18 "state": "failure", 19 "argument": "failures[].reason" 20 }, 21 { 22 "expected": "RUNNING", 23 "matcher": "pathAll", 24 "state": "success", 25 "argument": "tasks[].lastStatus" 26 } 27 ] 28 }, 29 "TasksStopped": { 30 "delay": 6, 31 "operation": "DescribeTasks", 32 "maxAttempts": 100, 33 "acceptors": [ 34 { 35 "expected": "STOPPED", 36 "matcher": "pathAll", 37 "state": "success", 38 "argument": "tasks[].lastStatus" 39 } 40 ] 41 }, 42 "ServicesStable": { 43 "delay": 15, 44 "operation": "DescribeServices", 45 "maxAttempts": 40, 46 "acceptors": [ 47 { 48 "expected": "MISSING", 49 "matcher": "pathAny", 50 "state": "failure", 51 "argument": "failures[].reason" 52 }, 53 { 54 "expected": "DRAINING", 55 "matcher": "pathAny", 56 "state": "failure", 57 "argument": "services[].status" 58 }, 59 { 60 "expected": "INACTIVE", 61 "matcher": "pathAny", 62 "state": "failure", 63 "argument": "services[].status" 64 }, 65 { 66 "expected": true, 67 "matcher": "path", 68 "state": "success", 69 "argument": "length(services[?!(length(deployments) == `1` && runningCount == desiredCount)]) == `0`" 70 } 71 ] 72 }, 73 "ServicesInactive": { 74 "delay": 15, 75 "operation": "DescribeServices", 76 "maxAttempts": 40, 77 "acceptors": [ 78 { 79 "expected": "MISSING", 80 "matcher": "pathAny", 81 "state": "failure", 82 "argument": "failures[].reason" 83 }, 84 { 85 "expected": "INACTIVE", 86 "matcher": "pathAny", 87 "state": "success", 88 "argument": "services[].status" 89 } 90 ] 91 } 92 } 93} 94