可易

用 Amazon Bedrock AgentCore Runtime 直接代码部署加快迭代

可易团队阅读约 6 分钟

演示用 AgentCore 入门工具包把 Strands 智能体打成 ZIP,直接部署到 Amazon Bedrock AgentCore Runtime,并比较容器部署在流程、耗时、存储、体积和语言上的差别。

目录

#用 Amazon Bedrock AgentCore Runtime 直接代码部署加快迭代

Amazon Bedrock AgentCore 是一个智能体平台(agentic platform),用于大规模地安全构建、部署并运行有效的智能体。Amazon Bedrock AgentCore Runtime 是 Bedrock AgentCore 的一项全托管服务,提供低延迟的无服务器(serverless)环境来部署智能体和工具。它提供会话隔离(session isolation),支持包括常见开源框架在内的多种智能体框架,并能处理多模态工作负载和长时间运行的智能体。

AgentCore Runtime 支持基于容器的部署(container-based deployment):容器定义写在 Dockerfile 中,智能体被构建为容器镜像。已经具备容器构建与部署流水线的客户会从这种方式受益,因为可以把智能体部署接入现有流水线。

今天,AgentCore Runtime 推出了第二种部署智能体的方法——直接代码部署(direct code deployment,适用于 Python)。可以把智能体代码及其依赖打包成 ZIP 归档,从而不必准备 Docker 定义和 Amazon Elastic Container Registry(ECR)依赖。这让开发人员更容易做出原型并更快迭代。对于在部署智能体时不想操心 Docker 经验和容器基础设施的客户,这种方法很合适。

在本文中,我们将演示如何使用直接代码部署(适用于 Python)。

介绍 AgentCore Runtime 直接代码部署

使用容器部署方法时,开发人员要创建 Dockerfile、构建与 ARM 兼容的容器、管理 ECR 存储库,并在代码变更时上传容器。在已经建立容器开发运维(DevOps)流水线来自动完成部署的地方,这种方式效果很好。

不过,希望获得全托管部署的客户可以从直接代码部署中受益,它能明显改善开发人员的时间和生产力。直接代码部署提供了一条安全且可扩展的路径,从快速做出智能体能力原型,一直到按规模部署生产工作负载。

我们将讨论每种部署选项的长处,帮助你为使用场景选择合适的方法。

使用直接代码部署时,开发人员把代码和依赖做成 ZIP 归档,上传到 Amazon S3,并在智能体配置中配置该存储桶。使用 AgentCore 入门工具包(starter toolkit)时,工具包会处理依赖检测、打包和上传,从而大幅简化开发体验。直接代码部署也支持通过 API 完成。

我们从较高层面比较这两种方法的部署步骤:

基于容器的部署

基于容器的部署方法包含以下步骤:

  • 创建 Dockerfile
  • 构建与 ARM 兼容的容器
  • 创建 ECR 存储库
  • 上传到 ECR
  • 部署到 AgentCore Runtime

直接代码部署

直接代码部署方法包含以下步骤:

  • 把代码和依赖打包成 ZIP 归档
  • 上传到 S3
  • 在智能体配置中配置该存储桶
  • 部署到 AgentCore Runtime

如何使用直接代码部署

我们用一个由 Strands Agents SDK 创建的智能体来说明直接代码部署如何工作,并使用 AgentCore starter-toolkit 部署该智能体。

先决条件

开始之前,请确认你具备以下条件:

  • Python 3.10 到 3.13 中的任一版本
  • 已安装你偏好的包管理器。例如,我们使用 uv 包管理器。
  • 用于创建和部署智能体的 AWS 账户
  • 可使用 Anthropic Claude Sonnet 4.0 的 Amazon Bedrock 模型访问权限

步骤 1:初始化项目

使用 uv 包管理器建立一个新的 Python 项目,然后进入该项目目录:

uv init <project> --python 3.13
cd <project>

步骤 2:为项目添加依赖

为项目安装所需的 Bedrock AgentCore 库和开发工具。在本示例中,依赖通过 .toml 文件添加;也可以把它们写在 requirements.txt 文件中:

uv add bedrock-agentcore strands-agents strands-agents-tools
uv add --dev bedrock-agentcore-starter-toolkit
source .venv/bin/activate

步骤 3:创建 agent.py 文件

创建定义 AI 智能体行为的主实现文件:

from bedrock_agentcore import BedrockAgentCoreApp
from strands import Agent, tool
from strands_tools import calculator
from strands.models import BedrockModel
import logging

app = BedrockAgentCoreApp(debug=True)

# Logging setup
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

# Create a custom tool
@tool
def weather():
     """ Get weather """
     return "sunny"

model_id = "us.anthropic.claude-sonnet-4-20250514-v1:0"
model = BedrockModel(
     model_id=model_id,
)

agent = Agent(
     model=model,
     tools=[calculator, weather],
     system_prompt="You're a helpful assistant. You can do simple math calculation, and tell the weather."
)

@app.entrypoint
def invoke(payload):
     """Your AI agent function"""
     user_input = payload.get("prompt", "Hello! How can I help you today?")
     logger.info("\n User input: %s", user_input)
     response = agent(user_input)
     logger.info("\n Agent result: %s ", response.message)
     return response.message['content'][0]['text']

if __name__ == "__main__":
     app.run()

步骤 4:部署到 AgentCore Runtime

配置智能体并将其部署到 AgentCore Runtime 环境:

agentcore configure --entrypoint agent.py --name <agent-name>

这会启动一个交互会话。你在其中配置用于上传 ZIP 部署包的 S3 存储桶,并选择部署配置类型(如下列配置所示)。若要使用直接代码部署,请选择选项 1——Code Zip。

部署配置(Deployment Configuration)

选择部署类型:

  • Code Zip(推荐)——简单、无服务器,不需要 Docker
  • Container——用于自定义运行时或复杂依赖
agentcore launch

该命令会创建 ZIP 部署包,把它上传到指定的 S3 存储桶,并在 AgentCore Runtime 环境中启动智能体,使其可以接收并处理请求。

为了测试这个方案,我们向智能体询问天气如何:

agentcore invoke '{"prompt":"How is the weather today?"}'

首次部署大约需要 30 秒完成。此后对智能体的更新会受益于更精简的直接代码部署流程,耗时应少于一半,从而在开发期间支持更快的迭代周期。

何时选择直接代码而不是基于容器的部署

我们看几个维度,了解直接代码部署和基于容器的部署有何不同。这有助于你选择适合自己的选项:

  • 部署过程:直接代码把智能体部署为 ZIP 文件,不需要 Docker、ECR 或 CodeBuild。基于容器的部署使用 Docker 和 ECR,并可完整控制 Dockerfile。
  • 部署时间:智能体首次部署时两者差别不大;此后对智能体的更新,直接代码部署明显更快(容器平均约 30 秒,直接代码部署约 10 秒)。
  • 产物存储:直接代码把 ZIP 包存放在 S3 存储桶中。基于容器的部署把 Docker 镜像存放在 Amazon ECR 中。直接代码部署按标准 S3 存储费率产生存储成本(自 2026 年 2 月 27 日起),因为产物存放在服务账户中。基于容器的部署在你的账户中产生 Amazon ECR 费用。
  • 定制:直接代码部署通过基于 ZIP 的打包支持自定义依赖,而基于容器的方式依赖 Dockerfile。
  • 包体积:直接代码部署把包体积限制为 250MB,而基于容器的包最大可达 2GB。
  • 语言支持:直接代码目前支持 Python 3.10、3.11、3.12 和 3.13。基于容器的部署支持多种语言和运行时。

我们的一般指导是:

当包超过 250MB、你已有容器持续集成/持续交付(CI/CD)流水线,或你需要高度专用的依赖和自定义打包要求时,基于容器的部署是合适的选择。如果需要多语言支持、自定义系统依赖,或要在自己的账户中直接控制产物存储和版本管理,请选择容器。

当包小于 250MB、你使用 Python 3.10–3.13 以及 LangGraph、Strands 或 CrewAI 等常见框架,并且需要用快速迭代周期做快速原型时,直接代码部署是合适的选择。如果构建过程直接、没有复杂依赖,并且你想去掉 Docker/ECR/CodeBuild 的搭建,请选择直接代码。

对许多团队而言,混合方式效果很好:在快速原型和试验阶段使用直接代码,让快速迭代和简单搭建加快开发;当包体积、多语言要求或专用构建流程有需要时,再在生产中改用容器。

结论

Amazon Bedrock AgentCore Runtime 的直接代码部署让智能体开发的迭代周期更快,同时仍然受益于企业级部署的安全性和规模。开发人员现在可以直接部署代码来快速做出原型并迭代,而不必创建容器。要开始使用 AgentCore Runtime 直接代码部署,请访问 AWS 文档。 PRIMARY_SOURCE: https://aws.amazon.com/blogs/machine-learning/iterate-faster-with-amazon-bedrock-agentcore-runtime-direct-code-deployment

  • #AgentCore
  • #直接代码部署
  • #Strands
  • #Python
  • #容器部署