class Aws::SharedConfig
def assume_role_from_profile(cfg, profile, opts, chain_config)
def assume_role_from_profile(cfg, profile, opts, chain_config) if cfg && prof_cfg = cfg[profile] opts[:source_profile] ||= prof_cfg["source_profile"] credential_source = opts.delete(:credential_source) credential_source ||= prof_cfg["credential_source"] if opts[:source_profile] && credential_source raise Errors::CredentialSourceConflictError.new( "Profile #{profile} has a source_profile, and "\ "a credential_source. For assume role credentials, must "\ "provide only source_profile or credential_source, not both." ) elsif opts[:source_profile] opts[:credentials] = credentials(profile: opts[:source_profile]) if opts[:credentials] opts[:role_session_name] ||= prof_cfg["role_session_name"] opts[:role_session_name] ||= "default_session" opts[:role_arn] ||= prof_cfg["role_arn"] opts[:external_id] ||= prof_cfg["external_id"] opts[:serial_number] ||= prof_cfg["mfa_serial"] opts[:profile] = opts.delete(:source_profile) AssumeRoleCredentials.new(opts) else raise Errors::NoSourceProfileError.new( "Profile #{profile} has a role_arn, and source_profile, but the"\ " source_profile does not have credentials." ) end elsif credential_source opts[:credentials] = credentials_from_source( credential_source, chain_config ) if opts[:credentials] opts[:role_session_name] ||= prof_cfg["role_session_name"] opts[:role_session_name] ||= "default_session" opts[:role_arn] ||= prof_cfg["role_arn"] opts[:external_id] ||= prof_cfg["external_id"] opts[:serial_number] ||= prof_cfg["mfa_serial"] opts.delete(:source_profile) # Cleanup AssumeRoleCredentials.new(opts) else raise Errors::NoSourceCredentials.new( "Profile #{profile} could not get source credentials from"\ " provider #{credential_source}" ) end elsif prof_cfg["role_arn"] raise Errors::NoSourceProfileError.new( "Profile #{profile} has a role_arn, but no source_profile." ) else nil end else nil end end