diff --git a/pkg/tsdb/cloudwatch/cloudwatch.go b/pkg/tsdb/cloudwatch/cloudwatch.go
index c87b77717b7..b66a5fb3b2d 100644
--- a/pkg/tsdb/cloudwatch/cloudwatch.go
+++ b/pkg/tsdb/cloudwatch/cloudwatch.go
@@ -99,7 +99,12 @@ func NewInstanceSettings(httpClientProvider httpclient.Provider) datasource.Inst
return nil, fmt.Errorf("error reading settings: %w", err)
}
- httpClient, err := httpClientProvider.New()
+ opts, err := settings.HTTPClientOptions()
+ if err != nil {
+ return nil, err
+ }
+
+ httpClient, err := httpClientProvider.New(opts)
if err != nil {
return nil, fmt.Errorf("error creating http client: %w", err)
}
@@ -245,9 +250,9 @@ func (e *cloudWatchExecutor) newSession(pluginCtx backend.PluginContext, region
region = instance.Settings.Region
}
- return e.sessions.GetSession(awsds.SessionConfig{
+ sess, err := e.sessions.GetSession(awsds.SessionConfig{
// https://github.com/grafana/grafana/issues/46365
- // HTTPClient: dsInfo.HTTPClient,
+ // HTTPClient: instance.HTTPClient,
Settings: awsds.AWSDatasourceSettings{
Profile: instance.Settings.Profile,
Region: region,
@@ -261,6 +266,17 @@ func (e *cloudWatchExecutor) newSession(pluginCtx backend.PluginContext, region
},
UserAgentName: aws.String("Cloudwatch"),
})
+ if err != nil {
+ return nil, err
+ }
+
+ // work around until https://github.com/grafana/grafana/issues/39089 is implemented
+ if e.cfg.SecureSocksDSProxy.Enabled && e.features.IsEnabled(featuremgmt.FlagSecureSocksDatasourceProxy) && instance.Settings.SecureSocksProxyEnabled {
+ // only update the transport to try to avoid the issue mentioned here https://github.com/grafana/grafana/issues/46365
+ sess.Config.HTTPClient.Transport = instance.HTTPClient.Transport
+ }
+
+ return sess, nil
}
func (e *cloudWatchExecutor) getInstance(pluginCtx backend.PluginContext) (*DataSource, error) {
diff --git a/pkg/tsdb/cloudwatch/models/settings.go b/pkg/tsdb/cloudwatch/models/settings.go
index 1f2cab0c3f0..e02ea2f2c4a 100644
--- a/pkg/tsdb/cloudwatch/models/settings.go
+++ b/pkg/tsdb/cloudwatch/models/settings.go
@@ -10,7 +10,8 @@ import (
type CloudWatchSettings struct {
awsds.AWSDatasourceSettings
- Namespace string `json:"customMetricsNamespaces"`
+ Namespace string `json:"customMetricsNamespaces"`
+ SecureSocksProxyEnabled bool `json:"enableSecureSocksProxy"` // this can be removed when https://github.com/grafana/grafana/issues/39089 is implemented
}
func LoadCloudWatchSettings(config backend.DataSourceInstanceSettings) (CloudWatchSettings, error) {
diff --git a/public/app/plugins/datasource/cloudwatch/components/ConfigEditor.tsx b/public/app/plugins/datasource/cloudwatch/components/ConfigEditor.tsx
index 7e84b93d9db..17229ff62b4 100644
--- a/public/app/plugins/datasource/cloudwatch/components/ConfigEditor.tsx
+++ b/public/app/plugins/datasource/cloudwatch/components/ConfigEditor.tsx
@@ -8,8 +8,9 @@ import {
onUpdateDatasourceJsonDataOption,
updateDatasourcePluginJsonDataOption,
} from '@grafana/data';
-import { Input, InlineField, FieldProps } from '@grafana/ui';
+import { Input, InlineField, FieldProps, SecureSocksProxySettings } from '@grafana/ui';
import { notifyApp } from 'app/core/actions';
+import { config } from 'app/core/config';
import { createWarningNotification } from 'app/core/copy/appNotification';
import { getDatasourceSrv } from 'app/features/plugins/datasource_srv';
import { store } from 'app/store/store';
@@ -66,6 +67,10 @@ export const ConfigEditor = (props: Props) => {
+ {config.featureToggles.secureSocksDatasourceProxy && (
+