Sha256: 03c71b0cbdfbff2aef046d049ff0429b0973a45830137022c1a1ebaefa0cbf0c

Contents?: true

Size: 1.59 KB

Versions: 43

Compression:

Stored size: 1.59 KB

Contents

# frozen_string_literal: true

require_relative "abstract_factory"
require_relative "../providers/assume_role_credentials"
require_relative "../providers/mfa_session_credentials"

class AwsAssumeRole::Credentials::Factories::AssumeRole < AwsAssumeRole::Credentials::Factories::AbstractFactory
    include AwsAssumeRole::Credentials::Factories
    type :credential_provider
    priority 20

    def initialize(options)
        logger.debug "AwsAssumeRole::Credentials::Factories::AssumeRole initiated with #{options}"
        return unless options[:profile] || options[:role_arn]
        if options[:profile]
            logger.debug "AwsAssumeRole: #{options[:profile]} found. Trying with profile"
            try_with_profile(options)
        else
            if options[:use_mfa]
                options[:credentials] = AwsAssumeRole::Credentials::Providers::MfaSessionCredentials.new(options).credentials
            end
            @credentials = AwsAssumeRole::Credentials::Providers::AssumeRoleCredentials.new(options)
        end
    end

    def try_with_profile(options)
        return unless AwsAssumeRole.shared_config.config_enabled?
        logger.debug "AwsAssumeRole: Shared Config enabled"
        @profile = options[:profile]
        @region = options[:region]
        @credentials = assume_role_with_profile(options)
        @region ||= AwsAssumeRole.shared_config.profile_region(@profile)
        @role_arn ||= AwsAssumeRole.shared_config.profile_role(@profile)
    end

    def assume_role_with_profile(options)
        AwsAssumeRole.shared_config.assume_role_credentials_from_config(options)
    end
end

Version data entries

43 entries across 43 versions & 1 rubygems

Version Path
aws_assume_role-1.0.2 lib/aws_assume_role/credentials/factories/assume_role.rb
aws_assume_role-1.0.1 lib/aws_assume_role/credentials/factories/assume_role.rb
aws_assume_role-1.0.0 lib/aws_assume_role/credentials/factories/assume_role.rb