SAP-C03 AI and ML Integration: Multi-Account Bedrock, AgentCore Agents, SageMaker AI Inference and RAG Design
Integrating AI and ML services into an architecture means choosing and connecting the managed AWS services that call foundation models, host agents and their tools, serve your own models, and ground answers in your data, so they work securely across many accounts. For SAP-C03 Task 1.2 that covers multi-account Amazon Bedrock patterns (a central AI gateway or direct access, SCP model allow-lists, private endpoints and cross-Region inference), agent architectures on Amazon Bedrock AgentCore (Runtime, Gateway, Code Interpreter, Browser and Memory), SageMaker AI inference choices and safe model deployments, and RAG design with Amazon Bedrock Knowledge Bases, from parsing, chunking and vector store selection to retrieval tuning, tenant isolation and structured data.
On this page10 sections
- Which AWS AI building block fits which architecture need?
- Multi-account generative AI: central AI gateway or direct access?
- How do you control which foundation models can be invoked across an organization?
- How do applications reach Bedrock privately, and how is throughput raised?
- Where should an AI agent run? AgentCore Runtime and its networking
- How do agents get tools, memory and knowledge?
- Which SageMaker AI inference option fits the workload?
- How do you update a model on a live endpoint safely?
- How do you design RAG ingestion: data sources, parsing, chunking and vector stores?
- How do you tune retrieval, isolate tenants and query structured data?
- Choose between a central AI gateway and direct per-account Amazon Bedrock access, and enforce an organization-wide model allow-list with SCPs that also work with cross-Region inference profiles
- Give private workloads access to Bedrock and knowledge bases through the right interface endpoints, and raise throughput with geographic or global cross-Region inference
- Host framework-agnostic agents on AgentCore Runtime, connect them to private resources, and equip them with Gateway tools, Code Interpreter, Browser, Memory and knowledge bases
- Select SageMaker AI real-time, serverless, asynchronous or batch transform inference, and host many models with multi-model endpoints, inference components or multi-container endpoints
- Release new model versions safely with blue/green canary or linear traffic shifting, alarm-based auto-rollback and shadow tests
- Design knowledge base ingestion: incremental and cross-account sync, advanced parsing, chunking strategies and vector store selection including S3 Vectors and GraphRAG
- Tune retrieval (hybrid search, reranking, query decomposition), isolate tenants with server-side metadata filters, and answer structured-data questions with a Redshift query engine
Which AWS AI building block fits which architecture need?
Four managed building blocks cover almost every AI integration a Professional-level architect designs, and the first decision is which one owns the job: Amazon Bedrock when the application calls a managed foundation model, Amazon Bedrock AgentCore when an agent needs hosting, tools, memory and secure access to systems, Amazon SageMaker AI endpoints when you serve your own trained or open-weight model, and Amazon Bedrock Knowledge Bases when answers must be grounded in your documents or data (retrieval-augmented generation, RAG).
| Need in the scenario | Building block | Typical deciding detail |
|---|---|---|
| Call a foundation model from an application, across many accounts | Amazon Bedrock (Converse / InvokeModel) | Model allow-list, quotas, private access, data residency |
| Run an agent built with any framework, for minutes or hours | AgentCore Runtime | Session isolation, long tasks, no servers or clusters |
| Give an agent tools: existing APIs, code execution, web pages, memory | AgentCore Gateway, Code Interpreter, Browser, Memory | No MCP server code, no self-built sandbox or pipeline |
| Serve your own model | SageMaker AI real-time, serverless, asynchronous or batch transform | Payload size, processing time, traffic shape, who waits for the answer |
| Ground answers in documents or tables | Bedrock Knowledge Bases with a vector store or structured data store | Parsing, chunking, vector store, retrieval tuning, tenant isolation |
The exam keeps this task at the architecture level. Model training, fine-tuning and data-science workflows are out of scope. Related decisions live in other tasks: Amazon Bedrock Guardrails and AgentCore Identity (Task 2.5), model invocation logging (Task 2.3), AI cost levers such as batch inference and prompt caching (Task 3.1), token chargeback with application inference profiles (Task 3.3), Bedrock evaluations and AI monitoring (Domain 5). This lesson names them only where they are the wrong answer to an architecture question.
Multi-account generative AI: central AI gateway or direct access?
There are two sound multi-account patterns for Amazon Bedrock, and the requirements decide between them: a central AI gateway when one team must be the single enforcement point for quotas, model choice and usage reporting, or direct access from each workload account when units must be isolated from each other's spikes, pay for their own usage, and nobody wants to run a shared service.
| Central AI gateway account | Direct access per workload account | |
|---|---|---|
| Shape | A platform account exposes an API (for example API Gateway with a usage plan per team, backed by Lambda); only the platform role calls Bedrock | Each account's applications call Bedrock with their own roles |
| Per-team quotas and throttling | Yes: usage plans and API keys, or logic in the gateway | Per account: Bedrock on-demand quotas apply per account and per Region |
| Noisy-neighbour isolation | Weak: every team shares the platform account's Bedrock quotas | Strong: one unit's spike cannot throttle another account |
| Billing | Lands in the platform account; chargeback needs extra work | Lands in each unit's accounts naturally |
| Operational cost | You build and run the proxy | Nothing shared to run |
| Model allow-list | Enforced in the gateway, plus an SCP so nobody bypasses it | Enforced by an SCP on the OUs |
Making the gateway the only path. A gateway enforces nothing if a workload-account administrator can call Bedrock directly. Pair it with an SCP on the workload OUs that denies the Bedrock inference actions, so the controls hold even for account administrators. Detective measures (central model invocation logging, AWS Budgets alerts) report usage after it happens; they do not enforce a quota or an allow-list. Giving each workload account its own IAM role with Bedrock permissions, or its own inference profile, simply recreates direct access.
Reaching the gateway privately. When workload VPCs have no internet access, overlapping CIDR ranges, or a ban on VPC peering, use AWS PrivateLink rather than routing: make the gateway a private REST API, create an execute-api interface VPC endpoint in each consuming VPC, and allow those endpoint IDs in the API's resource policy (condition on aws:SourceVpce). PrivateLink exposes a service, not a network, so it needs no routes between VPCs and overlapping CIDRs do not matter. Routing-based connectivity requires non-overlapping address space, and any endpoint that points a workload directly at Bedrock is another path around the gateway, not a way to reach it.
How do you control which foundation models can be invoked across an organization?
Use a service control policy that denies the Bedrock inference actions (bedrock:InvokeModel and bedrock:InvokeModelWithResponseStream, which also govern the Converse and ConverseStream APIs) on every model resource except the approved model ARNs. Attached to the root or to the relevant OUs, an SCP applies to every current and future member account from creation and constrains account administrators too, with no per-account work.
Why other controls fall short:
- Denying
aws-marketplace:Subscribeis not enough. Amazon Bedrock subscribes to a Marketplace-listed model automatically on its first invocation, so a Subscribe deny does not stop that first call, and many models (for example Amazon's own) have no Marketplace product ID to deny at all. Block inference, not subscription. - Permissions boundaries attach per principal in each account. They need work in every new account, and an administrator can create a role without one.
- CloudTrail plus EventBridge revocation is detective: the unapproved inference has already run.
SCPs and cross-Region inference. When an application invokes an inference profile, Bedrock authorizes the request in the destination Region it routes to, and the identity policy must allow both the profile and the underlying model there. A common Region-restricting SCP (deny when aws:RequestedRegion is not the home Region) therefore starts producing AccessDeniedException on many requests. The fix depends on the profile type: for a geographic profile, the SCP must allow the Bedrock invoke actions in every destination Region listed in the profile; for a global profile, AWS documents allowing aws:RequestedRegion with the value unspecified. The general rule: an explicit deny in an SCP overrides any allow lower in the hierarchy, so the fix always belongs in the SCP itself. Cross-Region inference can use its destination Regions without you enabling them first.
How do applications reach Bedrock privately, and how is throughput raised?
Workloads in private subnets reach Amazon Bedrock through interface VPC endpoints (AWS PrivateLink), one per API they call, with private DNS enabled so the SDK resolves the normal endpoint name to private addresses. No NAT gateway or internet gateway is needed. Bedrock has no gateway endpoint; gateway endpoints exist only for Amazon S3 and DynamoDB.
| Endpoint service | Plane | Serves |
|---|---|---|
bedrock | Control | Managing models, model access, guardrails, Provisioned Throughput |
bedrock-runtime | Data | InvokeModel, InvokeModelWithResponseStream, Converse, ConverseStream |
bedrock-agent | Control | Creating and managing agents, knowledge bases and data sources, starting ingestion jobs |
bedrock-agent-runtime | Data | Retrieve, RetrieveAndGenerate, InvokeAgent |
An application that calls a model and queries a knowledge base therefore needs both bedrock-runtime and bedrock-agent-runtime; the control-plane endpoints are for configuration tools, not runtime traffic.
Raising on-demand throughput. When on-demand requests are throttled at peaks, cross-Region inference spreads them across several Regions with nothing more than a change of model identifier to an inference profile ID, and no capacity commitment.
- A geographic profile (for example US, EU or APAC) keeps processing inside that geography. It is the choice when data residency rules apply.
- A global profile can route to any supported commercial Region worldwide. It offers the most headroom, and AWS prices it below geographic routing, so it suits workloads with no residency obligation.
The alternatives fail on stated constraints: Provisioned Throughput buys dedicated capacity but requires a term commitment and is purchased in one account; batch inference is cheaper per token but asynchronous, so it cannot answer users in real time; deploying a second copy of the application in another Region is a far larger change than switching to a profile.
Where should an AI agent run? AgentCore Runtime and its networking
Amazon Bedrock AgentCore Runtime is the managed host for agents and MCP servers: you deploy existing agent code built with any framework (LangGraph, Strands Agents, CrewAI and others) and any model, without managing servers or container clusters. Two properties decide most questions: sessions can run for up to 8 hours, and each session runs in its own microVM, which is terminated and its memory sanitized when the session ends, so one client's data is isolated from another's at the compute level.
| Hosting option for a multi-hour agent | Trade-off |
|---|---|
| AgentCore Runtime | Existing code, long sessions, per-session microVM isolation, nothing to operate |
| AWS Lambda | An invocation lasts at most 15 minutes |
| Orchestrated short functions (for example Step Functions) | Workflows can run for hours, but a free-form agent loop has to be re-expressed as fixed states |
| Self-managed containers (ECS, EKS) | Long-running and can be isolated, but you own the cluster, images, networking, scaling and session tracking |
Because sessions are deliberately ephemeral, a longer session is never a substitute for durable memory (see AgentCore Memory below).
Networking. A runtime in the default public network mode has no presence in your VPC. To call private resources, such as an API behind an internal Application Load Balancer, configure VPC network mode with private subnets and a security group: AgentCore creates elastic network interfaces there, and the target's security group must allow traffic from the runtime's security group. Keep the direction straight:
- VPC network mode = outbound from the agent into your VPC.
- The AgentCore interface VPC endpoint = inbound, letting clients in your VPC invoke the runtime privately. It gives the agent no path to your resources.
- A NAT gateway only gives private subnets outbound internet access, and making the ALB internet-facing breaks the requirement that it stays private.
How do agents get tools, memory and knowledge?
An agent is only as useful as its tools, and AgentCore supplies managed versions of each kind: Gateway for existing APIs and functions, Code Interpreter for running code, Browser for websites without APIs, Memory for context across turns and sessions, and a Bedrock knowledge base as the retrieval tool for documents.
AgentCore Gateway
Gateway turns existing capabilities into Model Context Protocol (MCP) tools behind one endpoint, with no MCP server code to write or host. Targets include OpenAPI and Smithy specifications, AWS Lambda functions and existing MCP servers. It handles inbound authentication (for example OAuth tokens from your identity provider) and outbound credentials to the targets, so agents built with different frameworks share the same tools. For large catalogs (hundreds of tools), create the gateway with semantic search enabled: agents then call a built-in search tool (x_amz_bedrock_agentcore_search) that returns only the tools relevant to the task, instead of listing every definition and exhausting their context. Semantic search is chosen when the gateway is created.
Near-twins that fail: hosting a hand-written MCP server on Runtime works but is the code you wanted to avoid; Amazon API Gateway gives a REST front door but does not speak MCP; Bedrock Agents action groups serve only that one Bedrock agent; a knowledge base of tool descriptions is a separate catalog that drifts from the real targets.
Built-in tools and memory
| Need | Use | Not |
|---|---|---|
| Run model-generated Python against data in an isolated environment | Code Interpreter (managed sandbox; sandbox network mode by default, with public and VPC modes when the code needs network access) | A Lambda function in your VPC: untrusted code with your permissions, and you build the sandbox |
| Log in and complete forms on websites that have no API | Browser (managed, isolated cloud browser) | Gateway (nothing to wrap) or a web-crawler data source (reads, cannot act) |
| Keep the turns of the current conversation | Memory, short-term | - |
| Recall preferences and facts in later sessions | Memory, long-term, with strategies that extract preferences, facts or summaries | Longer sessions, or a knowledge base over exported transcripts |
| Answer from many changing documents with citations | A Bedrock knowledge base as a retrieval tool | Code Interpreter scanning files per question, or Memory (not a document index) |
A typical agent composes them: actions (check an order) through a Gateway target, knowledge (policy documents with source attributions) through a knowledge base. Agent authentication and credential handling (AgentCore Identity) and content safety (Guardrails) are covered in Task 2.5.
Which SageMaker AI inference option fits the workload?
Choose the SageMaker AI inference option from four facts in the scenario: payload size, processing time, traffic pattern (steady, bursty, idle) and whether a caller waits for the answer.
| Option | Response | Limits to remember | Cost and scaling | Fits |
|---|---|---|---|---|
| Real-time endpoint | Synchronous | Payloads up to 25 MB, response within 60 seconds | Instances run continuously; auto scaling policies you define | Steady, latency-sensitive traffic; GPUs |
| Serverless Inference | Synchronous | Payloads up to 4 MB, 60 seconds, CPU only (no GPUs), memory size and max concurrency set by you | Pay per use, scales with traffic, no policies, cold starts after idle | Intermittent or bursty small requests |
| Asynchronous Inference | Queued; result to S3 with SNS notification | Payloads up to 1 GB (input from S3), processing up to 1 hour | Built-in queue; can scale to zero instances | Large inputs, long processing, sporadic arrivals, GPUs |
| Batch transform | Offline job | Whole datasets in S3 | Compute exists only while the job runs | Scheduled scoring of large datasets |
Read the limits as hard boundaries: a request that exceeds an option's payload or time limit, or needs hardware it does not offer, rules that option out however attractive its pricing. Equally, a design where someone waits for the answer needs a synchronous option, and work with no waiting caller is cheaper offline or queued. Prefer the option that already provides a capability (queueing, scale to zero, job-based compute) over building it around a different one.
Hosting many models on shared infrastructure
| Option | How it shares | Fits |
|---|---|---|
| Multi-model endpoint | One shared serving container; models stored in S3 are loaded on first invocation, cached while hot and unloaded when idle | Thousands of small models of the same framework with skewed traffic, where an occasional cold-start delay is acceptable (for example one model per tenant) |
| Inference components | Each model is a component on a shared endpoint with its own container, its own reserved CPU, accelerators and memory, and its own copy count and scaling policy | A few large models (often LLMs with different serving containers) that must share GPU instances yet scale independently |
| Multi-container endpoint | A small fixed set of different containers (up to 15) on every instance, invoked directly or as a serial pipeline; scales as one unit | A handful of models built with different frameworks |
One endpoint per model is the expensive baseline these options replace; separate serverless endpoints per tenant remove idle cost but still leave thousands of endpoints to operate.
How do you update a model on a live endpoint safely?
Update a SageMaker AI real-time endpoint with a blue/green deployment guardrail: SageMaker AI provisions a new (green) fleet, shifts traffic to it, watches Amazon CloudWatch alarms during a baking period, and automatically rolls all traffic back to the old (blue) fleet if an alarm fires. There is no downtime and no engineer in the loop.
| Traffic-shifting mode | What moves | Use when |
|---|---|---|
| All at once | 100% in one step, then baking | Exposure of all traffic to a regression is acceptable |
| Canary | A small slice first, bake, then the rest | A regression may affect only a small share of requests |
| Linear | Equal steps, baking after each | Traffic must move in several measured steps |
Testing before any customer sees the new model. A shadow test deploys the candidate as a shadow variant that receives a copy of live production requests on its own instances; its responses are captured for comparison (latency, errors, predictions) and never returned to callers. That differs from a second production variant with a traffic weight, which answers real customers, and from replaying captured requests through batch transform, which checks predictions but not behaviour under live load on the endpoint's instance type.
A common two-phase design is a shadow test first, then a blue/green release with linear or canary shifting and alarm-based auto-rollback. Weighted production variants that an engineer adjusts by hand, or separate endpoints behind Route 53 weighted records, lack automatic rollback (and SageMaker AI endpoints are invoked through the SageMaker runtime API, not by DNS name).
How do you design RAG ingestion: data sources, parsing, chunking and vector stores?
RAG ingestion is the pipeline that turns source content into searchable chunks: a data source is synced, each document is parsed into text, split into chunks, embedded, and written with its metadata to a vector store. Amazon Bedrock Knowledge Bases runs all of it as a managed service, so most answers keep you inside it rather than building a custom embedding pipeline that bypasses its chunking and metadata handling.
Data sources and keeping them current
- Incremental sync. Each
StartIngestionJobon an existing S3 data source processes only objects added, modified or deleted since the previous sync. Running it on a schedule (EventBridge Scheduler and a small Lambda function) or on events keeps the index fresh at a cost proportional to change. Deleting and recreating the data source throws the sync state away and re-embeds everything. - Cross-account S3. A knowledge base can ingest from a bucket in another account in the same Region without copying: the data source names the bucket and its owner account ID, the knowledge base service role has identity permissions, and the owning account grants it in the bucket policy (
s3:ListBucket,s3:GetObject) and, for SSE-KMS with a customer managed key, in the key policy (kms:Decrypt). The knowledge base does not assume a role in the other account. - Data deletion policy. With the default (delete) policy, deleting a data source removes its vectors from the store.
Parsing
The default parser extracts text. When answers live in tables, diagrams or scanned pages, choose advanced parsing with a foundation model (or Amazon Bedrock Data Automation) so that content is extracted at all. Chunking and retrieval settings cannot surface content that parsing never extracted.
Chunking
| Strategy | Behaviour | Fits |
|---|---|---|
| Default | Chunks of about 300 tokens on sentence boundaries | General text |
| Fixed-size | Your token size and overlap percentage | Uniform documents; tune precision against context |
| Hierarchical | Small child chunks are searched; the matching child is replaced by its larger parent chunk in the results | Precise matching that still needs surrounding context (contracts, manuals) |
| Semantic | Splits where meaning changes (breakpoint threshold, buffer size) | Documents whose topics shift unevenly |
| None | Each file is one chunk | Content you pre-split yourself |
Small chunks match precisely but carry little context; large chunks carry context but match poorly. Hierarchical chunking is the strategy that separates the two. The chunking strategy cannot be changed after a data source is created. To switch without downtime, create a second data source on the same content with the new strategy, sync it while the old chunks keep answering, then delete the original data source so its chunks are removed. Chunking is never a query-time setting.
Choosing the vector store
| Vector store | Choose it for |
|---|---|
| Amazon S3 Vectors | Very large indexes (billions of vectors) queried infrequently, at the lowest storage and query cost with sub-second latency and nothing to provision |
| Amazon OpenSearch Serverless | Low-latency, frequently queried search; supports hybrid search |
| Amazon Aurora PostgreSQL (pgvector) | Teams already on PostgreSQL; supports hybrid search; the cluster must be in the knowledge base's account |
| MongoDB Atlas (also Pinecone, Redis Enterprise Cloud) | An existing partner vector database; MongoDB supports hybrid search |
| Amazon Neptune Analytics | GraphRAG: the knowledge base builds a graph of entities and relationships so retrieval can follow connections across documents (multi-hop questions) |
Capacity-based stores (OpenSearch Serverless capacity units, Aurora capacity ranges, Neptune Analytics memory-optimized units) cost more than object storage for a rarely queried, billion-scale index. When each tenant's KMS key must protect its embeddings with independent revocation, a shared vector store under one key cannot meet it: the silo has to extend to a knowledge base and vector store per tenant, both under that tenant's key.
How do you tune retrieval, isolate tenants and query structured data?
Retrieval quality and safety are mostly query-time configuration of the knowledge base APIs, and each symptom maps to one feature.
| Symptom | Query-time fix |
|---|---|
| Exact identifiers (part numbers, error codes) return similar-looking documents | Hybrid search (overrideSearchType = HYBRID): vector similarity plus text search over the raw chunks. Supported on OpenSearch Serverless, Aurora/RDS PostgreSQL and MongoDB Atlas |
| A multi-part question ("compare A and B") retrieves only one part | Query decomposition in the RetrieveAndGenerate orchestration configuration splits it into sub-queries |
| The best chunk is ranked too low and falls out of context | A reranking model rescores retrieved chunks against the query |
| Results should be narrowed by attributes the user mentions | Metadata filters; implicit filtering lets a model build the filter from the query (a relevance aid only) |
Match the fix to the stage that is failing: if the right content is retrieved but ranked badly, change ranking; if only part of the question is searched, change how the query is formed; if the content was never extracted, change parsing. Settings that act on a different stage, such as returning more results or changing generation parameters, leave the underlying retrieval problem in place.
Retrieve or RetrieveAndGenerate. RetrieveAndGenerate retrieves and then generates with an Amazon Bedrock model or inference profile, returning citations. Retrieve stops after retrieval and returns chunks, scores, source locations and metadata, so the application can prompt any model it chooses, including one hosted on a SageMaker AI endpoint, while still using the managed query embedding and vector search.
Tenant isolation in a pooled knowledge base. To serve many tenants from one knowledge base, attach a tenant attribute to every document with a <file>.metadata.json file next to it in S3 and sync, then have the backend add an equals filter on that attribute, taken from the authenticated identity, to every Retrieve request. The filter runs inside the vector search, so nothing a user types can widen it. Implicit filtering, guardrail denied topics and prompt-template instructions all depend on the model or the prompt, so a crafted prompt can get around them; none is an isolation control. When tenants require their own encryption keys over embeddings, move from this pooled model to a knowledge base per tenant (previous section).
Structured data. Questions that need exact aggregates ("net sales by region last quarter") need SQL, not similarity search. A knowledge base with a structured data store converts the natural-language question into SQL, runs it on an Amazon Redshift query engine (provisioned or Serverless) and answers from the result. The data can sit in Redshift or in S3 tables registered in the AWS Glue Data Catalog, queried in place. Amazon Athena is not a supported query engine. When AWS Lake Formation governs the catalog tables, the knowledge base service role needs Lake Formation Describe and Select grants plus the IAM permission lakeformation:GetDataAccess; Glue Data Catalog stores authenticate with IAM, and Secrets Manager credentials apply only to Redshift databases. Vectorizing exported tables loses freshness and cannot compute totals, and an agent action that sends questions to the Redshift Data API still needs your own text-to-SQL code.
Tip. SAP-C03 tests this task through multi-account architecture scenarios in which a business unit or platform team has an AI requirement and a set of constraints: private networking with no internet path, data residency, organization-wide governance, minimal operational overhead or code change, lowest cost, or isolation between tenants. Expect to decide how accounts reach Amazon Bedrock and how model use is governed across an organization (including with cross-Region inference), which endpoints private workloads need, where an agent runs and how it reaches private systems and gets tools, memory and knowledge through AgentCore, which SageMaker AI inference or multi-model hosting option fits a workload and how new model versions are released safely, and how a Bedrock knowledge base is designed: data source access, parsing, chunking, vector store, retrieval features, tenant isolation and structured data. Both multiple-choice and multiple-response (Select TWO or more) formats appear, and the best answer meets every stated constraint, not just the headline requirement.
- A central AI gateway gives one place for per-team quotas, the model allow-list and usage reporting, but only an SCP denying direct Bedrock inference makes it the sole path; direct per-account access isolates quotas and billing with nothing shared to run.
- Govern models by denying bedrock:InvokeModel (and the streaming action) on unapproved model ARNs in an SCP; denying aws-marketplace:Subscribe does not stop the first, auto-subscribing invocation.
- With a Region-restricting SCP, geographic inference profiles need every destination Region allowed; global profiles need aws:RequestedRegion = unspecified and can process data outside the geography.
- Model calls use the bedrock-runtime endpoint and knowledge base queries use bedrock-agent-runtime; bedrock and bedrock-agent are control-plane endpoints.
- AgentCore Runtime runs existing agent code for up to 8 hours per session in an isolated microVM; VPC network mode is how the agent reaches private resources, while the AgentCore interface endpoint is for inbound calls.
- Gateway turns OpenAPI, Smithy and Lambda targets into MCP tools with managed inbound and outbound auth; semantic tool search is enabled at gateway creation.
- Code Interpreter runs code in a sandbox, Browser acts on websites without APIs, and AgentCore long-term memory extracts facts and preferences that persist across sessions.
- SageMaker AI: real-time for steady synchronous traffic, serverless for bursty small CPU requests, asynchronous for large or long requests with scale to zero, batch transform for datasets; multi-model endpoints for many same-framework models, inference components for per-model resources and scaling.
- Chunking is fixed once a data source exists, so change it with a new data source, sync, then delete the old one; hierarchical chunking searches small chunks and returns their larger parents.
- Tenant isolation in a shared knowledge base comes from metadata on every document plus a backend-set filter from the authenticated identity, never from implicit filtering, guardrails or prompt instructions.
Frequently asked questions
Should Amazon Bedrock be accessed through a central AI gateway account or directly from each account?
Use a central AI gateway when one platform team must enforce per-team quotas, a single model allow-list and central usage reporting, and pair it with an SCP that denies direct Bedrock inference in workload accounts so nobody can bypass it. Use direct per-account access when business units must not throttle each other and should pay for their own usage, because Bedrock on-demand quotas apply per account and Region; an SCP still enforces the model allow-list without a shared proxy.
Why doesn't denying aws-marketplace:Subscribe stop teams from using unapproved Bedrock models?
Amazon Bedrock subscribes to Marketplace-listed models automatically on the first invocation, so a deny on aws-marketplace:Subscribe does not block that first call, and many models, such as Amazon's own, have no Marketplace product ID at all. The reliable control is an SCP that denies bedrock:InvokeModel and bedrock:InvokeModelWithResponseStream on every model ARN except the approved ones.
What is the difference between geographic and global cross-Region inference profiles in Amazon Bedrock?
Both raise on-demand throughput by routing requests across several Regions without a capacity commitment. A geographic profile, such as the EU or US profile, keeps processing within that geography, which suits data residency rules. A global profile can route to any supported commercial Region and is priced below geographic routing, so it suits workloads with no residency obligation. Region-restricting SCPs must allow every destination Region of a geographic profile, or allow aws:RequestedRegion = unspecified for a global profile.
Which VPC endpoints does a private application need to call Bedrock models and query a knowledge base?
It needs two interface VPC endpoints with private DNS: bedrock-runtime for InvokeModel and Converse, and bedrock-agent-runtime for Retrieve and RetrieveAndGenerate. The bedrock and bedrock-agent endpoints serve control-plane configuration, and Bedrock has no gateway endpoint; gateway endpoints exist only for Amazon S3 and DynamoDB.
When should an agent run on Amazon Bedrock AgentCore Runtime instead of AWS Lambda?
Choose AgentCore Runtime when an agent's tasks run longer than Lambda's 15-minute limit, when each session must be isolated at the compute level, or when you want to deploy existing framework code such as LangGraph or Strands Agents with minimal changes. Runtime sessions last up to 8 hours and each runs in its own microVM that is sanitized when the session ends.
When should I use a SageMaker AI multi-model endpoint instead of inference components?
Use a multi-model endpoint for many small models that share one framework container and have skewed traffic, such as one model per tenant, where loading a rarely used model from S3 on demand is an acceptable delay. Use inference components when a few models, possibly with different containers, must share instances while each gets a reserved share of accelerators and memory and scales its own copies independently.
Can I change the chunking strategy of an existing Amazon Bedrock knowledge base data source?
No. The chunking strategy is set when a data source is created and cannot be changed afterwards. To switch strategies without interrupting queries, create a new data source on the same content with the new strategy, sync it, and then delete the original data source; with the default deletion policy its old chunks are removed from the vector store.
How do you stop one tenant from retrieving another tenant's documents in a shared Bedrock knowledge base?
Attach a tenant identifier to every document through a .metadata.json file and sync, then have the backend add an equals filter on that attribute, taken from the authenticated caller's identity, to every Retrieve or RetrieveAndGenerate request. The filter is applied inside the vector search, so prompts cannot change it. Implicit filtering, guardrails and prompt instructions depend on the model and are not isolation controls.
Source
This lesson covers the "Architecture Design and Implementation Built for the Cloud" domain of the official SAP-C03 exam guide. Vendors revise their guides — check the source for the current version.
- AWS Certified Solutions Architect – Professional (SAP-C03) exam guide — Amazon Web Services
Sign up free to mark lessons complete, bookmark topics and track your exam readiness.