The AWS Agentic Landscape

Bedrock Agents, AgentCore, Strands Agents SDK, Amazon Q and Step Functions each solve a different problem — pick by which one you actually have.

AWS offers several things with "agent" in the name, and the exam tests whether you can map a scenario to the right one. They are not competitors; they sit at different layers, and real systems combine them.

Amazon Bedrock Agents — the managed agent

A fully managed agent you configure rather than code. You supply a foundation model, instructions, action groups (Lambda-backed, described by an OpenAPI schema or a function schema), optional knowledge bases, memory and a guardrail. Bedrock runs the orchestration loop, and you invoke it through InvokeAgent. It supports multi-agent collaboration with a supervisor and collaborators, a code interpreter, return of control so your application executes actions itself, and traces for auditing the reasoning. Choose it when you want the shortest path from requirement to working agent and are happy inside the managed orchestration.

Strands Agents SDK — the open-source framework

An open-source, code-first SDK from AWS that takes a model-driven approach: you define a model, a prompt and a set of Python tools, and the SDK runs the agent loop. It supports Bedrock and other model providers, connects to Model Context Protocol servers, and includes multi-agent primitives. Choose it when you want the agent's logic in version control, in tests, and portable — rather than expressed as console configuration.

Amazon Bedrock AgentCore — the runtime and infrastructure

AgentCore is the operational layer for agents built with any framework and any model, including Strands, LangGraph, CrewAI and others. Its services address what production demands rather than what the agent thinks: Runtime for serverless hosting with session isolation and support for long-running sessions; Memory for managed short-term and long-term memory; Identity for agent identity and secure access to third-party services on a user's behalf; Gateway for turning existing APIs and Lambda functions into MCP tools; Browser and Code Interpreter as managed sandboxed tools; and Observability with OpenTelemetry-compatible traces surfaced in CloudWatch. Choose it when you have an agent that works and now need to run it safely at scale.

Amazon Q — the agents you buy

Ready-made assistants rather than building blocks. Amazon Q Developer works inside IDEs, the CLI and the console on coding, debugging and code transformation. Amazon Q Business answers questions over enterprise data with built-in connectors and permission-aware retrieval. Choose Q when the requirement matches an off-the-shelf capability and nobody needs custom orchestration.

AWS Step Functions — deterministic orchestration

Not an agent at all, and that is the point. A state machine gives you explicit branching, retries with backoff, parallelism, error catching, long-running durations and a complete execution history. It has an optimised integration for invoking Bedrock models, and its AWS SDK integrations reach the Bedrock control-plane and AgentCore APIs. Note the gap the exam likes: the streaming agent calls — InvokeAgent, InvokeInlineAgent and InvokeFlow — are on the unsupported list for AWS SDK integrations, so a state machine reaches a Bedrock agent through a Lambda function that drains the event stream. Choose it whenever the sequence is known and auditability matters — and use it as the skeleton around agentic steps.

You have…Reach for
A fixed, auditable sequence of stepsStep Functions (or Bedrock Flows for a visual chain)
A standard coding or enterprise-search needAmazon Q Developer / Amazon Q Business
A custom agent, fastest managed pathAmazon Bedrock Agents
A custom agent as code, portable and testableStrands Agents SDK
Hosting, memory, identity, tools, tracing for any agentAmazon Bedrock AgentCore
Safety controls for any of the aboveAmazon Bedrock Guardrails

Example

Example · shell
# A Strands agent, hosted on Bedrock AgentCore Runtime.
pip install strands-agents bedrock-agentcore bedrock-agentcore-starter-toolkit

# my_agent.py
#   from bedrock_agentcore.runtime import BedrockAgentCoreApp
#   from strands import Agent
#
#   app = BedrockAgentCoreApp()
#   agent = Agent(system_prompt="You are a UK billing support agent.")
#
#   @app.entrypoint
#   def invoke(payload):
#       return agent(payload["prompt"]).message
#
#   app.run()

# Package it, create the execution role and container image, and deploy.
agentcore configure --entrypoint my_agent.py
agentcore launch

# Call the hosted agent.
agentcore invoke '{"prompt": "Why was invoice INV-4471 charged twice?"}'

When to use it

  • A team prototypes in Bedrock Agents to prove value in a fortnight, then rebuilds in Strands once the agent's logic needs unit tests and code review.
  • An existing LangGraph agent is moved onto AgentCore Runtime to get session isolation, managed memory and CloudWatch traces without a rewrite.
  • A regulated insurer orchestrates claims in Step Functions and calls a Bedrock agent only from the exception branch, keeping the audit trail deterministic.

Discussion

  • Be the first to comment on this lesson.