

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

# 适用于 Amazon Bedrock AgentCore 运行时 AWS Marketplace
<a name="bedrock-agentcore-runtime"></a>

本文档为想要列出可部署在 Amazon Bedrock AgentCore Runtime 上的 AI 代理或工具的 AWS Marketplace 卖家提供信息。它概述了为支持 Bedrock AgentCore Runtime 的容器做好准备的技术要求、配置指南和最佳实践。 AWS Marketplace

**Topics**
+ [概述](#agentcore-runtime-overview)
+ [基岩 AgentCore 容器技术要求](#agentcore-container-requirements)
+ [测试你的 Bedrock AgentCore 运行时容器](#testing-agentcore-container)
+ [容器配置的最佳实践](#container-best-practices)
+ [AWS Marketplace 提交要求](#marketplace-submission-requirements)
+ [其他资源](#agentcore-additional-resources)
+ [对 AgentCore Runtime 的支持 AWS Marketplace](#agentcore-support)

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

Amazon Bedrock AgentCore Runtime 为部署和运行 AI 代理或工具提供了一个安全、无服务器和专门构建的托管环境。在上列出 Bedrock AgentCore Runtime 容器时 AWS Marketplace，你需要确保它满足特定要求，以便在 Bedrock AgentCore 环境中正常运行。

**注意**  
要了解更多信息，请参阅 [Amazon Bedrock AgentCore 运行时入门](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-getting-started.html)。

## 基岩 AgentCore 容器技术要求
<a name="agentcore-container-requirements"></a>

Amazon Bedrock AgentCore Runtime 对列出 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 Runtime 允许您部署和运行模型上下文协议 (MCP) 服务器。当你使用 MCP 协议配置 Amazon Bedrock R AgentCore untime 时，该服务需要路径上有 MCP 服务器容器。`0.0.0.0:8000/mcp`这是大多数官方 MCP 服务器 SDKs 支持的默认路径。

由于 Amazon Bedrock AgentCore Runtime 默认提供会话隔离，因此它需要无状态的 Streamable-HTTP 服务器。对于任何不包含 `Mcp-Session-Id` 标头的请求，该运行时都会自动添加一个标头。这允许 MCP 客户端保持与同一 Amazon Bedrock AgentCore 运行时会话的连接连续性。

`InvokeAgentRuntime` API 会直接透传有效载荷数据，因而能够轻松代理 MCP 等协议的 RPC 消息。

要求：
+ **传输** - 必须仅使用无状态且可流式传输的 HTTP
+ **会话管理** - 平台会自动添加 `Mcp-Session-Id` 标头以实现会话隔离
+ **主机** - 容器必须侦听 `0.0.0.0`
+ **端口** - 容器必须公开端口 `8000` 才能进行 MCP 服务器通信
+ **路径** - 必须将 `/mcp` 公开为 POST 端点，以便接收 MCP RPC 消息。`InvokeAgentRuntime` API 会将请求传递到此路径，以供 MCP 服务器处理。
+ **协议** - MCP 服务器必须支持 MCP 协议，包括以下协议消息：
  + `tools/list`
  + `tools/call`（由 FastMCP 等常见框架支持）

要了解有关 MCP 服务器要求的更多信息，请参阅[在运行时部署 MCP 服务器。 AgentCore ](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-mcp.html)

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

这是客户使用呼叫 MCP 服务器时的主要代理互动端点。 InvokeAgentRuntime

**发布请求示例：**

```
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 Runtime 允许您在运行时中部署和运行 Agent-to-Agent (A2A) 服务器。 AgentCore Amazon Bedrock AgentCore 的 A2A 协议支持通过充当透明代理层来实现与 A2A 服务器的无缝集成。在 A2A 配置时，Amazon Bedrock AgentCore 希望容器`9000`在根路径 (`0.0.0.0:9000/`) 的端口上运行无状态、可流式传输的 HTTP 服务器，这与默认 A2A 服务器配置一致。

该服务提供企业级会话隔离，同时保持协议透明度——来自 InvokeAgentRuntime API的JSON-RPC有效负载无需修改即可直接传递到A2A容器。该架构保留了标准的 A2A 协议功能，例如通过代理卡和 JSON-RPC 通信发现内置代理，同时增加了企业身份验证 (Sigv4/ 2.0) `/.well-known/agent-card.json` 和可扩展性。OAuth 

与其他协议的主要区别在于端口（HTTP 为 9000 与 8080）、挂载路径（`/`vs`/invocations`）和标准化代理发现机制，这使得 Amazon Bedrock AgentCore 成为生产环境中 A2A 代理的理想部署平台。

要求：
+ **端口**-A2A 服务器在端口 9000 上运行（而 HTTP 为 8080，MCP 为 8000）
+ **主机** - 容器必须侦听 `0.0.0.0`
+ **路径**
  + A2A 服务器安装在`/`（与 HTTP 相比，`/mcp`MCP 服务器`/invocations`的安装位置）
  + `/ping`使用 GET 时进行健康检查
+ **特工卡片**-A2A 通过代理卡提供内置代理发现功能 `/.well-known/agent-card.json`
+ **协议**-使用 JSON-RPC 进行通信 agent-to-agent
+ **身份验证**-同时支持 Sigv4 和 OAuth 2.0 身份验证方案

要了解有关 A2A 服务器要求的更多信息，请参阅在运行时[部署 A2A](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-a2a.html) 服务器。 AgentCore 

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

这是客户使用呼叫 A2A 服务器时的主要代理互动端点。 InvokeAgentRuntime

**代理调用请求示例：**

```
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 ECR) Container Registry，然后将其部署到亚马逊 Bedrock Runtime。 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 服务器的清晰示例
+ S@@ **upport 信息** — 支持联系信息
+ **定价信息** — 为您的代理或 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 Runtime 的支持 AWS Marketplace
<a name="agentcore-support"></a>

有关在上架 AgentCore 运行时容器的问题 AWS Marketplace，请参阅[获取支持 AWS Marketplace](https://docs.aws.amazon.com/marketplace/latest/buyerguide/buyer-support.html)。

有关 AgentCore Runtime 的技术问题，请参阅[AWS 支持 和客户服务](https://console.aws.amazon.com/support/home#/case/create?issueType=technical)。