

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 的 Amazon Bedrock AgentCore 執行期 AWS Marketplace
<a name="bedrock-agentcore-runtime"></a>

本文件為想要列出可在 Amazon Bedrock AgentCore 執行期上部署之 AI 代理程式或工具的 AWS Marketplace 賣方提供資訊。它概述了用於準備 Bedrock AgentCore 執行期支援容器的技術要求、組態準則和最佳實務 AWS Marketplace。

**Topics**
+ [概觀](#agentcore-runtime-overview)
+ [Bedrock AgentCore 容器技術需求](#agentcore-container-requirements)
+ [測試 Bedrock AgentCore 執行期容器](#testing-agentcore-container)
+ [容器組態的最佳實務](#container-best-practices)
+ [AWS Marketplace 提交要求](#marketplace-submission-requirements)
+ [其他資源](#agentcore-additional-resources)
+ [在 上支援 AgentCore 執行期 AWS Marketplace](#agentcore-support)

## 概觀
<a name="agentcore-runtime-overview"></a>

Amazon Bedrock AgentCore 執行期提供安全、無伺服器和專門建置的託管環境，用於部署和執行 AI 代理器或工具。在 上列出 Bedrock AgentCore 執行期容器時 AWS Marketplace，您需要確保容器符合特定要求，才能在 Bedrock AgentCore 環境中正常運作。

**注意**  
如需進一步了解，請參閱 [Amazon Bedrock AgentCore 執行期入門](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-getting-started.html)。

## Bedrock AgentCore 容器技術需求
<a name="agentcore-container-requirements"></a>

Amazon Bedrock AgentCore 執行期在列出 AI 代理器、MCP 伺服器和 A2A 伺服器方面有不同的技術需求。
+ **客服人員需求**
+ **MCP 伺服器需求**
+ **A2A 伺服器需求**

### 客服人員需求
<a name="agent-requirements"></a>

您的容器化代理程式必須符合下列核心需求：
+ **/ping** 端點：運作狀態檢查的 GET 端點
+ **/invocations** 端點：客服人員互動的 POST 端點
+ **Docker 容器**：ARM64 容器化部署套件
+ **連接埠**：容器必須公開連接埠`8080`以進行 HTTP 型代理程式通訊

#### `/ping` - GET
<a name="ping-endpoint"></a>

此端點會驗證您的代理程式是否正常運作，並準備好處理請求。

**回應範例：**

```
{
  "status": "Healthy"
}
```

#### `/invocations` - POST
<a name="invocations-endpoint"></a>

當客戶使用 JSON 格式的承載呼叫具有 InvokeAgentRuntime 動作的客服人員時，這是主要客服人員互動端點。InvokeAgentRuntime 支援串流回應，可讓客戶在部分回應可用時收到回應。

**請求範例：**

```
Content-Type: application/json
{
  "prompt": "What's the weather today?"
}
```

**回應範例：**
+ JSON 回應 （非串流）：

  ```
  Content-Type: application/json
  {
    "response": "Your agent's response here",
    "status": "success"
  }
  ```
+ SSE 回應 （串流）：

  ```
  Content-Type: text/event-stream
  data: {"event": "partial response 1"}
  data: {"event": "partial response 2"}
  data: {"event": "final response"}
  ```

### MCP 伺服器需求
<a name="mcp-server-requirements"></a>

Amazon Bedrock AgentCore 執行期可讓您部署和執行模型內容通訊協定 (MCP) 伺服器。當您使用 MCP 通訊協定設定 Amazon Bedrock AgentCore 執行期時，服務預期 MCP 伺服器容器位於路徑 `0.0.0.0:8000/mcp`。這是大多數官方 MCP 伺服器 SDKs支援的預設路徑。

由於 Amazon Bedrock AgentCore 執行期預設提供工作階段隔離，因此需要無狀態可串流 HTTP 伺服器。執行時間會自動為不包含 的任何請求新增 `Mcp-Session-Id`標頭。這可讓 MCP 用戶端維持與相同 Amazon Bedrock AgentCore 執行期工作階段的連線持續性。

`InvokeAgentRuntime` API 會直接傳遞承載資料，以便輕鬆代理 MCP 等通訊協定的 RPC 訊息。

使用要求：
+ **Transport** - 必須使用無狀態可串流 - 僅限 http
+ **工作階段管理** - 平台會自動新增工作階段隔離的`Mcp-Session-Id`標頭
+ **主機** - 容器必須接聽 `0.0.0.0`
+ **連接埠** - 容器必須公開 MCP 伺服器通訊`8000`的連接埠
+ **路徑** - 必須公開`/mcp`為 POST 端點才能接收 MCP RPC 訊息。`InvokeAgentRuntime` API 會將請求傳遞至 MCP 伺服器的此路徑。
+ **通訊協定** - MCP 伺服器必須支援 MCP 通訊協定，包括下列通訊協定訊息：
  + `tools/list`
  + `tools/call` （受 FastMCP 等常見架構支援）

若要進一步了解 MCP 伺服器需求，請參閱[在 AgentCore 執行期中部署 MCP 伺服器](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-mcp.html)。

#### `/mcp` - POST
<a name="mcp-endpoint"></a>

這是客戶使用 InvokeAgentRuntime 呼叫 MCP 伺服器時的主要客服人員互動端點。

**範例清單請求：**

```
Content-Type: application/json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list",
}
```

**範例清單回應：**

JSON 回應 （非串流）：

```
Content-Type: application/json
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "tools": [
      {
        "name": "get_weather",
        "title": "Weather Information Provider",
        "description": "Get current weather information for a location",
        "inputSchema": {
          "type": "object",
          "properties": {
            "location": {
              "type": "string",
              "description": "City name or zip code"
            }
          },
          "required": ["location"]
        }
      }
    ],
    "nextCursor": "next-page-cursor"
  }
}
```

**工具呼叫請求範例：**

```
Content-Type: application/json
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "get_weather",
    "arguments": {
      "location": "New York"
    }
  }
}
```

**工具呼叫回應範例：**

JSON 回應 （非串流）：

```
Content-Type: application/json
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Current weather in New York:\nTemperature: 72°F\nConditions: Partly cloudy"
      }
    ],
    "isError": false
  }
}
```

### A2A 伺服器需求
<a name="a2a-server-requirements"></a>

Amazon Bedrock AgentCore 執行期可讓您在 AgentCore 執行期中部署和執行 Agent-to-Agent (A2A) 伺服器。Amazon Bedrock AgentCore 的 A2A 通訊協定支援可做為透明代理層，與 A2A 伺服器無縫整合。為 A2A 設定時，Amazon Bedrock AgentCore 預期容器在根路徑 (`0.0.0.0:9000/`) `9000`的連接埠上執行無狀態、可串流的 HTTP 伺服器，這符合預設的 A2A 伺服器組態。

此服務提供企業級工作階段隔離，同時維持通訊協定透明度 - 來自 InvokeAgentRuntime API 的 JSON-RPC 承載會直接傳遞至 A2A 容器，無需修改。此架構會保留標準 A2A 通訊協定功能，例如透過 的代理程式卡`/.well-known/agent-card.json`和 JSON-RPC 通訊的內建代理程式探索，同時新增企業身分驗證 (SigV4/OAuth 2.0) 和可擴展性。

與其他通訊協定的主要區別在於連接埠 (9000 vs 8080 for HTTP)、掛載路徑 (`/` vs `/invocations`) 和標準化代理程式探索機制，使得 Amazon Bedrock AgentCore 成為生產環境中 A2A 代理程式的理想部署平台。

使用要求：
+ **連接埠** - A2A 伺服器在連接埠 9000 上執行 （相較於 HTTP 的 8080、MCP 的 8000)
+ **主機** - 容器必須接聽 `0.0.0.0`
+ **路徑**
  + A2A 伺服器掛載於 `/`(vs `/invocations` for HTTP， `/mcp` for MCP)
  + `/ping` 使用 GET 進行 的運作狀態檢查
+ **客服人員卡** - A2A 透過位於 的客服人員卡提供內建客服人員探索 `/.well-known/agent-card.json`
+ **Protocol** - 使用 JSON-RPC agent-to-agent通訊
+ **身分驗證** - 同時支援 SigV4 和 OAuth 2.0 身分驗證機制

若要進一步了解 A2A 伺服器需求，請參閱在 [ AgentCore 執行期中部署 A2A 伺服器](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-a2a.html)。

#### `/` - POST
<a name="a2a-endpoint"></a>

這是客戶使用 InvokeAgentRuntime 呼叫 A2A 伺服器時的主要客服人員互動端點。

**客服人員調用請求範例：**

```
Content-Type: application/json
{  
  "jsonrpc": "2.0",  
  "id": "req-001",  
  "method": "message/send",  
  "params": {  
    "message": {  
      "role": "user",  
      "parts": [  
        {  
          "kind": "text",  
          "text": "what is 101 * 11?"  
        }  
      ],  
      "messageId": "12345678-1234-1234-1234-123456789012"  
    }  
  } 
}
```

**客服人員叫用回應範例：**

JSON 回應 （非串流）：

```
Content-Type: application/json
{
  "jsonrpc": "2.0",
  "id": "req-001",
  "result": {
    "artifacts": [
      {
        "parts": [
          {
            "kind": "text",
            "text": "101 * 11 is 1111"
          }
        ]
      }
    ]
  }
}
```

**客服人員卡擷取範例：**

```
curl https://bedrock-agentcore.<REGION>.amazonaws.com/runtimes/{escaped_agent_arn}/invocations/.well-known/agent-card.json
```

#### `/ping` - GET
<a name="a2a-endpoint-ping"></a>

這是執行運作狀態檢查的端點。

## 測試 Bedrock AgentCore 執行期容器
<a name="testing-agentcore-container"></a>

將容器提交至 之前 AWS Marketplace，請徹底進行測試：

### 本機代理程式測試
<a name="local-agent-testing"></a>

使用 Docker 在本機測試您的代理程式

```
docker run -p 8080:8080 <your-container-image>

# Test ping endpoint
curl http://localhost:8080/ping

# Test agent invocation endpoint
curl -X POST http://localhost:8080/invocations \
     -H "Content-Type: application/json" \
     -d '{"prompt": "Hello world!"}'
```

### 本機 MCP 伺服器測試
<a name="local-mcp-testing"></a>

使用 Docker 在本機測試 MCP 伺服器

```
docker run -p 8000:8000 <your-container-image>

# Test ping endpoint
curl http://localhost:8000/ping

# Test MCP endpoint with tools/list
curl -X POST http://localhost:8000/mcp \
     -H "Content-Type: application/json" \
     -d '{"jsonrpc": "2.0","id": 1,"method": "tools/list"}'

# Test MCP endpoint with tools/call
curl -X POST http://localhost:8000/mcp \
     -H "Content-Type: application/json" \
     -d '{ "jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": {"name": "get_weather", "arguments": {"location": "New York"}}}'
```

### 本機 A2A 伺服器測試
<a name="local-a2a-testing"></a>

使用 Docker 在本機測試您的 A2A 伺服器

```
docker run -p 9000:9000 <your-container-image>

# Test ping endpoint
curl http://localhost:9000/ping

# Retrieve agent card
curl http://localhost:9000/.well-known/agent-card.json

# Test A2A endpoint with message/send
curl -X POST http://localhost:9000/ \
     -H "Content-Type: application/json" \
     -d '{ "jsonrpc": "2.0", "id": "req-001", "method": "message/send", "params": { "message": {  "role": "user",  "parts": [  {  "kind": "text",  "text": "what is 101 * 11?"}],"messageId": "12345678-1234-1234-1234-123456789012" }}}'
```

### 在 Bedrock AgentCore 執行期上測試
<a name="testing-on-agentcore"></a>

在本機測試容器之後，請將其上傳至 Amazon Elastic Container Registry (Amazon ECR)，並將其部署至 Amazon Bedrock AgentCore 執行期。您可以使用 Amazon Bedrock AgentCore 執行期主控台或 AWS Command Line Interface (AWS CLI) 部署。

## 容器組態的最佳實務
<a name="container-best-practices"></a>

### 安全考量
<a name="security-considerations"></a>
+ **隔離** - 請勿在調用之間存放敏感資料
+ **身分驗證** - 驗證所有傳入的請求
+ **記錄** - 記錄適當的資訊，但避免包含敏感資料
+ **相依性** - 保持所有相依性為最新狀態，以防止安全漏洞

### 效能最佳化
<a name="performance-optimization"></a>
+ **冷啟動** - 針對快速冷啟動最佳化您的容器
+ **記憶體使用**量 - 將記憶體使用量降至最低，以改善效能
+ **並行** - 設計您的代理程式以有效率地處理並行請求
+ **逾時** - 實作適當的逾時處理

### 錯誤處理
<a name="error-handling"></a>
+ **緩和降級** - 在服務無法使用時實作備用機制
+ **結構化錯誤** - 傳回具有適當 HTTP 狀態碼的良好結構化錯誤回應
+ **重試邏輯** - 針對暫時性失敗實作適當的重試邏輯

## AWS Marketplace 提交要求
<a name="marketplace-submission-requirements"></a>

當您將 AgentCore 執行期容器提交至 時 AWS Marketplace，請包含：
+ **容器映像** – 您的容器映像推送至 Amazon ECR
+ **文件** – 有關如何使用您的代理程式或 MCP 伺服器的完整文件
+ **使用範例** – 如何叫用代理程式或 MCP 伺服器的明確範例
+ **支援資訊** – 支援聯絡資訊
+ **定價資訊** – 清除代理程式或 MCP 伺服器的定價結構

## 其他資源
<a name="agentcore-additional-resources"></a>

如需詳細資訊，請參閱下列內容：
+ [什麼是 Amazon Bedrock AgentCore？](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/what-is-bedrock-agentcore.html)
+ [什麼是 AWS Marketplace？](https://docs.aws.amazon.com/marketplace/latest/userguide/what-is-marketplace.html)
+ [容器產品入門](container-product-getting-started.md)

## 在 上支援 AgentCore 執行期 AWS Marketplace
<a name="agentcore-support"></a>

如需有關在 上列出 AgentCore 執行期容器的問題 AWS Marketplace，請參閱[取得 的支援 AWS Marketplace](https://docs.aws.amazon.com/marketplace/latest/buyerguide/buyer-support.html)。

如需 AgentCore 執行期的技術問題，請參閱 [AWS 支援 和客戶服務](https://console.aws.amazon.com/support/home#/case/create?issueType=technical)。