2222from bedrock_agentcore ._utils .user_agent import build_user_agent_suffix
2323
2424from .._utils .endpoints import get_control_plane_endpoint , get_data_plane_endpoint
25- from .config import BrowserExtension , ProfileConfiguration , ProxyConfiguration , ViewportConfiguration
25+ from .config import (
26+ BrowserExtension ,
27+ Certificate ,
28+ EnterprisePolicy ,
29+ ProfileConfiguration ,
30+ ProxyConfiguration ,
31+ ViewportConfiguration ,
32+ )
2633
2734
2835def _to_dict (value ):
@@ -116,6 +123,8 @@ def create_browser(
116123 description : Optional [str ] = None ,
117124 recording : Optional [Dict ] = None ,
118125 browser_signing : Optional [Dict ] = None ,
126+ enterprise_policies : Optional [List [Union [EnterprisePolicy , Dict [str , Any ]]]] = None ,
127+ certificates : Optional [List [Union [Certificate , Dict [str , Any ]]]] = None ,
119128 tags : Optional [Dict [str , str ]] = None ,
120129 client_token : Optional [str ] = None ,
121130 ) -> Dict :
@@ -148,6 +157,11 @@ def create_browser(
148157 {
149158 "enabled": True
150159 }
160+ enterprise_policies (Optional[List[Union[EnterprisePolicy, Dict]]]): Chromium
161+ enterprise policies at managed enforcement level. Up to 10 policy files,
162+ each .json and max 5MB, from a same-region S3 bucket.
163+ certificates (Optional[List[Union[Certificate, Dict]]]): Root CA certificates
164+ from Secrets Manager for the browser to trust.
151165 tags (Optional[Dict[str, str]]): Tags for the browser
152166 client_token (Optional[str]): Idempotency token
153167
@@ -194,6 +208,12 @@ def create_browser(
194208 request_params ["browserSigning" ] = browser_signing
195209 self .logger .info ("🔐 Web Bot Auth (browserSigning) enabled" )
196210
211+ if enterprise_policies :
212+ request_params ["enterprisePolicies" ] = [_to_dict (p ) for p in enterprise_policies ]
213+
214+ if certificates :
215+ request_params ["certificates" ] = [_to_dict (c ) for c in certificates ]
216+
197217 if tags :
198218 request_params ["tags" ] = tags
199219
@@ -299,6 +319,8 @@ def start(
299319 proxy_configuration : Optional [Union [ProxyConfiguration , Dict [str , Any ]]] = None ,
300320 extensions : Optional [List [Union [BrowserExtension , Dict [str , Any ]]]] = None ,
301321 profile_configuration : Optional [Union [ProfileConfiguration , Dict [str , Any ]]] = None ,
322+ enterprise_policies : Optional [List [Union [EnterprisePolicy , Dict [str , Any ]]]] = None ,
323+ certificates : Optional [List [Union [Certificate , Dict [str , Any ]]]] = None ,
302324 ) -> str :
303325 """Start a browser sandbox session.
304326
@@ -324,6 +346,11 @@ def start(
324346 configuration for persisting browser state across sessions. Can be a
325347 ProfileConfiguration dataclass or a plain dict:
326348 {"profileIdentifier": "my-profile-id"}
349+ enterprise_policies (Optional[List[Union[EnterprisePolicy, Dict]]]): Chromium
350+ enterprise policies at recommended enforcement level. Up to 10 policy files,
351+ each .json and max 5MB, from a same-region S3 bucket.
352+ certificates (Optional[List[Union[Certificate, Dict]]]): Root CA certificates
353+ from Secrets Manager for the browser session to trust.
327354
328355 Returns:
329356 str: The session ID of the newly created session.
@@ -373,6 +400,12 @@ def start(
373400 if profile_configuration is not None :
374401 request_params ["profileConfiguration" ] = _to_dict (profile_configuration )
375402
403+ if enterprise_policies is not None :
404+ request_params ["enterprisePolicies" ] = [_to_dict (p ) for p in enterprise_policies ]
405+
406+ if certificates is not None :
407+ request_params ["certificates" ] = [_to_dict (c ) for c in certificates ]
408+
376409 response = self .data_plane_client .start_browser_session (** request_params )
377410
378411 self .identifier = response ["browserIdentifier" ]
@@ -633,6 +666,8 @@ def browser_session(
633666 proxy_configuration : Optional [Union [ProxyConfiguration , Dict [str , Any ]]] = None ,
634667 extensions : Optional [List [Union [BrowserExtension , Dict [str , Any ]]]] = None ,
635668 profile_configuration : Optional [Union [ProfileConfiguration , Dict [str , Any ]]] = None ,
669+ enterprise_policies : Optional [List [Union [EnterprisePolicy , Dict [str , Any ]]]] = None ,
670+ certificates : Optional [List [Union [Certificate , Dict [str , Any ]]]] = None ,
636671) -> Generator [BrowserClient , None , None ]:
637672 """Context manager for creating and managing a browser sandbox session.
638673
@@ -648,6 +683,10 @@ def browser_session(
648683 extensions. Each element can be a BrowserExtension dataclass or a plain dict.
649684 profile_configuration (Optional[Union[ProfileConfiguration, Dict[str, Any]]]): Profile
650685 configuration. Can be a ProfileConfiguration dataclass or a plain dict.
686+ enterprise_policies (Optional[List[Union[EnterprisePolicy, Dict[str, Any]]]]): Chromium
687+ enterprise policies. Each element can be an EnterprisePolicy dataclass or a plain dict.
688+ certificates (Optional[List[Union[Certificate, Dict[str, Any]]]]): Root CA certificates.
689+ Each element can be a Certificate dataclass or a plain dict.
651690
652691 Yields:
653692 BrowserClient: An initialized and started browser client.
@@ -687,6 +726,10 @@ def browser_session(
687726 start_kwargs ["extensions" ] = extensions
688727 if profile_configuration is not None :
689728 start_kwargs ["profile_configuration" ] = profile_configuration
729+ if enterprise_policies is not None :
730+ start_kwargs ["enterprise_policies" ] = enterprise_policies
731+ if certificates is not None :
732+ start_kwargs ["certificates" ] = certificates
690733
691734 client .start (** start_kwargs )
692735
0 commit comments