// NGStateRefreshFunc returns a resource.StateRefreshFunc that is used to watch // a NAT Gateway. func NGStateRefreshFunc(conn *ec2.EC2, id string) resource.StateRefreshFunc { return func() (interface{}, string, error) { opts := &ec2.DescribeNatGatewaysInput{ NatGatewayIds: []*string{aws.String(id)}, } resp, err := conn.DescribeNatGateways(opts) if err != nil { if ec2err, ok := err.(awserr.Error); ok && ec2err.Code() == "NatGatewayNotFound" { resp = nil } else { log.Printf("Error on NGStateRefresh: %s", err) return nil, "", err } } if resp == nil { // Sometimes AWS just has consistency issues and doesn't see // our instance yet. Return an empty state. return nil, "", nil } ng := resp.NatGateways[0] return ng, *ng.State, nil } }