diff --git a/internal/component/prometheus/exporter/cloudwatch/cloudwatch.go b/internal/component/prometheus/exporter/cloudwatch/cloudwatch.go index 0064050e87ed..66f8a7ddecb3 100644 --- a/internal/component/prometheus/exporter/cloudwatch/cloudwatch.go +++ b/internal/component/prometheus/exporter/cloudwatch/cloudwatch.go @@ -31,10 +31,10 @@ func createExporter(opts component.Options, args component.Arguments, defaultIns fipsEnabled := !a.FIPSDisabled if a.DecoupledScrape.Enabled { - exp, err := cloudwatch_exporter.NewDecoupledCloudwatchExporter(opts.ID, opts.Logger, exporterConfig, a.DecoupledScrape.ScrapeInterval, fipsEnabled, a.Debug, "2") + exp, err := cloudwatch_exporter.NewDecoupledCloudwatchExporter(opts.ID, opts.Logger, exporterConfig, a.DecoupledScrape.ScrapeInterval, fipsEnabled, a.Debug, a.AWSSDKVersion) return exp, getHash(a), err } - exp, err := cloudwatch_exporter.NewCloudwatchExporter(opts.ID, opts.Logger, exporterConfig, fipsEnabled, a.Debug, "2") + exp, err := cloudwatch_exporter.NewCloudwatchExporter(opts.ID, opts.Logger, exporterConfig, fipsEnabled, a.Debug, a.AWSSDKVersion) return exp, getHash(a), err } diff --git a/internal/component/prometheus/exporter/cloudwatch/config.go b/internal/component/prometheus/exporter/cloudwatch/config.go index 2a3f7bc193f2..6deb1983087d 100644 --- a/internal/component/prometheus/exporter/cloudwatch/config.go +++ b/internal/component/prometheus/exporter/cloudwatch/config.go @@ -27,6 +27,7 @@ var defaults = Arguments{ Enabled: false, ScrapeInterval: 5 * time.Minute, }, + AWSSDKVersion: "v1", } // Arguments are the river based options to configure the embedded CloudWatch exporter. @@ -38,6 +39,7 @@ type Arguments struct { Discovery []DiscoveryJob `river:"discovery,block,optional"` Static []StaticJob `river:"static,block,optional"` DecoupledScrape DecoupledScrapeConfig `river:"decoupled_scraping,block,optional"` + AWSSDKVersion string `river:"aws_sdk_version"` } // DecoupledScrapeConfig is the configuration for decoupled scraping feature. diff --git a/static/integrations/cloudwatch_exporter/cloudwatch_exporter.go b/static/integrations/cloudwatch_exporter/cloudwatch_exporter.go index 18123c6a2739..242d5c47be99 100644 --- a/static/integrations/cloudwatch_exporter/cloudwatch_exporter.go +++ b/static/integrations/cloudwatch_exporter/cloudwatch_exporter.go @@ -45,12 +45,12 @@ func NewCloudwatchExporter(name string, logger log.Logger, conf yaceModel.JobsCo var err error switch clientVersion { - case "1": + case AWSSDKVersionV1: factory = yaceClientsV1.NewFactory(loggerWrapper, conf, fipsEnabled) - case "2": + case AWSSDKVersionV2: factory, err = yaceClientsV2.NewFactory(loggerWrapper, conf, fipsEnabled) default: - err = fmt.Errorf("invalid client version %s", clientVersion) + err = fmt.Errorf("invalid client version %s, valid versions are v1 and v2", clientVersion) } if err != nil { diff --git a/static/integrations/cloudwatch_exporter/cloudwatch_exporter_decoupled.go b/static/integrations/cloudwatch_exporter/cloudwatch_exporter_decoupled.go index dfbda6eb348b..99677eabd598 100644 --- a/static/integrations/cloudwatch_exporter/cloudwatch_exporter_decoupled.go +++ b/static/integrations/cloudwatch_exporter/cloudwatch_exporter_decoupled.go @@ -42,12 +42,12 @@ func NewDecoupledCloudwatchExporter(name string, logger log.Logger, conf yaceMod var err error switch clientVersion { - case "1": + case AWSSDKVersionV1: factory = yaceClientsV1.NewFactory(loggerWrapper, conf, fipsEnabled) - case "2": + case AWSSDKVersionV2: factory, err = yaceClientsV2.NewFactory(loggerWrapper, conf, fipsEnabled) default: - err = fmt.Errorf("invalid client version %s", clientVersion) + err = fmt.Errorf("invalid client version %s, valid versions are v1 and v2", clientVersion) } if err != nil { diff --git a/static/integrations/cloudwatch_exporter/config.go b/static/integrations/cloudwatch_exporter/config.go index 502cf635b296..dd2846ca1a79 100644 --- a/static/integrations/cloudwatch_exporter/config.go +++ b/static/integrations/cloudwatch_exporter/config.go @@ -22,6 +22,9 @@ const ( tagConcurrency = 5 labelsSnakeCase = false defaultDecoupledScrapingInterval = time.Minute * 5 + + AWSSDKVersionV1 = "v1" + AWSSDKVersionV2 = "v2" ) // Since we are gathering metrics from CloudWatch and writing them in prometheus during each scrape, the timestamp @@ -44,6 +47,7 @@ type Config struct { Static []StaticJob `yaml:"static"` Debug bool `yaml:"debug"` DecoupledScrape DecoupledScrapeConfig `yaml:"decoupled_scraping"` + AWSSDKVersion string `yaml:"aws_sdk_version"` } // DecoupledScrapeConfig is the configuration for decoupled scraping feature.