package cloudwatch import ( "fmt" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/cloudwatch" "github.com/grafana/grafana/pkg/tsdb" ) func (e *CloudWatchExecutor) buildMetricDataInput(queryContext *tsdb.TsdbQuery, queries map[string]*cloudWatchQuery) (*cloudwatch.GetMetricDataInput, error) { startTime, err := queryContext.TimeRange.ParseFrom() if err != nil { return nil, err } endTime, err := queryContext.TimeRange.ParseTo() if err != nil { return nil, err } if !startTime.Before(endTime) { return nil, fmt.Errorf("Invalid time range: Start time must be before end time") } metricDataInput := &cloudwatch.GetMetricDataInput{ StartTime: aws.Time(startTime), EndTime: aws.Time(endTime), ScanBy: aws.String("TimestampAscending"), } for _, query := range queries { metricDataQuery, err := e.buildMetricDataQuery(query) if err != nil { return nil, &queryError{err, query.RefId} } metricDataInput.MetricDataQueries = append(metricDataInput.MetricDataQueries, metricDataQuery) } return metricDataInput, nil }