func customerGatewayRefreshFunc(conn *ec2.EC2, gatewayId string) resource.StateRefreshFunc { return func() (interface{}, string, error) { gatewayFilter := &ec2.Filter{ Name: aws.String("customer-gateway-id"), Values: []*string{aws.String(gatewayId)}, } resp, err := conn.DescribeCustomerGateways(&ec2.DescribeCustomerGatewaysInput{ Filters: []*ec2.Filter{gatewayFilter}, }) if err != nil { if ec2err, ok := err.(awserr.Error); ok && ec2err.Code() == "InvalidCustomerGatewayID.NotFound" { resp = nil } else { log.Printf("Error on CustomerGatewayRefresh: %s", err) return nil, "", err } } if resp == nil || len(resp.CustomerGateways) == 0 { // handle consistency issues return nil, "", nil } gateway := resp.CustomerGateways[0] return gateway, *gateway.State, nil } }