func streamStateRefreshFunc(conn *kinesis.Kinesis, sn string) resource.StateRefreshFunc { return func() (interface{}, string, error) { describeOpts := &kinesis.DescribeStreamInput{ StreamName: aws.String(sn), } resp, err := conn.DescribeStream(describeOpts) if err != nil { if awsErr, ok := err.(awserr.Error); ok { if awsErr.Code() == "ResourceNotFoundException" { return 42, "DESTROYED", nil } return nil, awsErr.Code(), err } return nil, "failed", err } return resp.StreamDescription, *resp.StreamDescription.StreamStatus, nil } }
func CheckStreamStatus(status string, service *kinesis.Kinesis, streamName string) bool { descParams := &kinesis.DescribeStreamInput{ StreamName: aws.String(streamName), } for i := 0; i < 30; i++ { respDescribe, err := service.DescribeStream(descParams) if *respDescribe.StreamDescription.StreamStatus == status { return true } fmt.Println(respDescribe) fmt.Println(err) time.Sleep(500 * time.Millisecond) } return false }