{
  "version": 2,
  "waiters": {
    "InstanceExists": {
      "delay": 5,
      "maxAttempts": 40,
      "operation": "DescribeInstances",
      "acceptors": [
        {
          "matcher": "path",
          "expected": true,
          "argument": "length(Reservations[]) > `0`",
          "state": "success"
        },
        {
          "matcher": "error",
          "expected": "InvalidInstanceID.NotFound",
          "state": "retry"
        }
      ]
    },
    "BundleTaskComplete": {
      "delay": 15,
      "operation": "DescribeBundleTasks",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "complete",
          "matcher": "pathAll",
          "state": "success",
          "argument": "BundleTasks[].State"
        },
        {
          "expected": "failed",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "BundleTasks[].State"
        }
      ]
    },
    "ConsoleOutputAvailable": {
      "operation": "GetConsoleOutput",
      "maxAttempts": 40,
      "delay": 15,
      "acceptors": [
        {
          "state": "success",
          "matcher": "path",
          "argument": "length(Output || '') > `0`",
          "expected": true
        }
      ]
    },
    "ConversionTaskCancelled": {
      "delay": 15,
      "operation": "DescribeConversionTasks",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "cancelled",
          "matcher": "pathAll",
          "state": "success",
          "argument": "ConversionTasks[].State"
        }
      ]
    },
    "ConversionTaskCompleted": {
      "delay": 15,
      "operation": "DescribeConversionTasks",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "completed",
          "matcher": "pathAll",
          "state": "success",
          "argument": "ConversionTasks[].State"
        },
        {
          "expected": "cancelled",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "ConversionTasks[].State"
        },
        {
          "expected": "cancelling",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "ConversionTasks[].State"
        }
      ]
    },
    "ConversionTaskDeleted": {
      "delay": 15,
      "operation": "DescribeConversionTasks",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "deleted",
          "matcher": "pathAll",
          "state": "success",
          "argument": "ConversionTasks[].State"
        }
      ]
    },
    "CustomerGatewayAvailable": {
      "delay": 15,
      "operation": "DescribeCustomerGateways",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "available",
          "matcher": "pathAll",
          "state": "success",
          "argument": "CustomerGateways[].State"
        },
        {
          "expected": "deleted",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "CustomerGateways[].State"
        },
        {
          "expected": "deleting",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "CustomerGateways[].State"
        }
      ]
    },
    "ExportTaskCancelled": {
      "delay": 15,
      "operation": "DescribeExportTasks",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "cancelled",
          "matcher": "pathAll",
          "state": "success",
          "argument": "ExportTasks[].State"
        }
      ]
    },
    "ExportTaskCompleted": {
      "delay": 15,
      "operation": "DescribeExportTasks",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "completed",
          "matcher": "pathAll",
          "state": "success",
          "argument": "ExportTasks[].State"
        }
      ]
    },
    "ImageExists": {
      "operation": "DescribeImages",
      "maxAttempts": 40,
      "delay": 15,
      "acceptors": [
        {
          "matcher": "path",
          "expected": true,
          "argument": "length(Images[]) > `0`",
          "state": "success"
        },
        {
          "matcher": "error",
          "expected": "InvalidAMIID.NotFound",
          "state": "retry"
        }
      ]
    },
    "ImageAvailable": {
      "operation": "DescribeImages",
      "maxAttempts": 40,
      "delay": 15,
      "acceptors": [
        {
          "state": "success",
          "matcher": "pathAll",
          "argument": "Images[].State",
          "expected": "available"
        },
        {
          "state": "failure",
          "matcher": "pathAny",
          "argument": "Images[].State",
          "expected": "failed"
        }
      ]
    },
    "InstanceRunning": {
      "delay": 15,
      "operation": "DescribeInstances",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "running",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Reservations[].Instances[].State.Name"
        },
        {
          "expected": "shutting-down",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Reservations[].Instances[].State.Name"
        },
        {
          "expected": "terminated",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Reservations[].Instances[].State.Name"
        },
        {
          "expected": "stopping",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Reservations[].Instances[].State.Name"
        },
        {
          "matcher": "error",
          "expected": "InvalidInstanceID.NotFound",
          "state": "retry"
        }
      ]
    },
    "InstanceStatusOk": {
      "operation": "DescribeInstanceStatus",
      "maxAttempts": 40,
      "delay": 15,
      "acceptors": [
        {
          "state": "success",
          "matcher": "pathAll",
          "argument": "InstanceStatuses[].InstanceStatus.Status",
          "expected": "ok"
        },
        {
          "matcher": "error",
          "expected": "InvalidInstanceID.NotFound",
          "state": "retry"
        }
      ]
    },
    "InstanceStopped": {
      "delay": 15,
      "operation": "DescribeInstances",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "stopped",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Reservations[].Instances[].State.Name"
        },
        {
          "expected": "pending",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Reservations[].Instances[].State.Name"
        },
        {
          "expected": "terminated",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Reservations[].Instances[].State.Name"
        }
      ]
    },
    "InstanceTerminated": {
      "delay": 15,
      "operation": "DescribeInstances",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "terminated",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Reservations[].Instances[].State.Name"
        },
        {
          "expected": "pending",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Reservations[].Instances[].State.Name"
        },
        {
          "expected": "stopping",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Reservations[].Instances[].State.Name"
        }
      ]
    },
    "KeyPairExists": {
      "operation": "DescribeKeyPairs",
      "delay": 5,
      "maxAttempts": 6,
      "acceptors": [
        {
          "expected": true,
          "matcher": "pathAll",
          "state": "success",
          "argument": "length(KeyPairs[].KeyName) > `0`"
        },
        {
          "expected": "InvalidKeyPair.NotFound",
          "matcher": "error",
          "state": "retry"
        }
      ]
    },
    "NatGatewayAvailable": {
      "operation": "DescribeNatGateways",
      "delay": 15,
      "maxAttempts": 40,
      "acceptors": [
        {
          "state": "success",
          "matcher": "pathAll",
          "argument": "NatGateways[].State",
          "expected": "available"
        },
        {
          "state": "failure",
          "matcher": "pathAny",
          "argument": "NatGateways[].State",
          "expected": "failed"
        },
        {
          "state": "failure",
          "matcher": "pathAny",
          "argument": "NatGateways[].State",
          "expected": "deleting"
        },
        {
          "state": "failure",
          "matcher": "pathAny",
          "argument": "NatGateways[].State",
          "expected": "deleted"
        },
        {
          "state": "retry",
          "matcher": "error",
          "expected": "NatGatewayNotFound"
        }
      ]
    },
    "NetworkInterfaceAvailable": {
      "operation": "DescribeNetworkInterfaces",
      "delay": 20,
      "maxAttempts": 10,
      "acceptors": [
        {
          "expected": "available",
          "matcher": "pathAll",
          "state": "success",
          "argument": "NetworkInterfaces[].Status"
        },
        {
          "expected": "InvalidNetworkInterfaceID.NotFound",
          "matcher": "error",
          "state": "failure"
        }
      ]
    },
    "PasswordDataAvailable": {
      "operation": "GetPasswordData",
      "maxAttempts": 40,
      "delay": 15,
      "acceptors": [
        {
          "state": "success",
          "matcher": "path",
          "argument": "length(PasswordData) > `0`",
          "expected": true
        }
      ]
    },
    "SnapshotCompleted": {
      "delay": 15,
      "operation": "DescribeSnapshots",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "completed",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Snapshots[].State"
        }
      ]
    },
    "SpotInstanceRequestFulfilled": {
      "operation": "DescribeSpotInstanceRequests",
      "maxAttempts": 40,
      "delay": 15,
      "acceptors": [
        {
          "state": "success",
          "matcher": "pathAll",
          "argument": "SpotInstanceRequests[].Status.Code",
          "expected": "fulfilled"
        },
        {
          "state": "failure",
          "matcher": "pathAny",
          "argument": "SpotInstanceRequests[].Status.Code",
          "expected": "schedule-expired"
        },
        {
          "state": "failure",
          "matcher": "pathAny",
          "argument": "SpotInstanceRequests[].Status.Code",
          "expected": "canceled-before-fulfillment"
        },
        {
          "state": "failure",
          "matcher": "pathAny",
          "argument": "SpotInstanceRequests[].Status.Code",
          "expected": "bad-parameters"
        },
        {
          "state": "failure",
          "matcher": "pathAny",
          "argument": "SpotInstanceRequests[].Status.Code",
          "expected": "system-error"
        }
      ]
    },
    "SubnetAvailable": {
      "delay": 15,
      "operation": "DescribeSubnets",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "available",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Subnets[].State"
        }
      ]
    },
    "SystemStatusOk": {
      "operation": "DescribeInstanceStatus",
      "maxAttempts": 40,
      "delay": 15,
      "acceptors": [
        {
          "state": "success",
          "matcher": "pathAll",
          "argument": "InstanceStatuses[].SystemStatus.Status",
          "expected": "ok"
        }
      ]
    },
    "VolumeAvailable": {
      "delay": 15,
      "operation": "DescribeVolumes",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "available",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Volumes[].State"
        },
        {
          "expected": "deleted",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Volumes[].State"
        }
      ]
    },
    "VolumeDeleted": {
      "delay": 15,
      "operation": "DescribeVolumes",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "deleted",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Volumes[].State"
        },
        {
          "matcher": "error",
          "expected": "InvalidVolume.NotFound",
          "state": "success"
        }
      ]
    },
    "VolumeInUse": {
      "delay": 15,
      "operation": "DescribeVolumes",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "in-use",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Volumes[].State"
        },
        {
          "expected": "deleted",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "Volumes[].State"
        }
      ]
    },
    "VpcAvailable": {
      "delay": 15,
      "operation": "DescribeVpcs",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "available",
          "matcher": "pathAll",
          "state": "success",
          "argument": "Vpcs[].State"
        }
      ]
    },
    "VpnConnectionAvailable": {
      "delay": 60,
      "operation": "DescribeVpnConnections",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "available",
          "matcher": "pathAll",
          "state": "success",
          "argument": "VpnConnections[].State"
        },
        {
          "expected": "deleting",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "VpnConnections[].State"
        },
        {
          "expected": "deleted",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "VpnConnections[].State"
        }
      ]
    },
    "VpnConnectionDeleted": {
      "delay": 15,
      "operation": "DescribeVpnConnections",
      "maxAttempts": 40,
      "acceptors": [
        {
          "expected": "deleted",
          "matcher": "pathAll",
          "state": "success",
          "argument": "VpnConnections[].State"
        },
        {
          "expected": "pending",
          "matcher": "pathAny",
          "state": "failure",
          "argument": "VpnConnections[].State"
        }
      ]
    },
    "VpcPeeringConnectionExists": {
      "delay": 15,
      "operation": "DescribeVpcPeeringConnections",
      "maxAttempts": 40,
      "acceptors": [
        {
          "matcher": "status",
          "expected": 200,
          "state": "success"
        },
        {
          "matcher": "error",
          "expected": "InvalidVpcPeeringConnectionID.NotFound",
          "state": "retry"
        }
      ]
    }
  }
}
