diff --git a/builder/amazon/common/state.go b/builder/amazon/common/state.go index 1e9dea36b..eaa29e92d 100644 --- a/builder/amazon/common/state.go +++ b/builder/amazon/common/state.go @@ -62,11 +62,16 @@ func InstanceStateRefreshFunc(conn *ec2.EC2, i *ec2.Instance) StateRefreshFunc { return func() (interface{}, string, error) { resp, err := conn.Instances([]string{i.InstanceId}, ec2.NewFilter()) if err != nil { - log.Printf("Error on InstanceStateRefresh: %s", err) - return nil, "", err + if ec2err, ok := err.(*ec2.Error); ok && ec2err.Code == "InvalidInstanceID.NotFound" { + // Set this to nil as if we didn't find anything. + resp = nil + } else { + log.Printf("Error on InstanceStateRefresh: %s", err) + return nil, "", err + } } - if len(resp.Reservations) == 0 || len(resp.Reservations[0].Instances) == 0 { + if resp == nil || len(resp.Reservations) == 0 || len(resp.Reservations[0].Instances) == 0 { // Sometimes AWS just has consistency issues and doesn't see // our instance yet. Return an empty state. return nil, "", nil