diff --git a/litellm/llms/bedrock/embed/embedding.py b/litellm/llms/bedrock/embed/embedding.py index f15a512077a..26ef68bd252 100644 --- a/litellm/llms/bedrock/embed/embedding.py +++ b/litellm/llms/bedrock/embed/embedding.py @@ -22,7 +22,6 @@ from litellm.llms.custom_httpx.http_handler import ( get_async_httpx_client, get_httpx_client, ) -from litellm.secret_managers.main import get_secret from litellm.types.llms.bedrock import ( AmazonEmbeddingRequest, CohereEmbeddingRequest, @@ -101,23 +100,8 @@ class BedrockEmbedding(BaseAWSLLM): ) -> tuple[Credentials | None, str]: auth_params: Final = pop_aws_auth_params(optional_params) explicit_region_name: Final = optional_params.pop("aws_region_name", None) - aws_region_name = region_from_model if explicit_region_name is None else explicit_region_name - - ### SET REGION NAME ### - if aws_region_name is None: - # check env # - litellm_aws_region_name: Final = get_secret("AWS_REGION_NAME", None) - - if litellm_aws_region_name is not None and isinstance(litellm_aws_region_name, str): - aws_region_name = litellm_aws_region_name - - standard_aws_region_name: Final = get_secret("AWS_REGION", None) - if standard_aws_region_name is not None and isinstance(standard_aws_region_name, str): - aws_region_name = standard_aws_region_name - - if aws_region_name is None: - aws_region_name = "us-west-2" - + requested_region: Final = region_from_model if explicit_region_name is None else explicit_region_name + aws_region_name: Final = self._get_aws_region_name(optional_params={"aws_region_name": requested_region}) credentials: Final[Credentials | None] = ( None if bearer_token is not None else self.resolve_credentials(auth_params, aws_region_name) ) @@ -446,11 +430,6 @@ class BedrockEmbedding(BaseAWSLLM): ### TRANSFORMATION ### unencoded_model_id: Final = model_id_param or bedrock_model modelId: Final = urllib.parse.quote(unencoded_model_id, safe="") - aws_region_name = self._get_aws_region_name( - optional_params={"aws_region_name": aws_region_name}, - model=bedrock_model, - model_id=unencoded_model_id, - ) provider: Final = self.get_bedrock_embedding_provider(bedrock_model) if provider is None: raise Exception( diff --git a/tests/unit/llms/bedrock/embed/test_bedrock_embedding.py b/tests/unit/llms/bedrock/embed/test_bedrock_embedding.py index 889faf784bf..80ef86a4ec8 100644 --- a/tests/unit/llms/bedrock/embed/test_bedrock_embedding.py +++ b/tests/unit/llms/bedrock/embed/test_bedrock_embedding.py @@ -1,6 +1,7 @@ import json import asyncio import os +from pathlib import Path from typing import Final from unittest.mock import Mock, patch from unittest.mock import AsyncMock, MagicMock @@ -302,6 +303,25 @@ def test_bedrock_embedding_plain_model_id_calls_the_env_region_like_chat( assert route.call_count == 1 +def test_bedrock_embedding_calls_the_boto3_session_region_like_chat( + respx_mock: respx.MockRouter, + monkeypatch: pytest.MonkeyPatch, + tmp_path: Path, +) -> None: + for name in ("AWS_REGION_NAME", "AWS_REGION", "AWS_PROFILE"): + monkeypatch.delenv(name, raising=False) + monkeypatch.setenv("AWS_CONFIG_FILE", str(tmp_path / "no-aws-config")) + monkeypatch.setenv("AWS_DEFAULT_REGION", "ap-south-1") + route: Final = respx_mock.post(url__regex=r"^https://bedrock-runtime\.[a-z0-9-]+\.amazonaws\.com/").mock( + return_value=httpx.Response(200, json=titan_embedding_response) + ) + + litellm.embedding(model="bedrock/amazon.titan-embed-text-v2:0", input=[test_input], api_key="test-bearer-token") + + sent_to: Final = route.calls.last.request.url + assert sent_to.host == "bedrock-runtime.ap-south-1.amazonaws.com", str(sent_to) + + def test_bedrock_embedding_rejects_an_empty_aws_region_name_instead_of_using_the_path_region( respx_mock: respx.MockRouter, ) -> None: