class Aws::Plugins::GlobalConfiguration

This plugin provides the ability to provide global configuration for all AWS classes or specific ones.

## Global AWS configuration

You can specify global configuration defaults via ‘Aws.config`

Aws.config[:region] = 'us-west-2'

Options applied to ‘Aws.config` are merged with constructed service interfaces.

# uses the global configuration
Aws::EC2.new.config.region #=> 'us-west-2'

# constructor args have priority over global configuration
Aws::EC2.new(region: 'us-east-1').config.region #=> 'us-east-1'

## Service Specific Global Configuration

Some services have very specific configuration options that are not shared by other services.

# oops, this option is only recognized by Aws::S3
Aws.config[:force_path_style] = true
Aws::EC2.new
#=> raises ArgumentError: invalid configuration option `:force_path_style'

To avoid this issue, you can nest service specific options

Aws.config[:s3] = { force_path_style: true }

Aws::EC2.new # no error this time
Aws::S3.new.config.force_path_style #=> true

@api private

Attributes

identifiers[R]

@return [Set<String>] @api private

Public Class Methods

add_identifier(identifier) click to toggle source

Registers an additional service identifier. @api private

# File lib/aws-sdk-core/plugins/global_configuration.rb, line 78
def add_identifier(identifier)
  @identifiers << identifier
end

Public Instance Methods

before_initialize(client_class, options) click to toggle source

@api private

# File lib/aws-sdk-core/plugins/global_configuration.rb, line 49
def before_initialize(client_class, options)
  # apply service specific defaults before the global aws defaults
  apply_service_defaults(client_class, options)
  apply_aws_defaults(client_class, options)
end

Private Instance Methods

apply_aws_defaults(_client_class, options) click to toggle source
# File lib/aws-sdk-core/plugins/global_configuration.rb, line 65
def apply_aws_defaults(_client_class, options)
  Aws.config.each do |option_name, default|
    next if self.class.identifiers.include?(option_name)
    next if options.key?(option_name)

    options[option_name] = default
  end
end
apply_service_defaults(client_class, options) click to toggle source
# File lib/aws-sdk-core/plugins/global_configuration.rb, line 57
def apply_service_defaults(client_class, options)
  return unless (defaults = Aws.config[client_class.identifier])

  defaults.each do |option_name, default|
    options[option_name] = default unless options.key?(option_name)
  end
end