From 0c4ceaf16156d0dc5b4cac016422d8f797188a67 Mon Sep 17 00:00:00 2001 From: David Obrite Date: Mon, 24 Nov 2025 08:38:01 -0800 Subject: [PATCH 1/2] fix error with login_credentials when config is enabled We're invoking the credential provider chain in our production code with no args: ``` Aws::CredentialProviderChain.new.resolve ``` This fails on 176 with a `NameError` when config is enabled: ``` NameError: undefined local variable or method `region' for # aws-sdk-core-3.239.1/lib/aws-sdk-core/credential_provider_chain.rb:176:in `login_credentials' aws-sdk-core-3.239.1/lib/aws-sdk-core/credential_provider_chain.rb:13:in `block in resolve' aws-sdk-core-3.239.1/lib/aws-sdk-core/credential_provider_chain.rb:12:in `each' aws-sdk-core-3.239.1/lib/aws-sdk-core/credential_provider_chain.rb:12:in `resolve' ``` PR #3319[^1] inadvertently caused this error by not checking if config was passed. Elsewhere in the file the code is guarding against that. Write a failing test, then make it pass. [^1]: https://github.com/aws/aws-sdk-ruby/pull/3319 --- .../lib/aws-sdk-core/credential_provider_chain.rb | 3 ++- gems/aws-sdk-core/spec/aws/credential_provider_chain_spec.rb | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gems/aws-sdk-core/lib/aws-sdk-core/credential_provider_chain.rb b/gems/aws-sdk-core/lib/aws-sdk-core/credential_provider_chain.rb index 61252018486..20a61ac2b24 100644 --- a/gems/aws-sdk-core/lib/aws-sdk-core/credential_provider_chain.rb +++ b/gems/aws-sdk-core/lib/aws-sdk-core/credential_provider_chain.rb @@ -173,7 +173,8 @@ def login_credentials(options) return unless Aws.shared_config.config_enabled? profile_name = determine_profile_name(options) - Aws.shared_config.login_credentials_from_config(profile: profile_name, region: options[:config].region) + region = options[:config].region if options[:config] + Aws.shared_config.login_credentials_from_config(profile: profile_name, region: region) rescue Errors::NoSuchProfileError nil end diff --git a/gems/aws-sdk-core/spec/aws/credential_provider_chain_spec.rb b/gems/aws-sdk-core/spec/aws/credential_provider_chain_spec.rb index 6b20e9ba155..e113534b8f2 100644 --- a/gems/aws-sdk-core/spec/aws/credential_provider_chain_spec.rb +++ b/gems/aws-sdk-core/spec/aws/credential_provider_chain_spec.rb @@ -169,6 +169,11 @@ def validate_metrics(*expected_metrics) it 'defaults to nil' do expect(credentials).to be(nil) end + + it 'defaults to nil when config is enabled' do + Aws.shared_config.fresh(config_enabled: true) + expect(credentials).to be(nil) + end end describe 'with shared credentials' do From c87df0bdfd34de6aca3058bfc42e081262355763 Mon Sep 17 00:00:00 2001 From: Richard Wang Date: Tue, 25 Nov 2025 08:41:51 -0800 Subject: [PATCH 2/2] Add changelog --- gems/aws-sdk-core/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gems/aws-sdk-core/CHANGELOG.md b/gems/aws-sdk-core/CHANGELOG.md index bc3f54f01a4..eda863d9210 100644 --- a/gems/aws-sdk-core/CHANGELOG.md +++ b/gems/aws-sdk-core/CHANGELOG.md @@ -1,6 +1,8 @@ Unreleased Changes ------------------ +* Issue - Fix `login_credentials` in credentials chain when config is enabled. + 3.239.1 (2025-11-21) ------------------