

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用浏览器扩展
<a name="browser-extensions"></a>

浏览器扩展允许您在创建会话时将自定义扩展程序安装到浏览器会话中。这使您能够使用自己的扩展程序自定义浏览器行为，以执行自动化任务、网页抓取、测试等。

## 概述
<a name="browser-extensions-overview"></a>

亚马逊 Bedrock 中的浏览器扩展程序 AgentCore 的工作原理如下：

1. 您提供存储在自己的 Amazon S3 存储桶中的浏览器扩展 ZIP 文件列表

1. 该服务验证您是否可以使用您的证书访问这些 Amazon S3 对象

1. 在浏览器会话启动期间，从 Amazon S3 存储桶下载扩展程序并安装到浏览器会话中

## 先决条件
<a name="browser-extensions-prerequisites"></a>

在使用浏览器扩展之前，请确保您有：
+ 已完成常规浏览器[先决条件 ](browser-quickstart.md#browser-prerequisites) 
+ 用于存储您的扩展 ZIP 文件的 Amazon Amazon S3 存储桶
+ 访问包含您的扩展程序的 Amazon S3 存储桶的 IAM 权限。将以下权限添加到您的 IAM 策略中：

  ```
  {
  "Version": "2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "ExtensionS3Access",
              "Effect": "Allow",
              "Action": [
                  "s3:GetObject",
                  "s3:GetObjectVersion"
              ],
              "Resource": [
                  "arn:aws:s3:::<S3Bucket>/<path_to_extensions>/*"
              ]
          }
      ]
  }
  ```
**注意**  
Amazon S3 存储桶必须与浏览器会话位于同一个 Amazon 账户中。扩展的文件大小限制为 10 MB，每个会话最多 10 个扩展名。

## 准备扩展文件
<a name="browser-extensions-preparing"></a>

要准备用于浏览器工具的扩展，请执行以下操作：

1.  **创建 Chrome 扩展程序 ** 

   您的扩展程序应遵循标准的 Chromium 扩展格式并遵守 [ Chromium 扩展指南](https://www.chromium.org/developers/design-documents/extensions/)。每个扩展名都必须包含一个有效的`manifest.json`文件。

1.  **创建 ZIP 文件 ** 

   压缩扩展目录内容（不是父文件夹）：

   ```
   cd my-extension
   zip -r ../my-extension.zip.
   ```

1.  **上传到 S3 ** 

   将 ZIP 文件上传到您的 Amazon S3 存储桶：

   ```
   aws s3 cp my-extension.zip s3://my-extensions-bucket/extensions/my-extension.zip
   ```

## 使用扩展程序创建浏览器会话
<a name="browser-extensions-create-session"></a>

您可以使用 Amazon CLI、SDK 或 API 创建带有扩展的浏览器会话。

**Example**  

1. 要使用 Amazon CLI 启动带有扩展程序的浏览器会话，请执行以下操作：

   ```
   aws bedrock-agentcore start-browser-session \
     --region <Region> \
     --browser-identifier "aws.browser.v1" \
     --name "my-session-with-extensions" \
     --session-timeout-seconds 1800 \
     --extensions '[
       {
         "location": {
           "s3": {
             "bucket": "my-extensions-bucket",
             "prefix": "extensions/my-extension.zip"
           }
         }
       }
     ]'
   ```

1. 要使用 Amazon 适用于 Python 的软件开发工具包 (Boto3) 启动带有扩展程序的浏览器会话，请执行以下操作：

   ```
   import boto3
   
   region = "us-west-2"
   client = boto3.client('bedrock-agentcore', region_name=region)
   
   response = client.start_browser_session(
       browserIdentifier="aws.browser.v1",
       name="my-session-with-extensions",
       sessionTimeoutSeconds=1800,
       viewPort={
           'height': 1080,
           'width': 1920
       },
       extensions=[
           {
               "location": {
                   "s3": {
                       "bucket": "my-extensions-bucket",
                       "prefix": "extensions/my-extension.zip"
                   }
               }
           },
           {
               "location": {
                   "s3": {
                       "bucket": "my-extensions-bucket",
                       "prefix": "extensions/another-extension.zip",
                       "versionId": "abc123"  # Optional - for versioned S3 buckets
                   }
               }
           }
       ]
   )
   
   print(f"Session ID: {response['sessionId']}")
   print(f"Status: {response['status']}")
   print(f"Automation Stream: {response['streams']['automationStream']['streamEndpoint']}")
   ```

1. 要使用 API 启动带有扩展程序的浏览器会话，请执行以下操作：

   ```
   # Using awscurl
   awscurl -X PUT \
     "https://bedrock-agentcore.<Region>.amazonaws.com/browsers/aws.browser.v1/sessions/start" \
     -H "Content-Type: application/json" \
     -H "Accept: application/json" \
     --service bedrock-agentcore \
     --region <Region> \
     -d '{
       "name": "my-session-with-extensions",
       "sessionTimeoutSeconds": 1800,
       "viewPort": {
         "height": 1080,
         "width": 1920
       },
       "extensions": [
         {
           "location": {
             "s3": {
               "bucket": "my-extensions-bucket",
               "prefix": "extensions/my-extension.zip"
             }
           }
         },
         {
           "location": {
             "s3": {
               "bucket": "my-extensions-bucket",
               "prefix": "extensions/another-extension.zip"
             }
           }
         }
       ]
     }'
   ```