From a0a5bcbb07bbd119e1f6f60acabc8338315701bd Mon Sep 17 00:00:00 2001 From: Alex Resnick Date: Tue, 20 Jul 2021 21:49:17 +0000 Subject: [PATCH] Consolidate function --- x-pack/filebeat/input/awscloudwatch/input.go | 5 ++-- x-pack/filebeat/input/awss3/input.go | 9 +++---- .../input/awss3/s3_integration_test.go | 4 +-- .../functionbeat/manager/aws/cli_manager.go | 2 +- .../providers/aws/ec2/provider.go | 2 +- .../providers/aws/elb/provider.go | 6 ++--- x-pack/libbeat/common/aws/credentials.go | 27 ++++++++++--------- x-pack/metricbeat/module/aws/aws.go | 3 +-- 8 files changed, 27 insertions(+), 31 deletions(-) diff --git a/x-pack/filebeat/input/awscloudwatch/input.go b/x-pack/filebeat/input/awscloudwatch/input.go index 182de919d021..ca8ff57c770d 100644 --- a/x-pack/filebeat/input/awscloudwatch/input.go +++ b/x-pack/filebeat/input/awscloudwatch/input.go @@ -103,11 +103,10 @@ func NewInput(cfg *common.Config, connector channel.Connector, context input.Con config.RegionName = regionName } - awsConfig, err := awscommon.GetAWSCredentials(config.AwsConfig) + awsConfig, err := awscommon.InitializeAWSConfig(config.AwsConfig) if err != nil { - return nil, errors.Wrap(err, "getAWSCredentials failed") + return nil, errors.Wrap(err, "InitializeAWSConfig failed") } - awsConfig = awscommon.EnrichAWSConfigWithProxy(config.AwsConfig, awsConfig) awsConfig.Region = config.RegionName closeChannel := make(chan struct{}) diff --git a/x-pack/filebeat/input/awss3/input.go b/x-pack/filebeat/input/awss3/input.go index 1d5064609067..3d09a1527cc9 100644 --- a/x-pack/filebeat/input/awss3/input.go +++ b/x-pack/filebeat/input/awss3/input.go @@ -54,9 +54,9 @@ func newInput(config config) (*s3Input, error) { func (in *s3Input) Name() string { return inputName } func (in *s3Input) Test(ctx v2.TestContext) error { - _, err := awscommon.GetAWSCredentials(in.config.AWSConfig) + _, err := awscommon.InitializeAWSConfig(in.config.AWSConfig) if err != nil { - return fmt.Errorf("getAWSCredentials failed: %w", err) + return fmt.Errorf("InitializeAWSConfig failed: %w", err) } return nil } @@ -98,11 +98,10 @@ func (in *s3Input) createCollector(ctx v2.Context, pipeline beat.Pipeline) (*s3C log = log.With("region", regionName) } - awsConfig, err := awscommon.GetAWSCredentials(in.config.AWSConfig) + awsConfig, err := awscommon.InitializeAWSConfig(in.config.AWSConfig) if err != nil { - return nil, fmt.Errorf("getAWSCredentials failed: %w", err) + return nil, fmt.Errorf("InitializeAWSConfig failed: %w", err) } - awsConfig = awscommon.EnrichAWSConfigWithProxy(in.config.AWSConfig, awsConfig) awsConfig.Region = regionName visibilityTimeout := int64(in.config.VisibilityTimeout.Seconds()) diff --git a/x-pack/filebeat/input/awss3/s3_integration_test.go b/x-pack/filebeat/input/awss3/s3_integration_test.go index 4966bed60841..59c3f1e19481 100644 --- a/x-pack/filebeat/input/awss3/s3_integration_test.go +++ b/x-pack/filebeat/input/awss3/s3_integration_test.go @@ -138,9 +138,9 @@ func setupCollector(t *testing.T, cfg *common.Config, mock bool) (*s3Collector, } config := getConfigForTest(t) - awsConfig, err := awscommon.GetAWSCredentials(config.AWSConfig) + awsConfig, err := awscommon.InitializeAWSConfig(config.AWSConfig) if err != nil { - t.Fatal("failed GetAWSCredentials with AWS Config: ", err) + t.Fatal("failed InitializeAWSConfig with AWS Config: ", err) } s3BucketRegion := os.Getenv("S3_BUCKET_REGION") diff --git a/x-pack/functionbeat/manager/aws/cli_manager.go b/x-pack/functionbeat/manager/aws/cli_manager.go index a19cb22823db..a697c703ff02 100644 --- a/x-pack/functionbeat/manager/aws/cli_manager.go +++ b/x-pack/functionbeat/manager/aws/cli_manager.go @@ -214,7 +214,7 @@ func NewCLI( if err := cfg.Unpack(config); err != nil { return nil, err } - awsCfg, err := awscommon.GetAWSCredentials(config.Credentials) + awsCfg, err := awscommon.InitializeAWSConfig(config.Credentials) if err != nil { return nil, fmt.Errorf("failed to get aws credentials, please check AWS credential in config: %+v", err) } diff --git a/x-pack/libbeat/autodiscover/providers/aws/ec2/provider.go b/x-pack/libbeat/autodiscover/providers/aws/ec2/provider.go index 029a54d5403b..19d8c8a9784f 100644 --- a/x-pack/libbeat/autodiscover/providers/aws/ec2/provider.go +++ b/x-pack/libbeat/autodiscover/providers/aws/ec2/provider.go @@ -52,7 +52,7 @@ func AutodiscoverBuilder( return nil, err } - awsCfg, err := awscommon.GetAWSCredentials( + awsCfg, err := awscommon.InitializeAWSConfig( awscommon.ConfigAWS{ AccessKeyID: config.AWSConfig.AccessKeyID, SecretAccessKey: config.AWSConfig.SecretAccessKey, diff --git a/x-pack/libbeat/autodiscover/providers/aws/elb/provider.go b/x-pack/libbeat/autodiscover/providers/aws/elb/provider.go index 2f8eedb98718..39313f368710 100644 --- a/x-pack/libbeat/autodiscover/providers/aws/elb/provider.go +++ b/x-pack/libbeat/autodiscover/providers/aws/elb/provider.go @@ -54,13 +54,12 @@ func AutodiscoverBuilder( return nil, err } - awsCfg, err := awscommon.GetAWSCredentials(awscommon.ConfigAWS{ + awsCfg, err := awscommon.InitializeAWSConfig(awscommon.ConfigAWS{ AccessKeyID: config.AWSConfig.AccessKeyID, SecretAccessKey: config.AWSConfig.SecretAccessKey, SessionToken: config.AWSConfig.SessionToken, ProfileName: config.AWSConfig.ProfileName, }) - awsCfg = awscommon.EnrichAWSConfigWithProxy(config.AWSConfig, awsCfg) // Construct MetricSet with a full regions list if there is no region specified. if config.Regions == nil { @@ -77,7 +76,7 @@ func AutodiscoverBuilder( var clients []elasticloadbalancingv2iface.ClientAPI for _, region := range config.Regions { - awsCfg, err := awscommon.GetAWSCredentials(awscommon.ConfigAWS{ + awsCfg, err := awscommon.InitializeAWSConfig(awscommon.ConfigAWS{ AccessKeyID: config.AWSConfig.AccessKeyID, SecretAccessKey: config.AWSConfig.SecretAccessKey, SessionToken: config.AWSConfig.SessionToken, @@ -86,7 +85,6 @@ func AutodiscoverBuilder( if err != nil { logp.Err("error loading AWS config for aws_elb autodiscover provider: %s", err) } - awsCfg = awscommon.EnrichAWSConfigWithProxy(config.AWSConfig, awsCfg) awsCfg.Region = region clients = append(clients, elasticloadbalancingv2.New(awscommon.EnrichAWSConfigWithEndpoint( config.AWSConfig.Endpoint, "elasticloadbalancing", region, awsCfg))) diff --git a/x-pack/libbeat/common/aws/credentials.go b/x-pack/libbeat/common/aws/credentials.go index 0a6aecc71862..cae5cb1b6b51 100644 --- a/x-pack/libbeat/common/aws/credentials.go +++ b/x-pack/libbeat/common/aws/credentials.go @@ -32,6 +32,20 @@ type ConfigAWS struct { ProxyUrl *url.URL `config:"proxy_url"` } +// InitializeAWSConfig function creates the awssdk.Config object from the provided config +func InitializeAWSConfig(config ConfigAWS) (awssdk.Config, error) { + AWSConfig, _ := GetAWSCredentials(config) + if config.ProxyUrl != nil { + httpClient := &http.Client{ + Transport: &http.Transport{ + Proxy: http.ProxyURL(config.ProxyUrl), + }, + } + AWSConfig.HTTPClient = httpClient + } + return AWSConfig, nil +} + // GetAWSCredentials function gets aws credentials from the config. // If access keys given, use them as credentials. // If access keys are not given, then load from AWS config file. If credential_profile_name is not @@ -131,19 +145,6 @@ func EnrichAWSConfigWithEndpoint(endpoint string, serviceName string, regionName return awsConfig } -// EnrichAWSConfigWithProxy function enables proxy support for AWS -func EnrichAWSConfigWithProxy(config ConfigAWS, awsConfig awssdk.Config) awssdk.Config { - if config.ProxyUrl != nil { - httpClient := &http.Client{ - Transport: &http.Transport{ - Proxy: http.ProxyURL(config.ProxyUrl), - }, - } - awsConfig.HTTPClient = httpClient - } - return awsConfig -} - // Validate checks for deprecated config option func (c ConfigAWS) Validate() error { if c.AWSPartition != "" { diff --git a/x-pack/metricbeat/module/aws/aws.go b/x-pack/metricbeat/module/aws/aws.go index 9e921d9a7a8c..f22a1b5ffe1d 100644 --- a/x-pack/metricbeat/module/aws/aws.go +++ b/x-pack/metricbeat/module/aws/aws.go @@ -76,11 +76,10 @@ func NewMetricSet(base mb.BaseMetricSet) (*MetricSet, error) { return nil, err } - awsConfig, err := awscommon.GetAWSCredentials(config.AWSConfig) + awsConfig, err := awscommon.InitializeAWSConfig(config.AWSConfig) if err != nil { return nil, fmt.Errorf("failed to get aws credentials, please check AWS credential in config: %w", err) } - awsConfig = awscommon.EnrichAWSConfigWithProxy(config.AWSConfig, awsConfig) _, err = awsConfig.Credentials.Retrieve() if err != nil {