Skip to content

Commit 20690ef

Browse files
authored
fix: remove fast fail credential check from create_aws_session (#233)
1 parent 8fc772f commit 20690ef

2 files changed

Lines changed: 5 additions & 29 deletions

File tree

mcp_proxy_for_aws/sigv4_helper.py

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -101,22 +101,13 @@ def create_aws_session(profile: Optional[str] = None) -> boto3.Session:
101101
boto3.Session instance
102102
103103
Raises:
104-
ValueError: If session creation fails or no credentials found
104+
ValueError: If session creation fails
105105
"""
106106
try:
107107
session = boto3.Session(profile_name=profile) if profile else boto3.Session()
108108
except Exception as e:
109109
raise ValueError(f"Failed to create AWS session with profile '{profile}': {e}")
110110

111-
# Verify credentials are available
112-
credentials = session.get_credentials()
113-
if not credentials:
114-
profile_msg = f" with profile '{profile}'" if profile else ''
115-
raise ValueError(
116-
f'No AWS credentials found{profile_msg}. '
117-
"Please configure your AWS credentials using 'aws configure' or environment variables."
118-
)
119-
120111
return session
121112

122113

tests/unit/test_sigv4_helper.py

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -64,50 +64,35 @@ class TestCreateAwsSession:
6464
@patch('boto3.Session')
6565
def test_create_aws_session_default(self, mock_session_class):
6666
"""Test creating AWS session with default profile."""
67-
# Mock session and credentials
6867
mock_session = Mock()
69-
mock_credentials = Mock()
70-
mock_credentials.access_key = 'test_access_key'
71-
mock_session.get_credentials.return_value = mock_credentials
7268
mock_session_class.return_value = mock_session
7369

74-
# Test session creation
7570
result = create_aws_session()
7671

77-
# Verify session was created correctly
7872
mock_session_class.assert_called_once_with()
7973
assert result == mock_session
8074

8175
@patch('boto3.Session')
8276
def test_create_aws_session_with_profile(self, mock_session_class):
8377
"""Test creating AWS session with specific profile."""
84-
# Mock session and credentials
8578
mock_session = Mock()
86-
mock_credentials = Mock()
87-
mock_credentials.access_key = 'test_access_key'
88-
mock_session.get_credentials.return_value = mock_credentials
8979
mock_session_class.return_value = mock_session
9080

91-
# Test session creation with profile
9281
result = create_aws_session(profile='test-profile')
9382

94-
# Verify session was created with profile
9583
mock_session_class.assert_called_once_with(profile_name='test-profile')
9684
assert result == mock_session
9785

9886
@patch('boto3.Session')
99-
def test_create_aws_session_no_credentials(self, mock_session_class):
100-
"""Test error handling when no credentials are available."""
101-
# Mock session with no credentials
87+
def test_create_aws_session_no_credentials_returns_session(self, mock_session_class):
88+
"""Test that session is returned even when no credentials are immediately available."""
10289
mock_session = Mock()
10390
mock_session.get_credentials.return_value = None
10491
mock_session_class.return_value = mock_session
10592

106-
# Test that ValueError is raised
107-
with pytest.raises(ValueError) as exc_info:
108-
create_aws_session()
93+
result = create_aws_session()
10994

110-
assert 'No AWS credentials found' in str(exc_info.value)
95+
assert result == mock_session
11196

11297
@patch('boto3.Session')
11398
def test_create_aws_session_creation_failure(self, mock_session_class):

0 commit comments

Comments
 (0)