Agentic AI AcademyAgentic AI Academy

AgentCore vs. Bedrock Agents vs. Flows

Managed, modular, or visual — and when to pick which

Beginner 12 minBuilderDecision-maker
What you'll be able to do
  • Explain classic Bedrock Agents as a fully managed, configuration-first product where AWS runs the ReAct loop on Bedrock-hosted models with action groups and Knowledge Bases
  • Contrast AgentCore as modular, code-first infrastructure where you bring your own framework, model, and orchestration and AWS supplies the production primitives
  • Identify the capabilities AgentCore adds over classic Agents — MCP support, VPC connectivity, and A2A
  • Place Bedrock Flows as a different layer — visual drag-and-drop orchestration of often-predetermined steps that can complement an agent
  • Quote AWS's coexistence stance and explain why migrating off classic Bedrock Agents is optional
  • Apply a decision rule that maps managed simplicity, modular control, and visual workflow onto a concrete project
At a glance

Three things wear the Bedrock name and learners constantly confuse them: classic Amazon Bedrock Agents (fully managed, configuration-first), Amazon Bedrock AgentCore (modular, code-first, framework-agnostic infrastructure), and Bedrock Flows (visual orchestration of predetermined steps). This lesson disambiguates all three, shows where they live in the stack, and hands you a decision rule. The key takeaway up front: AWS positions these as coexisting, not replacing each other — migration is optional.

  1. 1Three things wearing the Bedrock name
  2. 2Classic Bedrock Agents: managed and configuration-first
  3. 3AgentCore: modular, code-first, framework- and model-agnostic
  4. 4Coexistence, not deprecation
  5. 5Bedrock Flows: a different layer entirely
  6. 6A decision rule: managed, modular, or visual

Three things wearing the Bedrock name

When you search "Bedrock agents" you hit three different products, and conflating them is the single most common beginner mistake. They are not versions of one thing — they sit at different layers and solve different problems.

ProductWhat it isWho runs the loopModelsPrimary surface
Classic Amazon Bedrock AgentsA fully managed, configuration-first agent productAWS runs the orchestration / ReAct loopBedrock-hosted models onlyConsole / API config (action groups + Knowledge Bases)
Amazon Bedrock AgentCoreA modular, code-first platform of production primitivesYour code (any framework) runs the loopAny model (Bedrock, OpenAI, Gemini, Anthropic API, self-hosted)SDK / CLI / container
Bedrock FlowsA visual orchestrator of (often predetermined) stepsThe flow graph you drew runs the stepsPer-node (FMs, prompts, KBs, Lambda)Drag-and-drop visual builder

The "AgentCore" brand sits under the Bedrock umbrella but is explicitly not limited to Bedrock models or to one framework. Treat it as a sibling platform, distinct from the classic managed Amazon Bedrock Agents product. The mental shorthand for the rest of this lesson:

  • Classic Bedrock Agents = managed simplicity — you configure, AWS operates.
  • AgentCore = modular control — you code, AWS supplies infrastructure.
  • Bedrock Flows = visual workflow — you draw deterministic pipelines.

Watch out

"Bedrock Agents" is overloaded

In AWS docs and blogs, "Bedrock Agents" almost always means the classic, managed product — not AgentCore. AgentCore is its own platform with its own dev guide, SDK, and pricing page. When you read a tutorial, check the URL: .../devguide/...agents... for classic vs .../bedrock-agentcore/latest/devguide/... for AgentCore.

Classic Bedrock Agents: managed and configuration-first

Classic Amazon Bedrock Agents is fully managed and configuration-first. You define the agent in the console or API, attach a Knowledge Base for retrieval, and give it action groups (the functions it can call). Then AWS runs the orchestration — the ReAct (reason + act) loop — for you. You don't write the agent loop; you describe its pieces and AWS executes them.

That design buys you speed and simplicity, and it comes with two structural constraints:

  1. You're tied to Bedrock-hosted models. The orchestration runs against models hosted in Bedrock — you can't point a classic agent at the OpenAI API, Gemini, or a self-hosted model.
  2. You're tied to AWS's managed loop. The reasoning loop is AWS's, not yours. You can shape it with instructions, action groups, and Knowledge Bases, but you don't own the orchestration code, so deeply custom control flow (branching across frameworks, bespoke tool-selection logic, multi-agent topologies you design yourself) isn't your call to make.

Conceptually, a classic agent is assembled like this:

text
  Classic Bedrock Agent (AWS runs the loop)
  ┌───────────────────────────────────────────┐
  │  Instructions  +  Bedrock-hosted FM         │
  │        │                                    │
  │        ├── Action groups   (functions)      │
  │        └── Knowledge Bases  (retrieval)     │
  └───────────────────────────────────────────┘

If your use case fits the managed shape — a Bedrock model, a handful of actions, a knowledge base, and you'd rather not operate any infrastructure — classic Bedrock Agents is the fastest path from idea to a working agent.

Note

Configuration-first means you describe, not code

The defining trait of classic Bedrock Agents is that the agent is declared (action groups, Knowledge Bases, instructions) rather than implemented (a framework object you wrote). That is the exact axis AgentCore flips.

AgentCore: modular, code-first, framework- and model-agnostic

AgentCore is the modular, code-first, framework-agnostic alternative. You bring your own framework, model, and orchestration; AgentCore supplies the production infrastructure — secure serverless hosting with per-session isolation, identity, memory, a governed tool gateway, sandboxes, and observability. It solves the prototype-to-production gap: it's easy to build an agent on your laptop with LangGraph or Strands, but hard to operate it safely at scale. AgentCore hands you those operational primitives as managed services so you keep your agent logic and offload the plumbing.

Two foundational properties define it:

  • Framework-agnostic — Runtime hosts a container that speaks a known protocol, not a framework. Your framework lives inside the container; the @app.entrypoint decorator is the seam between AWS's managed HTTP server and your agent object.
  • Model-agnostic — the model is just a config value inside your code. AgentCore never inspects it.

A minimal AgentCore agent — note that the framework call is yours, not AWS's:

python
from bedrock_agentcore.runtime import BedrockAgentCoreApp
from strands import Agent

app = BedrockAgentCoreApp()
agent = Agent()  # your framework, your orchestration — swap for LangGraph/CrewAI/etc.

@app.entrypoint
def handler(payload):
    result = agent(payload.get("prompt"))  # the loop runs in YOUR code
    return {"result": result.message}

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

Versus classic Bedrock Agents, AgentCore explicitly adds:

  • MCP support — expose APIs/Lambda/services as Model Context Protocol tools (via Gateway) and connect to existing MCP servers.
  • VPC connectivity — run inside your own VPC with PrivateLink, for private backends and network controls.
  • A2A — agent-to-agent protocol support for multi-agent topologies.

And because it's modular, you don't have to adopt the whole platform. Services "work together or independently": you can use only Gateway, only Code Interpreter, or only Memory while your agent runs on EKS, Lambda, or ECS. Each service has its own SDK/API surface and is independently billable.

Key insight

The axis is who owns the loop

Classic Bedrock Agents: AWS owns the reasoning loop, you configure it. AgentCore: you own the loop (in your framework code), AWS owns the infrastructure it runs on. Everything else — model choice, MCP, VPC, A2A — follows from that one difference.

Tip

You can adopt AgentCore à la carte

Already happy running your agent on Lambda or EKS? You can still pull in a single AgentCore service. A common first step is using only Gateway to turn existing APIs into MCP tools, or only Code Interpreter as a managed sandbox — no need to migrate hosting to Runtime.

Coexistence, not deprecation

A natural assumption is that AgentCore replaces classic Bedrock Agents. AWS is explicit that it does not. From the AgentCore FAQ:

"If you are using Amazon Bedrock Agents today, you can continue to do so… AgentCore is an agentic platform that provides enhanced capabilities including support for any open-source framework."

The practical implications:

  • Classic Bedrock Agents is not deprecated. Existing managed agents keep running; nothing forces a rewrite.
  • Migration is optional. You move to AgentCore when you need what it adds — your own framework/model, MCP tools, VPC connectivity, A2A, custom orchestration — not because a deadline is looming.
  • They can sit side by side. Some workloads stay on the managed product; others, that have outgrown the managed shape, run on AgentCore. The same team can use both.

So the question is never "which one survives?" — it's "which one fits this workload?" That's a per-project decision, which is exactly what the decision rule in the next section is for.

Watch out

Status of newer modules changes fast

AgentCore is moving quickly and some modules (Harness, Registry, Payments, Optimization, and others) are preview, not GA, and the live "Core services" list keeps growing. Don't teach preview features as production-ready, and re-check the live overview and pricing pages before relying on any specific capability — these facts are volatile (verify the live AWS pages).

Bedrock Flows: a different layer entirely

Bedrock Flows is the third thing people confuse with AgentCore, but it lives at a different layer. Flows is visual, drag-and-drop orchestration of (often predetermined) steps and AWS services for a generative-AI application — you wire nodes (prompts, foundation models, Knowledge Bases, Lambda functions, conditions) into a graph that executes in a defined order.

The distinction that matters:

  • Bedrock Flows orchestrates steps you decided in advance. The control flow is the diagram you drew; it is deterministic by design.
  • AgentCore is the runtime/operational platform for autonomous, code-defined agents that decide their own next steps. The control flow emerges from the model's reasoning at run time.
text
  Bedrock Flows                         AgentCore agent
  (you drew the path)                   (the agent picks the path)

  [Input] → [Classify] ─┬─ yes → [KB] ──┐      [Input] → reason → choose tool → act
                        │               ├─→ …          ↑___________________________│
                        └─ no  → [Lambda]┘             (loop until the goal is met)

Because they're different layers, they can be complementary rather than competing. A predetermined pipeline might call an autonomous agent as one of its steps; conversely, an agent might invoke a deterministic flow when a task is best handled as a fixed sequence.

There is no single official side-by-side comparison page for these three products — the layering framing here is an editorial synthesis, while each product's individual definition is sourced from AWS. When you cite specifics, link the product's own page (Flows, the AgentCore docs, the FAQ).

Example

When a fixed pipeline beats an agent

A document-intake workflow — extract fields, validate against a schema, route to the right queue, summarize — has the same steps every time. That's a Flows job: deterministic, auditable, no reasoning needed about what to do next. Reach for an AgentCore agent when the next step genuinely depends on what the model finds (open-ended research, multi-tool problem solving, conversation).

A decision rule: managed, modular, or visual

Map the three products onto three questions, in order. Stop at the first "yes."

  1. Is the task a fixed sequence of known steps?Bedrock Flows. Visual workflow; deterministic; auditable; no autonomous reasoning about what to do next.
  2. Is it an autonomous agent that fits the managed shape — a Bedrock model, action groups, a Knowledge Base, and you want zero infrastructure?Classic Bedrock Agents. Managed simplicity; AWS runs the loop; fastest path to a working managed agent.
  3. Do you need your own framework or a non-Bedrock model, MCP tools, VPC connectivity, A2A, custom orchestration, or production primitives (session isolation, memory, identity, observability) at scale?AgentCore. Modular control; you own the loop, AWS owns the infrastructure.

A compact reference:

You need…ChooseWhy
A deterministic, drawn pipeline of stepsBedrock FlowsVisual orchestration of predetermined steps
A managed agent on a Bedrock model, no opsClassic Bedrock AgentsConfiguration-first; AWS runs the ReAct loop
Bring-your-own framework/model + MCP/VPC/A2AAgentCoreCode-first, modular production infrastructure
To keep an existing managed agent runningStay on classicCoexistence; migration is optional
One managed service (Gateway/Memory/CI) on existing hostingAgentCore, à la carteServices work independently

And remember the meta-rule from the previous section: this is not a one-time platform bet. Because the products coexist, you can pick per workload — a deterministic flow here, a managed agent there, an AgentCore agent for the one that outgrew the managed shape — and revisit the choice as a project's needs change.

Tip

Default to the simplest layer that fits

Don't reach for AgentCore's modular control just because it's the newest. If a fixed pipeline solves it, use Flows; if a managed Bedrock-model agent solves it, use classic Agents. Adopt AgentCore when you hit a real constraint — a non-Bedrock model, MCP tooling, a VPC requirement, A2A, or the need to own the orchestration.

Try it: Classify three workloads and defend your choices

Goal: internalize the decision rule by applying it to real-shaped workloads and grounding your answers in AWS's own framing — without writing any code yet.

  1. Read the primary sources (10 min). Open the AgentCore FAQs and find the sentence about continuing to use Amazon Bedrock Agents. Copy it verbatim into a scratch doc — this is your evidence for the coexistence stance. Then skim the AWS Builder 'managed vs. modular' article and the Bedrock Flows product page so you can cite each product's own definition.

  2. Classify three workloads. For each, write down (a) the product you'd choose, (b) the question in the decision rule that settled it, and (c) the one fact that would flip your answer:

    • W1: An invoice pipeline that always runs the same steps — OCR extract → validate against a schema → route to an approval queue → email a summary.
    • W2: An internal support agent on a Bedrock-hosted Claude model that answers from a Knowledge Base and can file a ticket via one action group; the team explicitly does not want to operate infrastructure.
    • W3: A research agent built in LangGraph that must call your private MCP tools, run inside your VPC, talk to a partner agent over A2A, and scale with per-session isolation.
  3. Write the rejection reasons. For W3, write one sentence explaining why classic Bedrock Agents is not a fit (hint: model hosting + who owns the loop + MCP/VPC/A2A). For W1, write one sentence on why an autonomous AgentCore agent would be over-engineering.

  4. Add the meta-decision. In two sentences, explain to a skeptical teammate why choosing AgentCore for W3 does not mean migrating W2 off classic Bedrock Agents — quote your FAQ sentence from step 1.

  5. Stretch: Sketch (in plain text or boxes-and-arrows) one architecture where Bedrock Flows and an AgentCore agent are complementary — e.g. a deterministic flow that calls an autonomous agent as one of its steps. Note which layer owns the control flow at each point.

Deliverable: a one-page note with three classifications, their rejection reasons, the meta-decision paragraph with the quoted FAQ line, and the complementary-architecture sketch.

Key takeaways

  1. 1Three products share the Bedrock name and get confused: classic Bedrock Agents (managed, configuration-first), AgentCore (modular, code-first infrastructure), and Bedrock Flows (visual workflow). They sit at different layers.
  2. 2Classic Bedrock Agents is fully managed: you configure action groups and Knowledge Bases, and AWS runs the orchestration/ReAct loop — but you're tied to Bedrock-hosted models and AWS's managed loop.
  3. 3AgentCore is modular and code-first: bring your own framework, model, and orchestration via `@app.entrypoint`, and AWS supplies the production infra. Over classic it adds MCP support, VPC connectivity, and A2A.
  4. 4The defining axis is who owns the reasoning loop: AWS owns it in classic Agents (you configure); you own it in AgentCore (AWS owns the infrastructure it runs on).
  5. 5Coexistence, not deprecation — per the FAQ, you can keep using classic Bedrock Agents; AgentCore adds enhanced capabilities (any open-source framework), and migration is optional.
  6. 6Bedrock Flows orchestrates predetermined steps visually; AgentCore agents decide their own steps at run time. Different layers, and they can be complementary.
  7. 7Decision rule: fixed known steps → Flows; managed agent on a Bedrock model with no ops → classic Agents; bring-your-own framework/model + MCP/VPC/A2A or production scale → AgentCore. Default to the simplest layer that fits.

Quiz

Lock in what you learned

Check your understanding

0 / 4 answered

1.A teammate says AgentCore is 'the new version of Bedrock Agents and the old one is going away.' What's the most accurate correction?

2.Your agent must run on a self-hosted Llama model (not a Bedrock-hosted model), use MCP tools, and run inside your VPC. Which option fits, and why?

3.What is the defining structural difference between classic Bedrock Agents and AgentCore?

4.A document-intake task always runs the same fixed steps: extract fields, validate against a schema, route to a queue, and summarize. Which product is the natural fit?

Go deeper

Hand-picked sources to keep learning