1{
2  "version": 2,
3  "waiters": {
4    "InstanceExists": {
5      "delay": 5,
6      "maxAttempts": 40,
7      "operation": "DescribeInstances",
8      "acceptors": [
9        {
10          "matcher": "path",
11          "expected": true,
12          "argument": "length(Reservations[]) > `0`",
13          "state": "success"
14        },
15        {
16          "matcher": "error",
17          "expected": "InvalidInstanceID.NotFound",
18          "state": "retry"
19        }
20      ]
21    },
22    "BundleTaskComplete": {
23      "delay": 15,
24      "operation": "DescribeBundleTasks",
25      "maxAttempts": 40,
26      "acceptors": [
27        {
28          "expected": "complete",
29          "matcher": "pathAll",
30          "state": "success",
31          "argument": "BundleTasks[].State"
32        },
33        {
34          "expected": "failed",
35          "matcher": "pathAny",
36          "state": "failure",
37          "argument": "BundleTasks[].State"
38        }
39      ]
40    },
41    "ConversionTaskCancelled": {
42      "delay": 15,
43      "operation": "DescribeConversionTasks",
44      "maxAttempts": 40,
45      "acceptors": [
46        {
47          "expected": "cancelled",
48          "matcher": "pathAll",
49          "state": "success",
50          "argument": "ConversionTasks[].State"
51        }
52      ]
53    },
54    "ConversionTaskCompleted": {
55      "delay": 15,
56      "operation": "DescribeConversionTasks",
57      "maxAttempts": 40,
58      "acceptors": [
59        {
60          "expected": "completed",
61          "matcher": "pathAll",
62          "state": "success",
63          "argument": "ConversionTasks[].State"
64        },
65        {
66          "expected": "cancelled",
67          "matcher": "pathAny",
68          "state": "failure",
69          "argument": "ConversionTasks[].State"
70        },
71        {
72          "expected": "cancelling",
73          "matcher": "pathAny",
74          "state": "failure",
75          "argument": "ConversionTasks[].State"
76        }
77      ]
78    },
79    "ConversionTaskDeleted": {
80      "delay": 15,
81      "operation": "DescribeConversionTasks",
82      "maxAttempts": 40,
83      "acceptors": [
84        {
85          "expected": "deleted",
86          "matcher": "pathAll",
87          "state": "success",
88          "argument": "ConversionTasks[].State"
89        }
90      ]
91    },
92    "CustomerGatewayAvailable": {
93      "delay": 15,
94      "operation": "DescribeCustomerGateways",
95      "maxAttempts": 40,
96      "acceptors": [
97        {
98          "expected": "available",
99          "matcher": "pathAll",
100          "state": "success",
101          "argument": "CustomerGateways[].State"
102        },
103        {
104          "expected": "deleted",
105          "matcher": "pathAny",
106          "state": "failure",
107          "argument": "CustomerGateways[].State"
108        },
109        {
110          "expected": "deleting",
111          "matcher": "pathAny",
112          "state": "failure",
113          "argument": "CustomerGateways[].State"
114        }
115      ]
116    },
117    "ExportTaskCancelled": {
118      "delay": 15,
119      "operation": "DescribeExportTasks",
120      "maxAttempts": 40,
121      "acceptors": [
122        {
123          "expected": "cancelled",
124          "matcher": "pathAll",
125          "state": "success",
126          "argument": "ExportTasks[].State"
127        }
128      ]
129    },
130    "ExportTaskCompleted": {
131      "delay": 15,
132      "operation": "DescribeExportTasks",
133      "maxAttempts": 40,
134      "acceptors": [
135        {
136          "expected": "completed",
137          "matcher": "pathAll",
138          "state": "success",
139          "argument": "ExportTasks[].State"
140        }
141      ]
142    },
143    "ImageExists": {
144      "operation": "DescribeImages",
145      "maxAttempts": 40,
146      "delay": 15,
147      "acceptors": [
148        {
149          "matcher": "path",
150          "expected": true,
151          "argument": "length(Images[]) > `0`",
152          "state": "success"
153        },
154        {
155          "matcher": "error",
156          "expected": "InvalidAMIID.NotFound",
157          "state": "retry"
158        }
159      ]
160    },
161    "ImageAvailable": {
162      "operation": "DescribeImages",
163      "maxAttempts": 40,
164      "delay": 15,
165      "acceptors": [
166        {
167          "state": "success",
168          "matcher": "pathAll",
169          "argument": "Images[].State",
170          "expected": "available"
171        },
172        {
173          "state": "failure",
174          "matcher": "pathAny",
175          "argument": "Images[].State",
176          "expected": "failed"
177        }
178      ]
179    },
180    "InstanceRunning": {
181      "delay": 15,
182      "operation": "DescribeInstances",
183      "maxAttempts": 40,
184      "acceptors": [
185        {
186          "expected": "running",
187          "matcher": "pathAll",
188          "state": "success",
189          "argument": "Reservations[].Instances[].State.Name"
190        },
191        {
192          "expected": "shutting-down",
193          "matcher": "pathAny",
194          "state": "failure",
195          "argument": "Reservations[].Instances[].State.Name"
196        },
197        {
198          "expected": "terminated",
199          "matcher": "pathAny",
200          "state": "failure",
201          "argument": "Reservations[].Instances[].State.Name"
202        },
203        {
204          "expected": "stopping",
205          "matcher": "pathAny",
206          "state": "failure",
207          "argument": "Reservations[].Instances[].State.Name"
208        },
209        {
210          "matcher": "error",
211          "expected": "InvalidInstanceID.NotFound",
212          "state": "retry"
213        }
214      ]
215    },
216    "InstanceStatusOk": {
217      "operation": "DescribeInstanceStatus",
218      "maxAttempts": 40,
219      "delay": 15,
220      "acceptors": [
221        {
222          "state": "success",
223          "matcher": "pathAll",
224          "argument": "InstanceStatuses[].InstanceStatus.Status",
225          "expected": "ok"
226        },
227        {
228          "matcher": "error",
229          "expected": "InvalidInstanceID.NotFound",
230          "state": "retry"
231        }
232      ]
233    },
234    "InstanceStopped": {
235      "delay": 15,
236      "operation": "DescribeInstances",
237      "maxAttempts": 40,
238      "acceptors": [
239        {
240          "expected": "stopped",
241          "matcher": "pathAll",
242          "state": "success",
243          "argument": "Reservations[].Instances[].State.Name"
244        },
245        {
246          "expected": "pending",
247          "matcher": "pathAny",
248          "state": "failure",
249          "argument": "Reservations[].Instances[].State.Name"
250        },
251        {
252          "expected": "terminated",
253          "matcher": "pathAny",
254          "state": "failure",
255          "argument": "Reservations[].Instances[].State.Name"
256        }
257      ]
258    },
259    "InstanceTerminated": {
260      "delay": 15,
261      "operation": "DescribeInstances",
262      "maxAttempts": 40,
263      "acceptors": [
264        {
265          "expected": "terminated",
266          "matcher": "pathAll",
267          "state": "success",
268          "argument": "Reservations[].Instances[].State.Name"
269        },
270        {
271          "expected": "pending",
272          "matcher": "pathAny",
273          "state": "failure",
274          "argument": "Reservations[].Instances[].State.Name"
275        },
276        {
277          "expected": "stopping",
278          "matcher": "pathAny",
279          "state": "failure",
280          "argument": "Reservations[].Instances[].State.Name"
281        }
282      ]
283    },
284    "KeyPairExists": {
285      "operation": "DescribeKeyPairs",
286      "delay": 5,
287      "maxAttempts": 6,
288      "acceptors": [
289        {
290          "expected": true,
291          "matcher": "path",
292          "state": "success",
293          "argument": "length(KeyPairs[].KeyName) > `0`"
294        },
295        {
296          "expected": "InvalidKeyPair.NotFound",
297          "matcher": "error",
298          "state": "retry"
299        }
300      ]
301    },
302    "NatGatewayAvailable": {
303      "operation": "DescribeNatGateways",
304      "delay": 15,
305      "maxAttempts": 40,
306      "acceptors": [
307        {
308          "state": "success",
309          "matcher": "pathAll",
310          "argument": "NatGateways[].State",
311          "expected": "available"
312        },
313        {
314          "state": "failure",
315          "matcher": "pathAny",
316          "argument": "NatGateways[].State",
317          "expected": "failed"
318        },
319        {
320          "state": "failure",
321          "matcher": "pathAny",
322          "argument": "NatGateways[].State",
323          "expected": "deleting"
324        },
325        {
326          "state": "failure",
327          "matcher": "pathAny",
328          "argument": "NatGateways[].State",
329          "expected": "deleted"
330        },
331        {
332          "state": "retry",
333          "matcher": "error",
334          "expected": "NatGatewayNotFound"
335        }
336      ]
337    },
338    "NetworkInterfaceAvailable": {
339      "operation": "DescribeNetworkInterfaces",
340      "delay": 20,
341      "maxAttempts": 10,
342      "acceptors": [
343        {
344          "expected": "available",
345          "matcher": "pathAll",
346          "state": "success",
347          "argument": "NetworkInterfaces[].Status"
348        },
349        {
350          "expected": "InvalidNetworkInterfaceID.NotFound",
351          "matcher": "error",
352          "state": "failure"
353        }
354      ]
355    },
356    "PasswordDataAvailable": {
357      "operation": "GetPasswordData",
358      "maxAttempts": 40,
359      "delay": 15,
360      "acceptors": [
361        {
362          "state": "success",
363          "matcher": "path",
364          "argument": "length(PasswordData) > `0`",
365          "expected": true
366        }
367      ]
368    },
369    "SnapshotCompleted": {
370      "delay": 15,
371      "operation": "DescribeSnapshots",
372      "maxAttempts": 40,
373      "acceptors": [
374        {
375          "expected": "completed",
376          "matcher": "pathAll",
377          "state": "success",
378          "argument": "Snapshots[].State"
379        }
380      ]
381    },
382    "SecurityGroupExists": {
383      "operation": "DescribeSecurityGroups",
384      "delay": 5,
385      "maxAttempts": 6,
386      "acceptors": [
387        {
388          "expected": true,
389          "matcher": "path",
390          "state": "success",
391          "argument": "length(SecurityGroups[].GroupId) > `0`"
392        },
393        {
394          "expected": "InvalidGroupNotFound",
395          "matcher": "error",
396          "state": "retry"
397        }
398      ]
399    },
400    "SpotInstanceRequestFulfilled": {
401      "operation": "DescribeSpotInstanceRequests",
402      "maxAttempts": 40,
403      "delay": 15,
404      "acceptors": [
405        {
406          "state": "success",
407          "matcher": "pathAll",
408          "argument": "SpotInstanceRequests[].Status.Code",
409          "expected": "fulfilled"
410        },
411        {
412          "state": "success",
413          "matcher": "pathAll",
414          "argument": "SpotInstanceRequests[].Status.Code",
415          "expected": "request-canceled-and-instance-running"
416        },
417        {
418          "state": "failure",
419          "matcher": "pathAny",
420          "argument": "SpotInstanceRequests[].Status.Code",
421          "expected": "schedule-expired"
422        },
423        {
424          "state": "failure",
425          "matcher": "pathAny",
426          "argument": "SpotInstanceRequests[].Status.Code",
427          "expected": "canceled-before-fulfillment"
428        },
429        {
430          "state": "failure",
431          "matcher": "pathAny",
432          "argument": "SpotInstanceRequests[].Status.Code",
433          "expected": "bad-parameters"
434        },
435        {
436          "state": "failure",
437          "matcher": "pathAny",
438          "argument": "SpotInstanceRequests[].Status.Code",
439          "expected": "system-error"
440        },
441        {
442          "state": "retry",
443          "matcher": "error",
444          "expected": "InvalidSpotInstanceRequestID.NotFound"
445        }
446      ]
447    },
448    "SubnetAvailable": {
449      "delay": 15,
450      "operation": "DescribeSubnets",
451      "maxAttempts": 40,
452      "acceptors": [
453        {
454          "expected": "available",
455          "matcher": "pathAll",
456          "state": "success",
457          "argument": "Subnets[].State"
458        }
459      ]
460    },
461    "SystemStatusOk": {
462      "operation": "DescribeInstanceStatus",
463      "maxAttempts": 40,
464      "delay": 15,
465      "acceptors": [
466        {
467          "state": "success",
468          "matcher": "pathAll",
469          "argument": "InstanceStatuses[].SystemStatus.Status",
470          "expected": "ok"
471        }
472      ]
473    },
474    "VolumeAvailable": {
475      "delay": 15,
476      "operation": "DescribeVolumes",
477      "maxAttempts": 40,
478      "acceptors": [
479        {
480          "expected": "available",
481          "matcher": "pathAll",
482          "state": "success",
483          "argument": "Volumes[].State"
484        },
485        {
486          "expected": "deleted",
487          "matcher": "pathAny",
488          "state": "failure",
489          "argument": "Volumes[].State"
490        }
491      ]
492    },
493    "VolumeDeleted": {
494      "delay": 15,
495      "operation": "DescribeVolumes",
496      "maxAttempts": 40,
497      "acceptors": [
498        {
499          "expected": "deleted",
500          "matcher": "pathAll",
501          "state": "success",
502          "argument": "Volumes[].State"
503        },
504        {
505          "matcher": "error",
506          "expected": "InvalidVolume.NotFound",
507          "state": "success"
508        }
509      ]
510    },
511    "VolumeInUse": {
512      "delay": 15,
513      "operation": "DescribeVolumes",
514      "maxAttempts": 40,
515      "acceptors": [
516        {
517          "expected": "in-use",
518          "matcher": "pathAll",
519          "state": "success",
520          "argument": "Volumes[].State"
521        },
522        {
523          "expected": "deleted",
524          "matcher": "pathAny",
525          "state": "failure",
526          "argument": "Volumes[].State"
527        }
528      ]
529    },
530    "VpcAvailable": {
531      "delay": 15,
532      "operation": "DescribeVpcs",
533      "maxAttempts": 40,
534      "acceptors": [
535        {
536          "expected": "available",
537          "matcher": "pathAll",
538          "state": "success",
539          "argument": "Vpcs[].State"
540        }
541      ]
542    },
543    "VpcExists": {
544      "operation": "DescribeVpcs",
545      "delay": 1,
546      "maxAttempts": 5,
547      "acceptors": [
548        {
549          "matcher": "status",
550          "expected": 200,
551          "state": "success"
552        },
553        {
554          "matcher": "error",
555          "expected": "InvalidVpcID.NotFound",
556          "state": "retry"
557        }
558      ]
559    },
560    "VpnConnectionAvailable": {
561      "delay": 15,
562      "operation": "DescribeVpnConnections",
563      "maxAttempts": 40,
564      "acceptors": [
565        {
566          "expected": "available",
567          "matcher": "pathAll",
568          "state": "success",
569          "argument": "VpnConnections[].State"
570        },
571        {
572          "expected": "deleting",
573          "matcher": "pathAny",
574          "state": "failure",
575          "argument": "VpnConnections[].State"
576        },
577        {
578          "expected": "deleted",
579          "matcher": "pathAny",
580          "state": "failure",
581          "argument": "VpnConnections[].State"
582        }
583      ]
584    },
585    "VpnConnectionDeleted": {
586      "delay": 15,
587      "operation": "DescribeVpnConnections",
588      "maxAttempts": 40,
589      "acceptors": [
590        {
591          "expected": "deleted",
592          "matcher": "pathAll",
593          "state": "success",
594          "argument": "VpnConnections[].State"
595        },
596        {
597          "expected": "pending",
598          "matcher": "pathAny",
599          "state": "failure",
600          "argument": "VpnConnections[].State"
601        }
602      ]
603    },
604    "VpcPeeringConnectionExists": {
605      "delay": 15,
606      "operation": "DescribeVpcPeeringConnections",
607      "maxAttempts": 40,
608      "acceptors": [
609        {
610          "matcher": "status",
611          "expected": 200,
612          "state": "success"
613        },
614        {
615          "matcher": "error",
616          "expected": "InvalidVpcPeeringConnectionID.NotFound",
617          "state": "retry"
618        }
619      ]
620    },
621    "VpcPeeringConnectionDeleted": {
622      "delay": 15,
623      "operation": "DescribeVpcPeeringConnections",
624      "maxAttempts": 40,
625      "acceptors": [
626        {
627          "expected": "deleted",
628          "matcher": "pathAll",
629          "state": "success",
630          "argument": "VpcPeeringConnections[].Status.Code"
631        },
632        {
633          "matcher": "error",
634          "expected": "InvalidVpcPeeringConnectionID.NotFound",
635          "state": "success"
636        }
637      ]
638    }
639  }
640}
641