Bedrock Agents and Amazon Q: a builder’s first look
Tool use, action groups, and where managed agents fit versus rolling your own.
I spent a week building the same internal "ops assistant" twice: once with Bedrock Agents and once leaning on Amazon Q. The goal was modest, let an engineer ask "why is the checkout service throwing 5xx" and have the assistant pull CloudWatch metrics, check recent deploys, and summarize. What I learned is that these two products solve overlapping problems from opposite ends, and choosing wrong wastes a lot of time.
This is a builder's first-look, not a benchmark. I care about what you have to wire up yourself versus what AWS hands you.
Bedrock Agents: you own the tools
A Bedrock Agent is the orchestration loop around a foundation model. You give it a set of action groups (functions it can call), optionally a knowledge base for retrieval, and instructions. The agent decides which action to invoke, you execute it, and the agent reasons over the result.
The mental model is identical to tool use anywhere: define the function schema, the agent emits a call, your Lambda runs it. Here is an action group backed by Lambda, defined in an OpenAPI-style schema:
{
"openapi": "3.0.0",
"paths": {
"/metrics/{service}": {
"get": {
"operationId": "getServiceMetrics",
"parameters": [
{ "name": "service", "in": "path", "required": true,
"schema": { "type": "string" } }
],
"responses": {
"200": { "description": "5xx rate and latency for the service" }
}
}
}
}
}
You attach a Lambda as the executor. The agent calls getServiceMetrics, Bedrock invokes your function, and your code talks to CloudWatch. You own every integration, which is the point: full control, full responsibility.
Amazon Q: AWS owns the tools
Amazon Q (specifically Q Developer) comes pre-wired into the AWS ecosystem. Ask it about your account and it already knows how to read CloudWatch, inspect resources, and explain errors without you defining a single action group. For my ops-assistant use case, Q answered "why is the service erroring" out of the box.
The trade is control versus time-to-value. Q is faster to a useful answer inside AWS but you cannot deeply customize its reasoning or point it at arbitrary internal systems. Bedrock Agents is the opposite.
Where each one fits
| Need | Reach for |
|---|---|
| Customer-facing assistant over your own data and APIs | Bedrock Agents |
| Internal AWS troubleshooting and resource Q&A | Amazon Q Developer |
| Custom model choice, prompt control, RAG over private corpus | Bedrock Agents |
| Code suggestions and AWS-aware chat in the IDE | Amazon Q Developer |
The friction I hit with Agents
Two things slowed me down with Bedrock Agents that nobody warns you about:
- Prepare-after-edit. Every change to instructions or action groups requires re-preparing the agent before it takes effect. Forgetting this means testing against a stale version.
- IAM scope. The agent's resource role needs explicit permission to invoke each action Lambda and call the model. A missing
bedrock:InvokeModelon the role surfaces as an opaque failure mid-conversation.
aws bedrock-agent prepare-agent --agent-id ABCDEFGH
# Invoke the prepared alias from your app
aws bedrock-agent-runtime invoke-agent \
--agent-id ABCDEFGH \
--agent-alias-id TSTALIASID \
--session-id eng-session-42 \
--input-text "Why is checkout throwing 5xx?"
My recommendation after a week
If your assistant lives inside AWS and answers AWS questions, start with Amazon Q. You will get a working answer in an afternoon. The moment you need it to reason over your own database, ticketing system, or domain logic, that is the boundary where Bedrock Agents earns its complexity. Trying to bend Q into a custom domain assistant, or building a generic AWS troubleshooter from scratch in Agents, are both the slow path.
Takeaways
- Bedrock Agents gives you full control of tools, model, and RAG, but you wire up every integration yourself.
- Amazon Q is pre-integrated with AWS and is the fastest path to an internal troubleshooting assistant.
- With Agents, remember to re-prepare after every edit and to grant the resource role both
InvokeModeland Lambda-invoke permissions. - Pick by data boundary: AWS-native questions go to Q; your-own-systems questions justify Bedrock Agents.