Skip to content

Commit 3e14066

Browse files
author
“Sundar”
committed
fix: prioritize boto3 environment region resolution and log actual client regions
1 parent cdf985c commit 3e14066

File tree

2 files changed

+22
-12
lines changed

2 files changed

+22
-12
lines changed

src/bedrock_agentcore/memory/client.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,16 @@ class MemoryClient:
4040

4141
def __init__(self, region_name: Optional[str] = None):
4242
"""Initialize the Memory client."""
43-
self.gmcp_client = boto3.client("bedrock-agentcore-control", region_name=region_name)
44-
self.gmdp_client = boto3.client("bedrock-agentcore", region_name=region_name)
43+
self.region_name = boto3.Session().region_name or region_name or "us-west-2"
4544

46-
# Store the region that was actually used
47-
self.region_name = region_name if region_name else boto3.Session().region_name or "us-west-2"
45+
self.gmcp_client = boto3.client("bedrock-agentcore-control", region_name=self.region_name)
46+
self.gmdp_client = boto3.client("bedrock-agentcore", region_name=self.region_name)
4847

49-
logger.info("Initialized MemoryClient for %s", self.region_name)
48+
logger.info(
49+
"Initialized MemoryClient for control plane: %s, data plane: %s",
50+
self.gmcp_client.meta.region_name,
51+
self.gmdp_client.meta.region_name,
52+
)
5053

5154
def create_memory(
5255
self,

tests/bedrock_agentcore/memory/test_client.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,9 @@ def test_client_initialization_region_mismatch():
3030
"""Test client initialization with region mismatch warning."""
3131

3232
with patch("boto3.client") as mock_boto_client:
33+
# First test - environment variable takes precedence
3334
with patch("boto3.Session") as mock_session:
34-
# Mock the session instance
35+
# Mock the session instance to simulate AWS_REGION=us-east-1
3536
mock_session_instance = MagicMock()
3637
mock_session_instance.region_name = "us-east-1"
3738
mock_session.return_value = mock_session_instance
@@ -41,17 +42,23 @@ def test_client_initialization_region_mismatch():
4142
mock_client_instance.meta.region_name = "us-east-1"
4243
mock_boto_client.return_value = mock_client_instance
4344

44-
# When region_name is not provided, it should use the boto3 default
45-
client1 = MemoryClient()
46-
assert client1.region_name == "us-east-1"
45+
# When region_name is provided, environment variable should still take precedence
46+
client1 = MemoryClient(region_name="us-west-2")
47+
assert client1.region_name == "us-east-1" # Environment wins over explicit param
4748

48-
# Reset the mock to test with a specified region
49-
mock_boto_client.reset_mock()
49+
# Second test - no environment variable, explicit param is used
50+
with patch("boto3.Session") as mock_session:
51+
# Mock the session instance to simulate no AWS_REGION set
52+
mock_session_instance = MagicMock()
53+
mock_session_instance.region_name = None
54+
mock_session.return_value = mock_session_instance
55+
56+
# Mock the boto client
5057
mock_client_instance = MagicMock()
5158
mock_client_instance.meta.region_name = "us-west-2"
5259
mock_boto_client.return_value = mock_client_instance
5360

54-
# When region_name is provided, it should use that value
61+
# When AWS_REGION is not set, explicitly provided region should be used
5562
client2 = MemoryClient(region_name="us-west-2")
5663
assert client2.region_name == "us-west-2"
5764

0 commit comments

Comments
 (0)