View a markdown version of this page

使用瀏覽器代理 - Amazon Bedrock AgentCore

使用瀏覽器代理

Amazon Bedrock AgentCore 瀏覽器支援透過您自己的外部代理伺服器路由瀏覽器流量。這可讓組織:

  • 透過具有已知輸出 IP 的代理路由流量來實現 IP 穩定性,消除輪換 AWS IP 地址所造成的重新驗證週期 IPs

  • 為需要 IP 型存取控制的服務提供穩定、可控制的輸出地址,以支援 IP 允許清單

  • 透過您現有的代理伺服器路由以存取內部網頁和資源,與公司基礎設施整合

概觀

當您使用代理組態建立瀏覽器工作階段時,AgentCore 瀏覽器會將瀏覽器設定為透過您指定的代理伺服器路由 HTTP 和 HTTPS 流量。

瀏覽器代理請求流程顯示流量從瀏覽器工作階段透過客戶受管代理伺服器路由到目的地網站。

請求流程:

  1. 您可以使用StartBrowserSessionproxyConfiguration指定代理伺服器的 來呼叫 。

  2. 如果使用身分驗證,AgentCore 會從 AWS Secrets Manager 擷取代理憑證。

  3. 瀏覽器工作階段會從套用代理組態開始。

  4. 瀏覽器流量會根據您的網域路由規則,透過代理伺服器路由。

  5. 您的代理伺服器會將請求轉送至目的地網站。

代理伺服器是您擁有和管理的基礎設施。AgentCore 瀏覽器會以用戶端身分連接到它。

Proxy 組態會在啟動時將 Chromium --proxy-server旗標套用至瀏覽器執行個體,並在瀏覽器層級透過指定的代理來引導流量。對於需要網路層強制執行的案例,例如,當可在執行時間修改瀏覽器層級設定時,在您自己的 VPC 中部署瀏覽器工作階段。請參閱設定 Amazon Bedrock AgentCore 執行期和 VPC 的工具

先決條件

在設定瀏覽器代理之前,請確定您已:

  • 一般瀏覽器先決條件 – 完成標準瀏覽器工具設定。請參閱開始使用 AgentCore 瀏覽器

  • Proxy 伺服器 – 可從公有網際網路存取的 HTTP/HTTPS 代理伺服器 (如果使用 VPC 組態,則可在 VPC 內存取),並支援 HTTPS 流量通道的 HTTP CONNECT 方法。

  • AWS Secrets Manager 秘密 (如果使用身分驗證) – 包含具有 usernamepassword金鑰之 JSON 格式代理憑證的秘密。

  • IAM 許可 (如果使用身分驗證) – IAM 身分呼叫StartBrowserSession必須具有登入資料秘密的secretsmanager:GetSecretValue許可。

開始使用

本節顯示透過代理路由瀏覽器流量的最簡單組態。

步驟 1:建立登入資料秘密 (如果使用身分驗證)

如果您的代理需要身分驗證,請在 AWS Secrets Manager 中建立秘密:

aws secretsmanager create-secret \ --name "my-proxy-credentials" \ --secret-string '{"username":"<your-username>","password":"<your-password>"}'

登入資料格式需求:

欄位 允許的字元

username

英數加 @ . _ + = -

password

英數加 @ . _ + = - ! # $ % *

不允許字元:冒號 : ()、換行、空格、引號。

步驟 2:新增 IAM 許可

將此政策新增至將建立瀏覽器工作階段的 IAM 身分:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:AWS Region:AWS account:secret:secret-name*" } ] }

步驟 3:使用代理建立瀏覽器工作階段

您可以使用 CLI、 SDK AWS 或 API 建立具有代理組態的瀏覽器工作階段。

範例
AWS CLI
  1. 若要使用 AWS CLI 以代理啟動瀏覽器工作階段:

    aws bedrock-agentcore start-browser-session \ --browser-identifier "aws.browser.v1" \ --name "my-proxy-session" \ --proxy-configuration '{ "proxies": [{ "externalProxy": { "server": "your-proxy-hostname", "port": 8080, "credentials": { "basicAuth": { "secretArn": "arn:aws:secretsmanager:region:account-id:secret:secret-name" } } } }] }'

    對於使用 IP 允許清單而非登入資料的代理,請省略 credentials 欄位:

    aws bedrock-agentcore start-browser-session \ --browser-identifier "aws.browser.v1" \ --name "my-proxy-session" \ --proxy-configuration '{ "proxies": [{ "externalProxy": { "server": "your-proxy-hostname", "port": 8080 } }] }'
Boto3
  1. 若要使用適用於 Python 的 AWS SDK (Boto3) 以代理啟動瀏覽器工作階段:

    import boto3 client = boto3.client('bedrock-agentcore', region_name='region') response = client.start_browser_session( browserIdentifier="aws.browser.v1", name="my-proxy-session", proxyConfiguration={ "proxies": [{ "externalProxy": { "server": "your-proxy-hostname", "port": 8080, "credentials": { "basicAuth": { "secretArn": "arn:aws:secretsmanager:region:account-id:secret:secret-name" } } } }] } ) print(f"Session ID: {response['sessionId']}")

    對於使用 IP 允許清單而非登入資料的代理,請省略 credentials 欄位:

    proxyConfiguration={ "proxies": [{ "externalProxy": { "server": "your-proxy-hostname", "port": 8080 } }] }
API
  1. 若要使用 API 以代理啟動瀏覽器工作階段:

    PUT /browsers/aws.browser.v1/sessions/start HTTP/1.1 Host: bedrock-agentcore.region.amazonaws.com Content-Type: application/json Authorization: AWS4-HMAC-SHA256 ... { "name": "my-proxy-session", "proxyConfiguration": { "proxies": [{ "externalProxy": { "server": "your-proxy-hostname", "port": 8080, "credentials": { "basicAuth": { "secretArn": "arn:aws:secretsmanager:region:account-id:secret:secret-name" } } } }] } }

組態選項

網域型路由

使用 透過指定的代理domainPatterns路由特定網域:

範例
AWS CLI
  1. aws bedrock-agentcore start-browser-session \ --browser-identifier "aws.browser.v1" \ --name "domain-routing-session" \ --proxy-configuration '{ "proxies": [ { "externalProxy": { "server": "corp-proxy.example.com", "port": 8080, "domainPatterns": [".company.com", ".internal.corp"] } }, { "externalProxy": { "server": "general-proxy.example.com", "port": 8080 } } ] }'
Boto3
  1. proxyConfiguration={ "proxies": [ { "externalProxy": { "server": "corp-proxy.example.com", "port": 8080, "domainPatterns": [".company.com", ".internal.corp"] } }, { "externalProxy": { "server": "general-proxy.example.com", "port": 8080 } } ] }
API
  1. { "proxyConfiguration": { "proxies": [ { "externalProxy": { "server": "corp-proxy.example.com", "port": 8080, "domainPatterns": [".company.com", ".internal.corp"] } }, { "externalProxy": { "server": "general-proxy.example.com", "port": 8080 } } ] } }

使用此組態:

  • 透過 請求 *.company.com 和 *.internal.corp 路由 corp-proxy.example.com

  • 所有其他請求透過 路由 general-proxy.example.com(預設)

網域模式格式:

模式 相符 不符合

.example.com

example.com , www.example.com , api.example.com

notexample.com

example.com

example.com (僅限完全相符)

www.example.com

針對子網域使用 .example.com(領導的點)。請勿使用 *.example.com。

繞過網域

bypass.domainPatterns 用於應該在沒有代理的情況下直接連線的網域:

範例
AWS CLI
  1. aws bedrock-agentcore start-browser-session \ --browser-identifier "aws.browser.v1" \ --name "bypass-session" \ --proxy-configuration '{ "proxies": [{ "externalProxy": { "server": "proxy.example.com", "port": 8080 } }], "bypass": { "domainPatterns": [".amazonaws.com"] } }'
Boto3
  1. proxyConfiguration={ "proxies": [{ "externalProxy": { "server": "proxy.example.com", "port": 8080 } }], "bypass": { "domainPatterns": [".amazonaws.com"] } }
API
  1. { "proxyConfiguration": { "proxies": [{ "externalProxy": { "server": "proxy.example.com", "port": 8080 } }], "bypass": { "domainPatterns": [".amazonaws.com"] } } }
注意

Proxy 組態是瀏覽器層級路由設定,不提供網路層級流量控制。針對網路層強制執行,請在 VPC 中部署瀏覽器工作階段。請參閱設定 Amazon Bedrock AgentCore 執行期和 VPC 的工具

路由優先順序

根據此優先順序的流量路由 (從最高到最低):

  1. 繞過網域 – 符合的網域會直接bypass.domainPatterns連線。

  2. 代理網域模式 – 符合代理透過代理domainPatterns路由的網域 (第一個相符項目會根據陣列順序獲勝)。

  3. 預設代理 – 不相符的網域會透過代理路由,而不使用 domainPatterns

完成範例

下列範例顯示具有網域模式、略過網域和身分驗證登入資料的完整代理組態。

範例
AWS CLI
  1. aws bedrock-agentcore start-browser-session \ --browser-identifier "aws.browser.v1" \ --name "proxy-session" \ --proxy-configuration '{ "proxies": [{ "externalProxy": { "server": "proxy-hostname", "port": 8080, "domainPatterns": [".company.com"], "credentials": { "basicAuth": { "secretArn": "arn:aws:secretsmanager:region:account-id:secret:secret-name" } } } }], "bypass": { "domainPatterns": [".amazonaws.com"] } }'
Boto3
  1. import boto3 client = boto3.client('bedrock-agentcore', region_name='region') response = client.start_browser_session( browserIdentifier="aws.browser.v1", name="proxy-session", proxyConfiguration={ "proxies": [{ "externalProxy": { "server": "proxy-hostname", "port": 8080, "domainPatterns": [".company.com"], "credentials": { "basicAuth": { "secretArn": "arn:aws:secretsmanager:region:account-id:secret:secret-name" } } } }], "bypass": { "domainPatterns": [".amazonaws.com"] } } ) print(f"Session ID: {response['sessionId']}")
API
  1. PUT /browsers/aws.browser.v1/sessions/start HTTP/1.1 Host: bedrock-agentcore.region.amazonaws.com Content-Type: application/json Authorization: AWS4-HMAC-SHA256 ... { "name": "proxy-session", "proxyConfiguration": { "proxies": [{ "externalProxy": { "server": "proxy-hostname", "port": 8080, "domainPatterns": [".company.com"], "credentials": { "basicAuth": { "secretArn": "arn:aws:secretsmanager:region:account-id:secret:secret-name" } } } }], "bypass": { "domainPatterns": [".amazonaws.com"] } } }

使用案例

工作階段型入口網站的 IP 穩定性

醫療保健和金融入口網站通常會根據來源 IP 地址驗證工作階段。輪換 AWS IP 地址會導致頻繁重新驗證。透過具有穩定輸出 IPs代理路由流量,以維持工作階段持續性。

企業基礎設施整合

透過公司代理路由流量的組織可以將此實務擴展到 AgentCore 瀏覽器工作階段,以便存取需要代理型連線的內部網頁和資源。

地理內容存取

透過在特定地理位置中的代理路由流量,存取區域特定內容或測試區域網站變化。

合作夥伴網路存取

透過專用代理基礎設施路由合作夥伴特定的流量,同時使用其他流量的一般代理。

工作階段行為

組態生命週期

  • 建立時設定 – 工作階段建立時設定代理組態一次。不支援在執行時間進行組態變更。建立新的工作階段以使用不同的設定。

  • 工作階段範圍 – 每個瀏覽器工作階段都有獨立的代理組態。

  • 逾時 – 套用標準工作階段逾時。工作階段結束時,會捨棄 Proxy 組態。

連線行為

  • 故障開啟 – 未在工作階段建立時驗證 Proxy 連線。設定無法使用代理的工作階段會在載入頁面時顯示錯誤。

  • 執行時間錯誤 – 連線失敗顯示為瀏覽器錯誤頁面,在即時檢視中可見以進行故障診斷。

  • 無自動重試 – 失敗的請求不會自動重試。

跨帳戶私密存取

如果登入資料秘密位於不同的 AWS 帳戶中,請設定下列項目:

秘密資源政策 (在擁有秘密的帳戶中):

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::caller-account-id:root"}, "Action": "secretsmanager:GetSecretValue", "Resource": "*" }] }

KMS 金鑰政策 (如果使用客戶管理的 KMS 金鑰):

{ "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::caller-account-id:root"}, "Action": "kms:Decrypt", "Resource": "*" }

安全考量

登入資料保護

  • 登入資料存放在 AWS Secrets Manager 中,並使用您的 IAM 登入資料擷取。

  • API 回應中永遠不會傳回登入資料。 只會GetBrowserSession傳回 secretArn

  • 登入資料不會寫入日誌。

存取控制

  • IAM 許可控制哪些身分可以使用哪些登入資料秘密。

  • 跨帳戶存取需要明確的資源政策。

效能考量

  • 容量 – 確保您的代理可以處理預期的請求磁碟區。

  • 繞過 – 針對延遲敏感bypass.domainPatterns的呼叫,將 AWS 端點新增至 。

  • 鄰近性 – 在地理位置上接近您的 AWS 區域使用代理。

Constraints

限制條件 限制 可調整

每個工作階段的最大代理數

5

每個代理的最大網域模式

100

繞過網域模式上限

100

伺服器主機名稱長度

253 個字元

網域模式長度

253 個字元

連接埠範圍

1–65535

若要請求提高可調整限制,請聯絡 AWS 支援。

限制

在設定瀏覽器代理之前,請檢閱這些限制,以確保此功能符合您的需求:

限制 詳細資訊

流量路由

Proxy 組態是在工作階段啟動時套用的瀏覽器層級設定。它不是網路層級控制,不保證所有流量都會傳輸代理。對於網路層強制執行,請使用設定 Amazon Bedrock AgentCore 執行時間和 VPC 的工具

支援的通訊協定

僅限 HTTP 和 HTTPS 代理。不支援 SOCKS4 和 SOCKS5 代理。

身分驗證

HTTP 基本身分驗證或無身分驗證 (IP 允許清單)。不支援 NTLM、Kerberos 和憑證型身分驗證。

代理變更

Proxy 組態會在工作階段建立時設定一次。不支援在執行時間進行組態變更。建立新的工作階段以變更代理設定。

代理輪換

不支援 IP 循環或負載分佈的自動代理輪換。建立新的工作階段以輪換代理。

連線驗證

工作階段建立時不會驗證 Proxy 連線能力。連線錯誤會在執行時間出現。