AWS boto3 bedrock vs bedrock-runtime are separate services with different endpoints; do not share endpoint_url between them
AWS Bedrock has two distinct service clients: 'bedrock-runtime' (for inference: converse, invoke_model) and 'bedrock' (for control-plane: create_model_invocation_job, list_foundation_models, etc.). They have different service endpoints (e.g., bedrock-runtime.us-east-1.amazonaws.com vs bedrock.us-east-1.amazonaws.com). If a user overrides the runtime endpoint via api_base or AWS_ENDPOINT_URL_BEDROCK_RUNTIME, passing that same endpoint_url to the control-plane client causes batch and model-listing calls to fail. Verified May 2026 against boto3 Bedrock service clients.
When creating a boto3 control-plane client ('bedrock'), do not pass the runtime endpoint_url. Let boto3 auto-resolve the correct endpoint from region configuration. Only pass shared kwargs like region_name and credentials. Keep endpoint_url usage limited to the 'bedrock-runtime' client.