Sha256: b26096e6efae94c981402c9f73890499860b549653a1a3db2404d76bc99a5b01

Contents?: true

Size: 1.58 KB

Versions: 6

Compression:

Stored size: 1.58 KB

Contents

require 'aws-sdk-core'

Aws.use_bundled_cert!

module TerraformDevKit
  module Aws
    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
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
TerraformDevKit-0.4.0 lib/TerraformDevKit/aws/aws.rb
TerraformDevKit-0.3.7 lib/TerraformDevKit/aws/aws.rb
TerraformDevKit-0.3.6 lib/TerraformDevKit/aws/aws.rb
TerraformDevKit-0.3.5 lib/TerraformDevKit/aws/aws.rb
TerraformDevKit-0.3.4 lib/TerraformDevKit/aws/aws.rb
TerraformDevKit-0.3.2 lib/TerraformDevKit/aws/aws.rb