Skip to content

Add VPC endpoint support to BedrockModel class - Add optional endpoin… #502

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/strands/models/bedrock.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ class BedrockConfig(TypedDict, total=False):
streaming: Flag to enable/disable streaming. Defaults to True.
temperature: Controls randomness in generation (higher = more random)
top_p: Controls diversity via nucleus sampling (alternative to temperature)
endpoint_url: Custom endpoint URL for VPC endpoints (PrivateLink)
"""

additional_args: Optional[dict[str, Any]]
Expand All @@ -93,6 +94,7 @@ class BedrockConfig(TypedDict, total=False):
streaming: Optional[bool]
temperature: Optional[float]
top_p: Optional[float]
endpoint_url: Optional[str] #Adding Endpoint URL
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the intention of BedrockConfig is items that can be be changed at runtime. Given that this can only take affect during construction, this makes more sense as an optional argument in __init__


def __init__(
self,
Expand All @@ -110,6 +112,7 @@ def __init__(
region_name: AWS region to use for the Bedrock service.
Defaults to the AWS_REGION environment variable if set, or "us-west-2" if not set.
**model_config: Configuration options for the Bedrock model.
Use endpoint_url for VPC endpoint connectivity.
"""
if region_name and boto_session:
raise ValueError("Cannot specify both `region_name` and `boto_session`.")
Expand Down Expand Up @@ -140,6 +143,7 @@ def __init__(
self.client = session.client(
service_name="bedrock-runtime",
config=client_config,
endpoint_url=self.config.get("endpoint_url"),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we add a UT to verify this behavior

region_name=resolved_region,
)

Expand Down
Loading