(
*,
api_key: str | None,
token_provider: BedrockTokenProvider | AsyncBedrockTokenProvider | None,
aws_region: str | None,
aws_profile: str | None,
aws_access_key_id: str | None,
aws_secret_access_key: str | None,
aws_session_token: str | None,
aws_credentials_provider: AwsCredentialsProvider | None,
base_url: str | httpx.URL | None,
region_was_explicit: bool | None = None,
)
| 112 | |
| 113 | |
| 114 | def _legacy_provider( |
| 115 | *, |
| 116 | api_key: str | None, |
| 117 | token_provider: BedrockTokenProvider | AsyncBedrockTokenProvider | None, |
| 118 | aws_region: str | None, |
| 119 | aws_profile: str | None, |
| 120 | aws_access_key_id: str | None, |
| 121 | aws_secret_access_key: str | None, |
| 122 | aws_session_token: str | None, |
| 123 | aws_credentials_provider: AwsCredentialsProvider | None, |
| 124 | base_url: str | httpx.URL | None, |
| 125 | region_was_explicit: bool | None = None, |
| 126 | ) -> tuple[_Provider, _LegacyBedrockState, str]: |
| 127 | if callable(cast(object, api_key)): |
| 128 | raise OpenAIError("Pass refreshable Bedrock credentials via `bedrock_token_provider`, not `api_key`.") |
| 129 | if api_key == "": |
| 130 | raise OpenAIError("The `api_key` argument must not be empty.") |
| 131 | if api_key is not None and token_provider is not None: |
| 132 | raise OpenAIError( |
| 133 | "Bedrock authentication is ambiguous. Configure exactly one explicit mode: bearer credential, " |
| 134 | "static AWS credentials, profile, or credential provider." |
| 135 | ) |
| 136 | |
| 137 | explicit_aws_auth = _has_explicit_aws_auth( |
| 138 | aws_profile=aws_profile, |
| 139 | aws_access_key_id=aws_access_key_id, |
| 140 | aws_secret_access_key=aws_secret_access_key, |
| 141 | aws_session_token=aws_session_token, |
| 142 | aws_credentials_provider=aws_credentials_provider, |
| 143 | ) |
| 144 | if (api_key is not None or token_provider is not None) and explicit_aws_auth: |
| 145 | raise OpenAIError( |
| 146 | "Bedrock authentication is ambiguous. Configure exactly one explicit mode: bearer credential, " |
| 147 | "static AWS credentials, profile, or credential provider." |
| 148 | ) |
| 149 | |
| 150 | environment_token = os.environ.get("AWS_BEARER_TOKEN_BEDROCK") |
| 151 | uses_environment_bearer = ( |
| 152 | api_key is None and token_provider is None and not explicit_aws_auth and bool(environment_token) |
| 153 | ) |
| 154 | resolved_region = _configured_region(aws_region) |
| 155 | uses_region_derived_base_url = _uses_region_derived_base_url(base_url) |
| 156 | |
| 157 | provider_base_url: str | httpx.URL | None | NotGiven |
| 158 | if isinstance(base_url, str) and not base_url.strip(): |
| 159 | provider_base_url = None |
| 160 | elif base_url is None: |
| 161 | provider_base_url = NOT_GIVEN |
| 162 | else: |
| 163 | provider_base_url = base_url |
| 164 | |
| 165 | provider = bedrock( |
| 166 | region=aws_region, |
| 167 | base_url=provider_base_url, |
| 168 | api_key=api_key if api_key is not None else environment_token if uses_environment_bearer else NOT_GIVEN, |
| 169 | token_provider=token_provider, |
| 170 | access_key_id=aws_access_key_id, |
| 171 | secret_access_key=aws_secret_access_key, |
no test coverage detected