View a markdown version of this page

ブラウザプロキシの使用 - Amazon Bedrock AgentCore

ブラウザプロキシの使用

Amazon Bedrock AgentCore Browser は、独自の外部プロキシサーバーを介したブラウザトラフィックのルーティングをサポートしています。これにより、組織は次のことが可能になります。

  • 既知の出力 IP を持つプロキシを介してトラフィックをルーティングすることで IP の安定性を実現しIPs 、 AWS IP アドレスのローテーションによる再認証サイクルを排除する

  • IP ベースのアクセスコントロールを必要とするサービスに安定した制御可能な出力アドレスを提供することで、IP 許可リストをサポート

  • 社内ウェブページやリソースにアクセスするために既存のプロキシサーバーをルーティングすることで、企業インフラストラクチャと統合する

概要

プロキシ設定を使用してブラウザセッションを作成すると、AgentCore Browser は指定したプロキシサーバーを介して HTTP および HTTPS トラフィックをルーティングするようにブラウザを設定します。

ブラウザプロキシは、ブラウザセッションからカスタマーマネージドプロキシサーバーを経由して送信先ウェブサイトへのトラフィックルーティングを示すリクエストフローです。

リクエストフロー:

  1. プロキシサーバーproxyConfigurationを指定する StartBrowserSessionを使用して を呼び出します。

  2. 認証を使用する場合、AgentCore は AWS Secrets Manager からプロキシ認証情報を取得します。

  3. ブラウザセッションは、プロキシ設定が適用された状態で開始されます。

  4. ブラウザトラフィックは、ドメインルーティングルールに基づいてプロキシサーバーをルーティングします。

  5. プロキシサーバーはリクエストを送信先ウェブサイトに転送します。

プロキシサーバーは、所有および管理しているインフラストラクチャです。AgentCore Browser はクライアントとして接続します。

プロキシ設定は、起動時にブラウザインスタンスに Chromium --proxy-serverフラグを適用し、ブラウザレベルで指定されたプロキシを介してトラフィックをルーティングします。ランタイム中にブラウザレベルの設定を変更できるなど、ネットワークレイヤーの適用が必要なシナリオでは、独自の VPC 内にブラウザセッションをデプロイします。「Configure Amazon Bedrock AgentCore Runtime and tools for VPC」を参照してください。

前提条件

ブラウザプロキシを設定する前に、以下があることを確認してください。

  • 一般的なブラウザの前提条件 — 標準のブラウザツールのセットアップを完了します。AgentCore Browser の開始方法」を参照してください。

  • プロキシサーバー – パブリックインターネットからアクセス可能 (または VPC 設定を使用している場合は VPC 内でアクセス可能) で、HTTPS トラフィックトンネリングの HTTP CONNECT メソッドをサポートする HTTP/HTTPS プロキシサーバー。

  • AWS Secrets Manager シークレット (認証を使用する場合) — usernameおよび passwordキーを持つ JSON 形式のプロキシ認証情報を含むシークレット。

  • IAM アクセス許可 (認証を使用する場合) – IAM ID 呼び出しには、認証情報シークレットに対する secretsmanager:GetSecretValue アクセス許可StartBrowserSessionが必要です。

開始方法

このセクションでは、プロキシを介してブラウザトラフィックをルーティングする最も簡単な設定を示します。

ステップ 1: 認証情報シークレットを作成する (認証を使用している場合)

プロキシで認証が必要な場合は、Secrets Manager でシー AWS クレットを作成します。

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

認証情報形式の要件:

フィールド 使用できる文字

username

英数字プラス @ . _ + = -

password

英数字と @ . _ + = - ! # $ % *

使用できない文字: : コロン ()、改行、スペース、引用符。

ステップ 2: IAM アクセス許可を追加する

ブラウザセッションを作成する IAM ID にこのポリシーを追加します。

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

ステップ 3: プロキシを使用してブラウザセッションを作成する

CLI、SDK、または API AWS を使用して、プロキシ設定でブラウザセッションを作成できます。

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. AWS SDK for Python (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"] } } }
注記

プロキシ設定はブラウザレベルのルーティング設定であり、ネットワークレベルのトラフィック制御を提供しません。ネットワークレイヤーの適用については、VPC にブラウザセッションをデプロイします。「Configure Amazon Bedrock AgentCore Runtime and tools for 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 Browser セッションに拡張し、プロキシベースの接続を必要とする内部ウェブページやリソースにアクセスできます。

地理的コンテンツアクセス

特定の地理的場所にあるプロキシを介してトラフィックをルーティングすることで、リージョン固有のコンテンツにアクセスするか、リージョンのウェブサイトのバリエーションをテストします。

パートナーネットワークアクセス

他のトラフィックに一般的なプロキシを使用しながら、パートナー固有のトラフィックを専用のプロキシインフラストラクチャを介してルーティングします。

セッション動作

設定ライフサイクル

  • 作成時に設定 — プロキシ設定はセッション作成時に 1 回設定されます。実行時の設定変更はサポートされていません。異なる設定を使用する新しいセッションを作成します。

  • セッションスコープ – 各ブラウザセッションには独立したプロキシ設定があります。

  • タイムアウト – 標準セッションタイムアウトが適用されます。プロキシ設定は、セッションが終了すると破棄されます。

接続動作

  • フェイルオープン — プロキシ接続はセッションの作成時に検証されません。使用できないプロキシで設定されたセッションは、ページのロード時にエラーを表示します。

  • ランタイムエラー – 接続の失敗はブラウザのエラーページとして表示され、トラブルシューティングのためにライブビューに表示されます。

  • 自動再試行なし – 失敗したリクエストは自動的に再試行されません。

クロスアカウントシークレットアクセス

認証情報シークレットが別の 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 アクセス許可は、どの ID がどの認証情報シークレットを使用できるかを制御します。

  • クロスアカウントアクセスには、明示的なリソースポリシーが必要です。

パフォーマンスに関する考慮事項

  • キャパシティ – プロキシが予想されるリクエストボリュームを処理できることを確認します。

  • バイパス – レイテンシーの影響を受けやすい呼び出しbypass.domainPatternsのために AWS エンドポイントを に追加します。

  • 近接性 – AWS リージョンに近い地理的にプロキシを使用します。

制約

制約 制限 引き上げ可能

セッションあたりの最大プロキシ数

5

はい

プロキシあたりの最大ドメインパターン

100

はい

最大バイパスドメインパターン

100

はい

サーバーホスト名の長さ

253 文字

いいえ

ドメインパターンの長さ

253 文字

いいえ

ポート範囲

1~65535

いいえ

調整可能な制約の引き上げをリクエストするには、 AWS サポートにお問い合わせください。

制限事項

ブラウザプロキシを設定する前に、以下の制限を確認して、機能が要件を満たしていることを確認してください。

制限 詳細

トラフィックルーティング

プロキシ設定は、セッションの起動時に適用されるブラウザレベルの設定です。これはネットワークレベルのコントロールではなく、すべてのトラフィックがプロキシを通過することを保証するものではありません。ネットワークレイヤーの適用には、Configure Amazon Bedrock AgentCore Runtime and tools for VPC を使用します。

サポートされるプロトコル

HTTP および HTTPS プロキシのみ。SOCKS4 および SOCKS5 プロキシはサポートされていません。

認証

HTTP 基本認証または認証なし (IP 許可リスト)。NTLM、Kerberos、および証明書ベースの認証はサポートされていません。

プロキシの変更

プロキシ設定は、セッションの作成時に 1 回設定されます。実行時の設定変更はサポートされていません。プロキシ設定を変更する新しいセッションを作成します。

プロキシのローテーション

IP サイクルまたはロード分散の自動プロキシローテーションはサポートされていません。プロキシをローテーションする新しいセッションを作成します。

接続の検証

プロキシ接続はセッションの作成時に検証されません。接続エラーは実行時に表示されます。