Skip to content

Commit 0cf5608

Browse files
authored
Merge pull request #10 from aws/updateRegionnMemory
Update region in memory client
2 parents a073aae + 3e14066 commit 0cf5608

File tree

4 files changed

+49
-53
lines changed

4 files changed

+49
-53
lines changed

src/bedrock_agentcore/memory/client.py

Lines changed: 8 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
import copy
1212
import logging
13-
import os
1413
import time
1514
import uuid
1615
import warnings
@@ -39,39 +38,19 @@
3938
class MemoryClient:
4039
"""High-level Bedrock AgentCore Memory client with essential operations."""
4140

42-
def __init__(self, region_name: str = "us-west-2", environment: str = "prod"):
41+
def __init__(self, region_name: Optional[str] = None):
4342
"""Initialize the Memory client."""
44-
self.region_name = region_name
45-
if os.getenv("AWS_REGION"):
46-
env_region = os.getenv("AWS_REGION")
47-
if env_region != region_name:
48-
warnings.warn(
49-
f"AWS_REGION environment variable ({env_region}) differs from provided "
50-
f"region_name ({region_name}). Using provided region_name.",
51-
stacklevel=2,
52-
)
53-
self.environment = environment
54-
55-
self.control_plane_endpoint = os.getenv(
56-
"AGENTCORE_CONTROL_ENDPOINT", "https://bedrock-agentcore-control.us-west-2.amazonaws.com"
57-
)
58-
self.data_plane_endpoint = os.getenv(
59-
"AGENTCORE_DATA_ENDPOINT", "https://bedrock-agentcore.us-west-2.amazonaws.com"
60-
)
43+
self.region_name = boto3.Session().region_name or region_name or "us-west-2"
6144

62-
control_service = os.getenv("AGENTCORE_CONTROL_SERVICE", "bedrock-agentcore-control")
63-
data_service = os.getenv("AGENTCORE_DATA_SERVICE", "bedrock-agentcore")
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)
6447

65-
self.gmcp_client = boto3.client(
66-
control_service, region_name=self.region_name, endpoint_url=self.control_plane_endpoint
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,
6752
)
6853

69-
self.gmdp_client = boto3.client(
70-
data_service, region_name=self.region_name, endpoint_url=self.data_plane_endpoint
71-
)
72-
73-
logger.info("Initialized MemoryClient for %s in %s", environment, region_name)
74-
7554
def create_memory(
7655
self,
7756
name: str,

tests/bedrock_agentcore/memory/test_client.py

Lines changed: 39 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,36 +14,53 @@
1414
def test_client_initialization():
1515
"""Test client initialization."""
1616
with patch("boto3.client") as mock_boto_client:
17-
# Test gamma environment
18-
client = MemoryClient(region_name="us-west-2", environment="gamma")
17+
# Setup the mock to return a consistent region_name
18+
mock_client_instance = MagicMock()
19+
mock_client_instance.meta.region_name = "us-west-2"
20+
mock_boto_client.return_value = mock_client_instance
1921

22+
client = MemoryClient(region_name="us-west-2")
23+
24+
# Check that the region was set correctly and boto3.client was called twice
2025
assert client.region_name == "us-west-2"
2126
assert mock_boto_client.call_count == 2
2227

2328

2429
def test_client_initialization_region_mismatch():
2530
"""Test client initialization with region mismatch warning."""
26-
with patch("boto3.client"):
27-
with patch("os.getenv") as mock_getenv:
28-
# Mock AWS_REGION environment variable
29-
mock_getenv.return_value = "us-east-1"
30-
31-
with warnings.catch_warnings(record=True) as w:
32-
warnings.simplefilter("always")
33-
34-
# Initialize client with different region than AWS_REGION
35-
client = MemoryClient(region_name="us-west-2", environment="prod")
3631

37-
# Verify warning was issued
38-
assert len(w) >= 1
39-
warning_messages = [str(warning.message) for warning in w]
40-
assert any(
41-
"AWS_REGION environment variable (us-east-1) differs from provided region_name (us-west-2)" in msg
42-
for msg in warning_messages
43-
)
44-
45-
# Verify client uses provided region_name, not environment variable
46-
assert client.region_name == "us-west-2"
32+
with patch("boto3.client") as mock_boto_client:
33+
# First test - environment variable takes precedence
34+
with patch("boto3.Session") as mock_session:
35+
# Mock the session instance to simulate AWS_REGION=us-east-1
36+
mock_session_instance = MagicMock()
37+
mock_session_instance.region_name = "us-east-1"
38+
mock_session.return_value = mock_session_instance
39+
40+
# Mock the boto client
41+
mock_client_instance = MagicMock()
42+
mock_client_instance.meta.region_name = "us-east-1"
43+
mock_boto_client.return_value = mock_client_instance
44+
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
48+
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
57+
mock_client_instance = MagicMock()
58+
mock_client_instance.meta.region_name = "us-west-2"
59+
mock_boto_client.return_value = mock_client_instance
60+
61+
# When AWS_REGION is not set, explicitly provided region should be used
62+
client2 = MemoryClient(region_name="us-west-2")
63+
assert client2.region_name == "us-west-2"
4764

4865

4966
def test_namespace_defaults():

tests_integ/memory/test_devex.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -690,7 +690,7 @@ def main():
690690

691691
logger.info("Using region: %s, environment: %s", region, environment)
692692

693-
client = MemoryClient(region_name=region, environment=environment)
693+
client = MemoryClient(region_name=region)
694694

695695
logger.info("\nCreating test memory with strategies...")
696696
memory = client.create_memory(

tests_integ/memory/test_memory_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ def main():
348348

349349
logger.info("Using region: %s, environment: %s", region, environment)
350350

351-
client = MemoryClient(region_name=region, environment=environment)
351+
client = MemoryClient(region_name=region)
352352

353353
# Test Issue #2 first (strategy polling)
354354
test_strategy_polling_fix(client)

0 commit comments

Comments
 (0)