Sha256: fe031821ec9d73b47b2cdf3a67525d317bc24eac971fdc5f60b0940ebe28dcf8

Contents?: true

Size: 1.52 KB

Versions: 19

Compression:

Stored size: 1.52 KB

Contents

require 'aws-sdk'

Aws.use_bundled_cert!

module TerraformDevKit
  class AwsConfig
    def initialize(config)
      unless config.nil?
        @profile = config.fetch('profile', nil)
        @region = config.fetch('region', nil)
        @access_key_id = config.fetch('access_key_id', nil)
        @secret_access_key = config.fetch('secret_access_key', nil)
      end
    end

    def credentials
      unless profile.nil?
        credentials = Aws::SharedCredentials.new(profile_name: profile)
        return credentials if credentials.set?
      end

      return Aws::Credentials.new(*access_keys) if access_keys_available?

      raise 'Cannot find AWS credentials'
    end

    def region
      @region || ENV['AWS_REGION']
    end

    def profile
      @profile || ENV['AWS_PROFILE']
    end

    private

    def access_keys
      return config_access_keys if config_has_access_keys?
      return environment_access_keys if environment_has_access_keys?
      nil
    end

    def access_keys_available?
      config_has_access_keys? || environment_has_access_keys?
    end

    def config_has_access_keys?
      !@access_key_id.nil? && !@secret_access_key.nil?
    end

    def config_access_keys
      return @access_key_id, @secret_access_key
    end

    def environment_has_access_keys?
      ENV.key?('AWS_ACCESS_KEY_ID') && ENV.key?('AWS_SECRET_ACCESS_KEY')
    end

    def environment_access_keys
      return ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
TerraformDevKit-0.2.6 lib/TerraformDevKit/aws.rb
TerraformDevKit-0.2.5 lib/TerraformDevKit/aws.rb
TerraformDevKit-0.2.2 lib/TerraformDevKit/aws.rb
TerraformDevKit-0.2.0 lib/TerraformDevKit/aws.rb
TerraformDevKit-0.1.14 lib/TerraformDevKit/aws.rb
TerraformDevKit-0.1.13 lib/TerraformDevKit/aws.rb
TerraformDevKit-0.1.12 lib/TerraformDevKit/aws.rb
TerraformDevKit-0.1.11 lib/TerraformDevKit/aws.rb
TerraformDevKit-0.1.10 lib/TerraformDevKit/aws.rb
TerraformDevKit-0.1.9 lib/TerraformDevKit/aws.rb
TerraformDevKit-0.1.8 lib/TerraformDevKit/aws.rb
TerraformDevKit-0.1.7 lib/TerraformDevKit/aws.rb
TerraformDevKit-0.1.6 lib/TerraformDevKit/aws.rb
TerraformDevKit-0.1.5 lib/TerraformDevKit/aws.rb
TerraformDevKit-0.1.4 lib/TerraformDevKit/aws.rb
TerraformDevKit-0.1.3 lib/TerraformDevKit/aws.rb
TerraformDevKit-0.1.2 lib/TerraformDevKit/aws.rb
TerraformDevKit-0.1.1 lib/TerraformDevKit/aws.rb
TerraformDevKit-0.1.0 lib/TerraformDevKit/aws.rb