amazon-nova-samples icon indicating copy to clipboard operation
amazon-nova-samples copied to clipboard

fix: correct region parameter in bedrock-agentcore-control client initialization

Open abest0 opened this issue 6 months ago • 0 comments

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.

abest0 avatar Sep 02 '25 04:09 abest0