From c3eeb1fcd90ebd6eed41e797d3f33e662a03b4b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nathan=20V=C4=93rzemnieks?= Date: Wed, 9 Jul 2025 02:03:53 -0700 Subject: [PATCH] CloudWatch: Fix proxy transport issue (#107807) CloudWatch: fix proxy transport issue --- go.mod | 2 +- go.sum | 4 ++-- pkg/tsdb/cloudwatch/cloudwatch.go | 18 ++++++++++-------- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index 44aa93b4190..64b387b8134 100644 --- a/go.mod +++ b/go.mod @@ -99,7 +99,7 @@ require ( github.com/grafana/grafana-api-golang-client v0.27.0 // @grafana/alerting-backend github.com/grafana/grafana-app-sdk v0.39.2 // @grafana/grafana-app-platform-squad github.com/grafana/grafana-app-sdk/logging v0.39.1 // @grafana/grafana-app-platform-squad - github.com/grafana/grafana-aws-sdk v1.0.2 // @grafana/aws-datasources + github.com/grafana/grafana-aws-sdk v1.0.3 // @grafana/aws-datasources github.com/grafana/grafana-azure-sdk-go/v2 v2.1.6 // @grafana/partner-datasources github.com/grafana/grafana-cloud-migration-snapshot v1.6.0 // @grafana/grafana-operator-experience-squad github.com/grafana/grafana-google-sdk-go v0.4.1 // @grafana/partner-datasources diff --git a/go.sum b/go.sum index 88a184a171a..c208845b1c1 100644 --- a/go.sum +++ b/go.sum @@ -1610,8 +1610,8 @@ github.com/grafana/grafana-app-sdk v0.39.2 h1:ymfr+1318t+JC9U2OYrzVpGmNG/aJONUmF github.com/grafana/grafana-app-sdk v0.39.2/go.mod h1:t0m6q561lpoHQCixS9LUHFUhUzDClzNtm7BH60gHVSY= github.com/grafana/grafana-app-sdk/logging v0.39.1 h1:lI5rbrheuwVPuyIM6LIuEYOCSpgmXahfKtqeMyhbGPU= github.com/grafana/grafana-app-sdk/logging v0.39.1/go.mod h1:WhDENSnaGHtyVVwZGVnAR7YLvh2xlLDYR3D7E6h7XVk= -github.com/grafana/grafana-aws-sdk v1.0.2 h1:98eBuHYFmgvH0xO9kKf4RBsEsgQRp8EOA/9yhDIpkss= -github.com/grafana/grafana-aws-sdk v1.0.2/go.mod h1:hO7q7yWV+t6dmiyJjMa3IbuYnYkBua+G/IAlOPVIYKE= +github.com/grafana/grafana-aws-sdk v1.0.3 h1:FtGiTrdlPXuQmLqeZdyNjjkNKOOdvQ4sxWw8MtJc6ow= +github.com/grafana/grafana-aws-sdk v1.0.3/go.mod h1:hO7q7yWV+t6dmiyJjMa3IbuYnYkBua+G/IAlOPVIYKE= github.com/grafana/grafana-azure-sdk-go/v2 v2.1.6 h1:OfCkitCuomzZKW1WYHrG8MxKwtMhALb7jqoj+487eTg= github.com/grafana/grafana-azure-sdk-go/v2 v2.1.6/go.mod h1:V7y2BmsWxS3A9Ohebwn4OiSfJJqi//4JQydQ8fHTduo= github.com/grafana/grafana-cloud-migration-snapshot v1.6.0 h1:S4kHwr//AqhtL9xHBtz1gqVgZQeCRGTxjgsRBAkpjKY= diff --git a/pkg/tsdb/cloudwatch/cloudwatch.go b/pkg/tsdb/cloudwatch/cloudwatch.go index 28567e4e5d5..a174d42b153 100644 --- a/pkg/tsdb/cloudwatch/cloudwatch.go +++ b/pkg/tsdb/cloudwatch/cloudwatch.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "fmt" + "net/http" "slices" "time" @@ -15,9 +16,9 @@ import ( "github.com/grafana/grafana-aws-sdk/pkg/awsauth" "github.com/grafana/grafana-plugin-sdk-go/backend" + "github.com/grafana/grafana-plugin-sdk-go/backend/httpclient" "github.com/grafana/grafana-plugin-sdk-go/backend/instancemgmt" "github.com/grafana/grafana-plugin-sdk-go/backend/log" - "github.com/grafana/grafana-plugin-sdk-go/backend/proxy" "github.com/grafana/grafana-plugin-sdk-go/backend/resource/httpadapter" "github.com/grafana/grafana/pkg/tsdb/cloudwatch/clients" "github.com/grafana/grafana/pkg/tsdb/cloudwatch/kinds/dataquery" @@ -49,7 +50,7 @@ type DataQueryJson struct { type DataSource struct { Settings models.CloudWatchSettings - ProxyOpts *proxy.Options + HTTPClient *http.Client AWSConfigProvider awsauth.ConfigProvider logger log.Logger @@ -73,9 +74,7 @@ func (ds *DataSource) newAWSConfig(ctx context.Context, region string) (aws.Conf Region: region, AccessKey: ds.Settings.AccessKey, SecretKey: ds.Settings.SecretKey, - } - if ds.Settings.GrafanaSettings.SecureSocksDSProxyEnabled && ds.Settings.SecureSocksProxyEnabled { - authSettings.ProxyOptions = ds.ProxyOpts + HTTPClient: ds.HTTPClient, } cfg, err := ds.AWSConfigProvider.GetConfig(ctx, authSettings) if err != nil { @@ -94,11 +93,14 @@ func NewDatasource(ctx context.Context, settings backend.DataSourceInstanceSetti if err != nil { return nil, err } + httpClient, err := httpclient.New(opts) + if err != nil { + return nil, err + } ds := &DataSource{ - Settings: instanceSettings, - // this is used to build a custom dialer when secure socks proxy is enabled - ProxyOpts: opts.ProxyOptions, + Settings: instanceSettings, + HTTPClient: httpClient, AWSConfigProvider: awsauth.NewConfigProvider(), logger: backend.NewLoggerWith("logger", "grafana-cloudwatch-datasource"), tagValueCache: cache.New(tagValueCacheExpiration, tagValueCacheExpiration*5),