diff --git a/builtin/providers/aws/resource_aws_nat_gateway.go b/builtin/providers/aws/resource_aws_nat_gateway.go index 4ad23ad8f5..1ec5e986e6 100644 --- a/builtin/providers/aws/resource_aws_nat_gateway.go +++ b/builtin/providers/aws/resource_aws_nat_gateway.go @@ -101,7 +101,14 @@ func resourceAwsNatGatewayRead(d *schema.ResourceData, meta interface{}) error { if err != nil { return err } - if ngRaw == nil || strings.ToLower(state) == "deleted" { + + status := map[string]bool{ + "deleted": true, + "deleting": true, + "failed": true, + } + + if _, ok := status[strings.ToLower(state)]; ngRaw == nil || ok { log.Printf("[INFO] Removing %s from Terraform state as it is not found or in the deleted state.", d.Id()) d.SetId("") return nil diff --git a/builtin/providers/aws/resource_aws_nat_gateway_test.go b/builtin/providers/aws/resource_aws_nat_gateway_test.go index c4dd8b6f68..dac50527c4 100644 --- a/builtin/providers/aws/resource_aws_nat_gateway_test.go +++ b/builtin/providers/aws/resource_aws_nat_gateway_test.go @@ -44,7 +44,12 @@ func testAccCheckNatGatewayDestroy(s *terraform.State) error { NatGatewayIds: []*string{aws.String(rs.Primary.ID)}, }) if err == nil { - if len(resp.NatGateways) > 0 && strings.ToLower(*resp.NatGateways[0].State) != "deleted" { + status := map[string]bool{ + "deleted": true, + "deleting": true, + "failed": true, + } + if _, ok := status[strings.ToLower(*resp.NatGateways[0].State)]; len(resp.NatGateways) > 0 && !ok { return fmt.Errorf("still exists") }