Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(botocore): accept AWS ARN bedrock model IDs [backport 2.18] (#11972)
Backport e8d68ae from #11944 to 2.18. This PR fixes the model ID parsing in the bedrock integration to additionally accept model IDs in AWS ARN format. Previously bedrock only worked with base/foundation models which were of the format `{model_provider}.{model_name}`. However now [bedrock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestSyntax) has expanded to allow custom/provisioned/imported/prompt/inference/sagemaker models, following the typical AWS ARN format: ``` Base model: "{model_provider}.{model_name}" Cross-region model: "{region}.{model_provider}.{model_name}" AWS ARNs: Prefixed by "arn:aws{+region?}:bedrock:{region}:{account-id}:" a. Foundation model: ARN prefix + "foundation-model/{region?}.{model_provider}.{model_name}" b. Custom model: ARN prefix + "custom-model/{model_provider}.{model_name}" c. Provisioned model: ARN prefix + "provisioned-model/{model-id}" d. Imported model: ARN prefix + "imported-module/{model-id}" e. Prompt management: ARN prefix + "prompt/{prompt-id}" f. Sagemaker: ARN prefix + "endpoint/{model-id}" g. Inference profile: ARN prefix + "{application-?}inference-profile/{model-id}" h. Default prompt router: ARN prefix + "default-prompt-router/{prompt-id}" ``` Currently if an AWS ARN gets submitted as the model ID (for example, prompt management or a provisioned model) then because we attempt to split the string into a 2/3-part period-separated list, our code breaks when there is no period delimitter in the string. This PR makes a best effort attempt to check each case and extract a model provider and name from the model ID. However, due to the nature of some formats, we default model provider to "custom" and just return the model/prompt/resource ID from the rest of the AWS ARN. ## Checklist - [x] PR author has checked that all the criteria below are met - The PR description includes an overview of the change - The PR description articulates the motivation for the change - The change includes tests OR the PR description describes a testing strategy - The PR description notes risks associated with the change, if any - Newly-added code is easy to change - The change follows the [library release note guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html) - The change includes or references documentation updates if necessary - Backport labels are set (if [applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)) ## Reviewer Checklist - [x] Reviewer has checked that all the criteria below are met - Title is accurate - All changes are related to the pull request's stated goal - Avoids breaking [API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces) changes - Testing strategy adequately addresses listed risks - Newly-added code is easy to change - Release note makes sense to a user of the library - If necessary, author has acknowledged and discussed the performance implications of this PR as reported in the benchmarks PR comment - Backport labels are set in a manner that is consistent with the [release branch maintenance policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting) Co-authored-by: Yun Kim <[email protected]>
- Loading branch information