1{
2  "version": 2,
3  "waiters": {
4    "StackExists": {
5      "delay": 5,
6      "operation": "DescribeStacks",
7      "maxAttempts": 20,
8      "acceptors": [
9        {
10          "matcher": "status",
11          "expected": 200,
12          "state": "success"
13        },
14        {
15          "matcher": "error",
16          "expected": "ValidationError",
17          "state": "retry"
18        }
19      ]
20    },
21    "StackCreateComplete": {
22      "delay": 30,
23      "operation": "DescribeStacks",
24      "maxAttempts": 120,
25      "description": "Wait until stack status is CREATE_COMPLETE.",
26      "acceptors": [
27        {
28          "argument": "Stacks[].StackStatus",
29          "expected": "CREATE_COMPLETE",
30          "matcher": "pathAll",
31          "state": "success"
32        },
33        {
34          "argument": "Stacks[].StackStatus",
35          "expected": "CREATE_FAILED",
36          "matcher": "pathAny",
37          "state": "failure"
38        },
39        {
40          "argument": "Stacks[].StackStatus",
41          "expected": "DELETE_COMPLETE",
42          "matcher": "pathAny",
43          "state": "failure"
44        },
45        {
46          "argument": "Stacks[].StackStatus",
47          "expected": "DELETE_FAILED",
48          "matcher": "pathAny",
49          "state": "failure"
50        },
51        {
52          "argument": "Stacks[].StackStatus",
53          "expected": "ROLLBACK_FAILED",
54          "matcher": "pathAny",
55          "state": "failure"
56        },
57        {
58          "argument": "Stacks[].StackStatus",
59          "expected": "ROLLBACK_COMPLETE",
60          "matcher": "pathAny",
61          "state": "failure"
62        },
63        {
64          "expected": "ValidationError",
65          "matcher": "error",
66          "state": "failure"
67        }
68      ]
69    },
70    "StackDeleteComplete": {
71      "delay": 30,
72      "operation": "DescribeStacks",
73      "maxAttempts": 120,
74      "description": "Wait until stack status is DELETE_COMPLETE.",
75      "acceptors": [
76        {
77          "argument": "Stacks[].StackStatus",
78          "expected": "DELETE_COMPLETE",
79          "matcher": "pathAll",
80          "state": "success"
81        },
82        {
83          "expected": "ValidationError",
84          "matcher": "error",
85          "state": "success"
86        },
87        {
88          "argument": "Stacks[].StackStatus",
89          "expected": "DELETE_FAILED",
90          "matcher": "pathAny",
91          "state": "failure"
92        },
93        {
94          "argument": "Stacks[].StackStatus",
95          "expected": "CREATE_FAILED",
96          "matcher": "pathAny",
97          "state": "failure"
98        },
99        {
100          "argument": "Stacks[].StackStatus",
101          "expected": "ROLLBACK_FAILED",
102          "matcher": "pathAny",
103          "state": "failure"
104        },
105        {
106          "argument": "Stacks[].StackStatus",
107          "expected": "UPDATE_ROLLBACK_IN_PROGRESS",
108          "matcher": "pathAny",
109          "state": "failure"
110        },
111        {
112          "argument": "Stacks[].StackStatus",
113          "expected": "UPDATE_ROLLBACK_FAILED",
114          "matcher": "pathAny",
115          "state": "failure"
116        },
117        {
118          "argument": "Stacks[].StackStatus",
119          "expected": "UPDATE_ROLLBACK_COMPLETE",
120          "matcher": "pathAny",
121          "state": "failure"
122        }
123      ]
124    },
125    "StackUpdateComplete": {
126      "delay": 30,
127      "maxAttempts": 120,
128      "operation": "DescribeStacks",
129      "description": "Wait until stack status is UPDATE_COMPLETE.",
130      "acceptors": [
131        {
132          "argument": "Stacks[].StackStatus",
133          "expected": "UPDATE_COMPLETE",
134          "matcher": "pathAll",
135          "state": "success"
136        },
137        {
138          "expected": "UPDATE_FAILED",
139          "matcher": "pathAny",
140          "state": "failure",
141          "argument": "Stacks[].StackStatus"
142        },
143        {
144          "argument": "Stacks[].StackStatus",
145          "expected": "UPDATE_ROLLBACK_FAILED",
146          "matcher": "pathAny",
147          "state": "failure"
148        },
149        {
150          "expected": "UPDATE_ROLLBACK_COMPLETE",
151          "matcher": "pathAny",
152          "state": "failure",
153          "argument": "Stacks[].StackStatus"
154        },
155        {
156          "expected": "ValidationError",
157          "matcher": "error",
158          "state": "failure"
159        }
160      ]
161    },
162    "StackImportComplete": {
163      "delay": 30,
164      "maxAttempts": 120,
165      "operation": "DescribeStacks",
166      "description": "Wait until stack status is IMPORT_COMPLETE.",
167      "acceptors": [
168        {
169          "argument": "Stacks[].StackStatus",
170          "expected": "IMPORT_COMPLETE",
171          "matcher": "pathAll",
172          "state": "success"
173        },
174        {
175          "expected": "ROLLBACK_COMPLETE",
176          "matcher": "pathAny",
177          "state": "failure",
178          "argument": "Stacks[].StackStatus"
179        },
180        {
181          "expected": "ROLLBACK_FAILED",
182          "matcher": "pathAny",
183          "state": "failure",
184          "argument": "Stacks[].StackStatus"
185        },
186        {
187          "argument": "Stacks[].StackStatus",
188          "expected": "IMPORT_ROLLBACK_IN_PROGRESS",
189          "matcher": "pathAny",
190          "state": "failure"
191        },
192        {
193          "argument": "Stacks[].StackStatus",
194          "expected": "IMPORT_ROLLBACK_FAILED",
195          "matcher": "pathAny",
196          "state": "failure"
197        },
198        {
199          "expected": "IMPORT_ROLLBACK_COMPLETE",
200          "matcher": "pathAny",
201          "state": "failure",
202          "argument": "Stacks[].StackStatus"
203        },
204        {
205          "expected": "ValidationError",
206          "matcher": "error",
207          "state": "failure"
208        }
209      ]
210    },
211    "StackRollbackComplete": {
212      "delay": 30,
213      "operation": "DescribeStacks",
214      "maxAttempts": 120,
215      "description": "Wait until stack status is UPDATE_ROLLBACK_COMPLETE.",
216      "acceptors": [
217        {
218          "argument": "Stacks[].StackStatus",
219          "expected": "UPDATE_ROLLBACK_COMPLETE",
220          "matcher": "pathAll",
221          "state": "success"
222        },
223        {
224          "argument": "Stacks[].StackStatus",
225          "expected": "UPDATE_FAILED",
226          "matcher": "pathAny",
227          "state": "failure"
228        },
229        {
230          "argument": "Stacks[].StackStatus",
231          "expected": "UPDATE_ROLLBACK_FAILED",
232          "matcher": "pathAny",
233          "state": "failure"
234        },
235        {
236          "argument": "Stacks[].StackStatus",
237          "expected": "DELETE_FAILED",
238          "matcher": "pathAny",
239          "state": "failure"
240        },
241        {
242          "expected": "ValidationError",
243          "matcher": "error",
244          "state": "failure"
245        }
246      ]
247    },
248    "ChangeSetCreateComplete": {
249      "delay": 30,
250      "operation": "DescribeChangeSet",
251      "maxAttempts": 120,
252      "description": "Wait until change set status is CREATE_COMPLETE.",
253      "acceptors": [
254        {
255          "argument": "Status",
256          "expected": "CREATE_COMPLETE",
257          "matcher": "path",
258          "state": "success"
259        },
260        {
261          "argument": "Status",
262          "expected": "FAILED",
263          "matcher": "path",
264          "state": "failure"
265        },
266        {
267          "expected": "ValidationError",
268          "matcher": "error",
269          "state": "failure"
270        }
271      ]
272    },
273    "TypeRegistrationComplete": {
274      "delay": 30,
275      "operation": "DescribeTypeRegistration",
276      "maxAttempts": 120,
277      "description": "Wait until type registration is COMPLETE.",
278      "acceptors": [
279        {
280          "argument": "ProgressStatus",
281          "expected": "COMPLETE",
282          "matcher": "path",
283          "state": "success"
284        },
285        {
286          "argument": "ProgressStatus",
287          "expected": "FAILED",
288          "matcher": "path",
289          "state": "failure"
290        }
291      ]
292    }
293  }
294}
295