Skip to content

Conversation

abest0
Copy link

@abest0 abest0 commented Sep 2, 2025

Issue #, if available:

Description of changes:

Problem

The application fails to start with botocore.exceptions.NoRegionError: You must specify a region when initializing the bedrock-agentcore-control client in agent_core.py.

Root Cause: Line 9 passes the string "region" instead of the region variable to the boto3 client constructor, causing the client to be created without a valid AWS region.

Solution Options

Option 1: Use the region variable

agentcore_control = boto3.client('bedrock-agentcore-control', region_name=region)

Option 2: Let boto3 auto-detect region

agentcore_control = boto3.client('bedrock-agentcore-control')

Note: This requires AWS credentials/config to be properly set up with region information.

This PR implements Option 1 as it maintains consistency with the existing code pattern and ensures the region is properly configured from environment variables with a sensible default.

  • Replace hardcoded "region" string with region variable in boto3.client call
  • Ensures proper AWS region configuration for AgentCore control client

** Error**

Traceback (most recent call last):
  File "/home/dev/code/nova-samples/speech-to-speech/workshops/python-server/server.py", line 6, in <module>
    from s2s_session_manager import S2sSessionManager
  File "/home/dev/code/nova-samples/speech-to-speech/workshops/python-server/s2s_session_manager.py", line 12, in <module>
    from integration import inline_agent, bedrock_knowledge_bases as kb, agent_core
  File "/home/dev/code/nova-samples/speech-to-speech/workshops/python-server/integration/agent_core.py", line 8, in <module>
    agentcore_control = boto3.client('bedrock-agentcore-control')
  File "/home/dev/code/nova-samples/speech-to-speech/workshops/python-server/.venv/lib/python3.13/site-packages/boto3/__init__.py", line 93, in client
    return _get_default_session().client(*args, **kwargs)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/home/dev/code/nova-samples/speech-to-speech/workshops/python-server/.venv/lib/python3.13/site-packages/boto3/session.py", line 337, in client
    return self._session.create_client(
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        service_name, **create_client_kwargs
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/home/dev/code/nova-samples/speech-to-speech/workshops/python-server/.venv/lib/python3.13/site-packages/botocore/context.py", line 123, in wrapper
    return func(*args, **kwargs)
  File "/home/dev/code/nova-samples/speech-to-speech/workshops/python-server/.venv/lib/python3.13/site-packages/botocore/session.py", line 1029, in create_client
    client = client_creator.create_client(
        service_name=service_name,
    ...<8 lines>...
        auth_token=auth_token,
    )
  File "/home/dev/code/nova-samples/speech-to-speech/workshops/python-server/.venv/lib/python3.13/site-packages/botocore/client.py", line 157, in create_client
    client_args = self._get_client_args(
        service_model,
    ...<10 lines>...
        partition_data,
    )
  File "/home/dev/code/nova-samples/speech-to-speech/workshops/python-server/.venv/lib/python3.13/site-packages/botocore/client.py", line 557, in _get_client_args
    return args_creator.get_client_args(
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        service_model,
        ^^^^^^^^^^^^^^
    ...<10 lines>...
        partition_data,
        ^^^^^^^^^^^^^^^
    )
    ^
  File "/home/dev/code/nova-samples/speech-to-speech/workshops/python-server/.venv/lib/python3.13/site-packages/botocore/args.py", line 121, in get_client_args
    final_args = self.compute_client_args(
        service_model,
    ...<5 lines>...
        scoped_config,
    )
  File "/home/dev/code/nova-samples/speech-to-speech/workshops/python-server/.venv/lib/python3.13/site-packages/botocore/args.py", line 245, in compute_client_args
    endpoint_config = self._compute_endpoint_config(
        service_name=service_name,
    ...<4 lines>...
        s3_config=s3_config,
    )
  File "/home/dev/code/nova-samples/speech-to-speech/workshops/python-server/.venv/lib/python3.13/site-packages/botocore/args.py", line 433, in _compute_endpoint_config
    return self._resolve_endpoint(**resolve_endpoint_kwargs)
           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dev/code/nova-samples/speech-to-speech/workshops/python-server/.venv/lib/python3.13/site-packages/botocore/args.py", line 538, in _resolve_endpoint
    return endpoint_bridge.resolve(
           ~~~~~~~~~~~~~~~~~~~~~~~^
        service_name, region_name, endpoint_url, is_secure
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/home/dev/code/nova-samples/speech-to-speech/workshops/python-server/.venv/lib/python3.13/site-packages/botocore/client.py", line 671, in resolve
    resolved = self.endpoint_resolver.construct_endpoint(
        service_name,
    ...<2 lines>...
        use_fips_endpoint=use_fips_endpoint,
    )
  File "/home/dev/code/nova-samples/speech-to-speech/workshops/python-server/.venv/lib/python3.13/site-packages/botocore/regions.py", line 233, in construct_endpoint
    result = self._endpoint_for_partition(
        partition,
    ...<3 lines>...
        use_fips_endpoint,
    )
  File "/home/dev/code/nova-samples/speech-to-speech/workshops/python-server/.venv/lib/python3.13/site-packages/botocore/regions.py", line 281, in _endpoint_for_partition
    raise NoRegionError()
botocore.exceptions.NoRegionError: You must specify a region.

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant