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 "InternetGatewayExists": { 285 "operation": "DescribeInternetGateways", 286 "delay": 5, 287 "maxAttempts": 6, 288 "acceptors": [ 289 { 290 "expected": true, 291 "matcher": "path", 292 "state": "success", 293 "argument": "length(InternetGateways[].InternetGatewayId) > `0`" 294 }, 295 { 296 "expected": "InvalidInternetGateway.NotFound", 297 "matcher": "error", 298 "state": "retry" 299 } 300 ] 301 }, 302 "KeyPairExists": { 303 "operation": "DescribeKeyPairs", 304 "delay": 5, 305 "maxAttempts": 6, 306 "acceptors": [ 307 { 308 "expected": true, 309 "matcher": "path", 310 "state": "success", 311 "argument": "length(KeyPairs[].KeyName) > `0`" 312 }, 313 { 314 "expected": "InvalidKeyPair.NotFound", 315 "matcher": "error", 316 "state": "retry" 317 } 318 ] 319 }, 320 "NatGatewayAvailable": { 321 "operation": "DescribeNatGateways", 322 "delay": 15, 323 "maxAttempts": 40, 324 "acceptors": [ 325 { 326 "state": "success", 327 "matcher": "pathAll", 328 "argument": "NatGateways[].State", 329 "expected": "available" 330 }, 331 { 332 "state": "failure", 333 "matcher": "pathAny", 334 "argument": "NatGateways[].State", 335 "expected": "failed" 336 }, 337 { 338 "state": "failure", 339 "matcher": "pathAny", 340 "argument": "NatGateways[].State", 341 "expected": "deleting" 342 }, 343 { 344 "state": "failure", 345 "matcher": "pathAny", 346 "argument": "NatGateways[].State", 347 "expected": "deleted" 348 }, 349 { 350 "state": "retry", 351 "matcher": "error", 352 "expected": "NatGatewayNotFound" 353 } 354 ] 355 }, 356 "NatGatewayDeleted": { 357 "operation": "DescribeNatGateways", 358 "delay": 15, 359 "maxAttempts": 40, 360 "acceptors": [ 361 { 362 "state": "success", 363 "matcher": "pathAll", 364 "argument": "NatGateways[].State", 365 "expected": "deleted" 366 }, 367 { 368 "state": "success", 369 "matcher": "error", 370 "expected": "NatGatewayNotFound" 371 } 372 ] 373 }, 374 "NetworkInterfaceAvailable": { 375 "operation": "DescribeNetworkInterfaces", 376 "delay": 20, 377 "maxAttempts": 10, 378 "acceptors": [ 379 { 380 "expected": "available", 381 "matcher": "pathAll", 382 "state": "success", 383 "argument": "NetworkInterfaces[].Status" 384 }, 385 { 386 "expected": "InvalidNetworkInterfaceID.NotFound", 387 "matcher": "error", 388 "state": "failure" 389 } 390 ] 391 }, 392 "PasswordDataAvailable": { 393 "operation": "GetPasswordData", 394 "maxAttempts": 40, 395 "delay": 15, 396 "acceptors": [ 397 { 398 "state": "success", 399 "matcher": "path", 400 "argument": "length(PasswordData) > `0`", 401 "expected": true 402 } 403 ] 404 }, 405 "SnapshotCompleted": { 406 "delay": 15, 407 "operation": "DescribeSnapshots", 408 "maxAttempts": 40, 409 "acceptors": [ 410 { 411 "expected": "completed", 412 "matcher": "pathAll", 413 "state": "success", 414 "argument": "Snapshots[].State" 415 }, 416 { 417 "expected": "error", 418 "matcher": "pathAny", 419 "state": "failure", 420 "argument": "Snapshots[].State" 421 } 422 ] 423 }, 424 "SnapshotImported": { 425 "delay": 15, 426 "operation": "DescribeImportSnapshotTasks", 427 "maxAttempts": 40, 428 "acceptors": [ 429 { 430 "expected": "completed", 431 "matcher": "pathAll", 432 "state": "success", 433 "argument": "ImportSnapshotTasks[].SnapshotTaskDetail.Status" 434 }, 435 { 436 "expected": "error", 437 "matcher": "pathAny", 438 "state": "failure", 439 "argument": "ImportSnapshotTasks[].SnapshotTaskDetail.Status" 440 } 441 ] 442 }, 443 "SecurityGroupExists": { 444 "operation": "DescribeSecurityGroups", 445 "delay": 5, 446 "maxAttempts": 6, 447 "acceptors": [ 448 { 449 "expected": true, 450 "matcher": "path", 451 "state": "success", 452 "argument": "length(SecurityGroups[].GroupId) > `0`" 453 }, 454 { 455 "expected": "InvalidGroup.NotFound", 456 "matcher": "error", 457 "state": "retry" 458 } 459 ] 460 }, 461 "SpotInstanceRequestFulfilled": { 462 "operation": "DescribeSpotInstanceRequests", 463 "maxAttempts": 40, 464 "delay": 15, 465 "acceptors": [ 466 { 467 "state": "success", 468 "matcher": "pathAll", 469 "argument": "SpotInstanceRequests[].Status.Code", 470 "expected": "fulfilled" 471 }, 472 { 473 "state": "success", 474 "matcher": "pathAll", 475 "argument": "SpotInstanceRequests[].Status.Code", 476 "expected": "request-canceled-and-instance-running" 477 }, 478 { 479 "state": "failure", 480 "matcher": "pathAny", 481 "argument": "SpotInstanceRequests[].Status.Code", 482 "expected": "schedule-expired" 483 }, 484 { 485 "state": "failure", 486 "matcher": "pathAny", 487 "argument": "SpotInstanceRequests[].Status.Code", 488 "expected": "canceled-before-fulfillment" 489 }, 490 { 491 "state": "failure", 492 "matcher": "pathAny", 493 "argument": "SpotInstanceRequests[].Status.Code", 494 "expected": "bad-parameters" 495 }, 496 { 497 "state": "failure", 498 "matcher": "pathAny", 499 "argument": "SpotInstanceRequests[].Status.Code", 500 "expected": "system-error" 501 }, 502 { 503 "state": "retry", 504 "matcher": "error", 505 "expected": "InvalidSpotInstanceRequestID.NotFound" 506 } 507 ] 508 }, 509 "StoreImageTaskComplete": { 510 "delay": 5, 511 "operation": "DescribeStoreImageTasks", 512 "maxAttempts": 40, 513 "acceptors": [ 514 { 515 "expected": "Completed", 516 "matcher": "pathAll", 517 "state": "success", 518 "argument": "StoreImageTaskResults[].StoreTaskState" 519 }, 520 { 521 "expected": "Failed", 522 "matcher": "pathAny", 523 "state": "failure", 524 "argument": "StoreImageTaskResults[].StoreTaskState" 525 }, 526 { 527 "expected": "InProgress", 528 "matcher": "pathAny", 529 "state": "retry", 530 "argument": "StoreImageTaskResults[].StoreTaskState" 531 } 532 ] 533 }, 534 "SubnetAvailable": { 535 "delay": 15, 536 "operation": "DescribeSubnets", 537 "maxAttempts": 40, 538 "acceptors": [ 539 { 540 "expected": "available", 541 "matcher": "pathAll", 542 "state": "success", 543 "argument": "Subnets[].State" 544 } 545 ] 546 }, 547 "SystemStatusOk": { 548 "operation": "DescribeInstanceStatus", 549 "maxAttempts": 40, 550 "delay": 15, 551 "acceptors": [ 552 { 553 "state": "success", 554 "matcher": "pathAll", 555 "argument": "InstanceStatuses[].SystemStatus.Status", 556 "expected": "ok" 557 } 558 ] 559 }, 560 "VolumeAvailable": { 561 "delay": 15, 562 "operation": "DescribeVolumes", 563 "maxAttempts": 40, 564 "acceptors": [ 565 { 566 "expected": "available", 567 "matcher": "pathAll", 568 "state": "success", 569 "argument": "Volumes[].State" 570 }, 571 { 572 "expected": "deleted", 573 "matcher": "pathAny", 574 "state": "failure", 575 "argument": "Volumes[].State" 576 } 577 ] 578 }, 579 "VolumeDeleted": { 580 "delay": 15, 581 "operation": "DescribeVolumes", 582 "maxAttempts": 40, 583 "acceptors": [ 584 { 585 "expected": "deleted", 586 "matcher": "pathAll", 587 "state": "success", 588 "argument": "Volumes[].State" 589 }, 590 { 591 "matcher": "error", 592 "expected": "InvalidVolume.NotFound", 593 "state": "success" 594 } 595 ] 596 }, 597 "VolumeInUse": { 598 "delay": 15, 599 "operation": "DescribeVolumes", 600 "maxAttempts": 40, 601 "acceptors": [ 602 { 603 "expected": "in-use", 604 "matcher": "pathAll", 605 "state": "success", 606 "argument": "Volumes[].State" 607 }, 608 { 609 "expected": "deleted", 610 "matcher": "pathAny", 611 "state": "failure", 612 "argument": "Volumes[].State" 613 } 614 ] 615 }, 616 "VpcAvailable": { 617 "delay": 15, 618 "operation": "DescribeVpcs", 619 "maxAttempts": 40, 620 "acceptors": [ 621 { 622 "expected": "available", 623 "matcher": "pathAll", 624 "state": "success", 625 "argument": "Vpcs[].State" 626 } 627 ] 628 }, 629 "VpcExists": { 630 "operation": "DescribeVpcs", 631 "delay": 1, 632 "maxAttempts": 5, 633 "acceptors": [ 634 { 635 "matcher": "status", 636 "expected": 200, 637 "state": "success" 638 }, 639 { 640 "matcher": "error", 641 "expected": "InvalidVpcID.NotFound", 642 "state": "retry" 643 } 644 ] 645 }, 646 "VpnConnectionAvailable": { 647 "delay": 15, 648 "operation": "DescribeVpnConnections", 649 "maxAttempts": 40, 650 "acceptors": [ 651 { 652 "expected": "available", 653 "matcher": "pathAll", 654 "state": "success", 655 "argument": "VpnConnections[].State" 656 }, 657 { 658 "expected": "deleting", 659 "matcher": "pathAny", 660 "state": "failure", 661 "argument": "VpnConnections[].State" 662 }, 663 { 664 "expected": "deleted", 665 "matcher": "pathAny", 666 "state": "failure", 667 "argument": "VpnConnections[].State" 668 } 669 ] 670 }, 671 "VpnConnectionDeleted": { 672 "delay": 15, 673 "operation": "DescribeVpnConnections", 674 "maxAttempts": 40, 675 "acceptors": [ 676 { 677 "expected": "deleted", 678 "matcher": "pathAll", 679 "state": "success", 680 "argument": "VpnConnections[].State" 681 }, 682 { 683 "expected": "pending", 684 "matcher": "pathAny", 685 "state": "failure", 686 "argument": "VpnConnections[].State" 687 } 688 ] 689 }, 690 "VpcPeeringConnectionExists": { 691 "delay": 15, 692 "operation": "DescribeVpcPeeringConnections", 693 "maxAttempts": 40, 694 "acceptors": [ 695 { 696 "matcher": "status", 697 "expected": 200, 698 "state": "success" 699 }, 700 { 701 "matcher": "error", 702 "expected": "InvalidVpcPeeringConnectionID.NotFound", 703 "state": "retry" 704 } 705 ] 706 }, 707 "VpcPeeringConnectionDeleted": { 708 "delay": 15, 709 "operation": "DescribeVpcPeeringConnections", 710 "maxAttempts": 40, 711 "acceptors": [ 712 { 713 "expected": "deleted", 714 "matcher": "pathAll", 715 "state": "success", 716 "argument": "VpcPeeringConnections[].Status.Code" 717 }, 718 { 719 "matcher": "error", 720 "expected": "InvalidVpcPeeringConnectionID.NotFound", 721 "state": "success" 722 } 723 ] 724 } 725 } 726} 727