Most teams solve the “how do I keep my agent from reading everything?” problem with prompt engineering. AWS just published a concrete implementation pattern that uses infrastructure instead: S3 access points as knowledge boundaries.
The pattern wires storage-layer permissions directly into agent knowledge scope. An S3 access point exposes only an approved folder to the QuickSight knowledge base. A custom skill drafts cited weekly reports and Slack summaries. A human review gate sits between draft and production channels.
This is not a new product announcement. It is a reference architecture for governed agent workflows using existing AWS primitives.
The Knowledge Boundary Problem
Agents need context. Knowledge bases provide it. The risk is scope creep: an agent trained on Q1 financials suddenly has access to Q2 drafts, unreleased product specs, or HR data.
Traditional solutions:
- Prompt engineering: “Only use approved data.” Fails when the agent has access to everything.
- Bucket policies: Brittle. Changing permissions requires infrastructure updates that touch every consumer.
- IAM roles per agent: Works, but multiplies identity management overhead.
S3 access points decouple bucket permissions from consumer access. You create a named endpoint that exposes a subset of a bucket. The agent sees only what the access point allows. The bucket policy stays unchanged.
Architecture: Folder-Scoped Knowledge Base
The AWS pattern uses Amazon FSx for NetApp ONTAP as the source file system. Weekly reports land in a governed folder. An S3 access point exposes that folder to QuickSight Desktop.
Flow:
- Reports are written to FSx ONTAP (on-prem or cloud).
- FSx syncs the approved folder to S3.
- An S3 access point restricts visibility to that folder.
- QuickSight Desktop connects to the access point, not the bucket.
- The agent knowledge base indexes only the exposed folder.
- A custom skill drafts reports and Slack summaries.
- Human review approves or rejects before publication.
Key components:
| Component | Role | Governance Mechanism |
|---|---|---|
| FSx for NetApp ONTAP | Source file system | Folder-level permissions |
| S3 access point | Knowledge boundary | Exposes single folder to agent |
| QuickSight Desktop | Agent runtime | Connects via access point |
| Custom skill | Report generator | Drafts with citations |
| Human review gate | Approval workflow | Blocks unapproved content |
S3 Access Point as Knowledge Scope
An S3 access point is a named network endpoint attached to a bucket. It has its own policy, independent of the bucket policy.
Why this matters for agents:
- The agent’s IAM role grants access to the access point, not the bucket.
- The access point policy restricts access to a prefix (folder).
- Changing the folder exposed to the agent requires updating the access point policy, not the bucket policy or agent code.
Example access point policy:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:role/QuickSightAgentRole"
},
"Action": ["s3:GetObject", "s3:ListBucket"],
"Resource": [
"arn:aws:s3:us-east-1:123456789012:accesspoint/approved-reports/object/weekly-reports/*",
"arn:aws:s3:us-east-1:123456789012:accesspoint/approved-reports"
]
}
]
}
The agent role sees only weekly-reports/*. Other folders in the bucket remain invisible.
Human Review Gate: Blocking vs. Async
The AWS pattern includes a human review step before reports reach Slack. The implementation details are sparse, but the architecture suggests two options:
Blocking queue:
- Agent writes draft to a review bucket.
- A Lambda function triggers on new objects.
- Review UI (QuickSight dashboard or custom app) presents the draft.
- Approval writes the report to a production bucket.
- A second Lambda posts to Slack.
Async approval API:
- Agent writes draft and calls an approval API.
- API returns a ticket ID.
- Human reviews in a separate UI.
- Approval triggers a workflow (Step Functions) that publishes to Slack.
The blocking queue is simpler. The async API decouples review from publication, allowing batch approvals or scheduled releases.
Failure modes:
- Approval bottleneck: If review is manual, drafts pile up. Mitigation: time-based auto-approval for low-risk reports.
- Stale drafts: If data changes between draft and approval, the report is outdated. Mitigation: re-run the agent on approval, not on draft.
- Approval bypass: If the agent has direct Slack API access, it can skip review. Mitigation: agent role has no Slack permissions. Only the approval workflow does.
Version Control for Access Points
Access points are infrastructure, not code. Changing which folders are exposed to which agents requires updating access point policies. This creates a version control problem.
Options:
- Terraform or CloudFormation: Define access points as code. Changes go through pull requests and CI/CD.
- AWS Config rules: Detect drift when access point policies change outside of IaC.
- Tagging conventions: Tag access points with agent names and approval dates. Audit with AWS Resource Groups.
The AWS pattern does not specify a version control strategy. For production use, treat access point policies as critical infrastructure. Store them in Git. Require approval for changes.
Observability: What Did the Agent Read?
S3 access logs show which objects the agent accessed. CloudTrail logs show access point policy changes. QuickSight Desktop logs show knowledge base queries.
Useful metrics:
- Objects read per agent invocation (detect scope creep).
- Access point policy change frequency (detect configuration drift).
- Time between draft and approval (detect review bottlenecks).
- Approval rejection rate (detect agent quality issues).
Missing from the AWS pattern:
- Citation validation: Does the agent cite sources it actually read?
- Knowledge base staleness: How old is the indexed data?
- Agent hallucination detection: Does the draft contain claims not supported by the knowledge base?
These require custom instrumentation. QuickSight Desktop does not expose citation metadata by default.
Deployment Shape
The AWS pattern assumes:
- FSx ONTAP is already deployed (on-prem or cloud).
- S3 bucket exists for synced reports.
- QuickSight Desktop is installed on a workstation or EC2 instance.
- Custom skill is written in Python or Node.js.
Deployment steps:
- Create S3 access point for the approved folder.
- Configure FSx ONTAP to sync folder to S3.
- Create IAM role for QuickSight Desktop with access point permissions.
- Configure QuickSight Desktop to use the access point as a data source.
- Build knowledge base from the access point.
- Write custom skill to draft reports.
- Deploy approval workflow (Lambda + Step Functions or custom API).
- Connect approval workflow to Slack.
Cost considerations:
- S3 access points: $0.005 per GB processed (same as S3 GET requests).
- FSx ONTAP: Starts at $0.065 per GB-month.
- QuickSight Desktop: Included with QuickSight Enterprise.
- Lambda + Step Functions: Pay per invocation.
For a weekly reporting workflow with 100 MB of data, expect $5-10/month in S3 and Lambda costs. FSx ONTAP is the largest expense.
When to Use This Pattern
Good fit:
- You have structured reports in a file system (FSx, EFS, or on-prem NAS).
- You need folder-level knowledge boundaries for multiple agents.
- You want infrastructure-enforced governance, not prompt-based.
- You already use QuickSight for BI.
Poor fit:
- Your data is in a database, not files. Use RLS (row-level security) instead.
- You need real-time agent responses. FSx sync and knowledge base indexing add latency.
- You have one agent and one data source. S3 access points add complexity without benefit.
- You need sub-folder or object-level permissions. Access points work at the prefix level.
Technical Verdict
S3 access points solve a real problem: scoping agent knowledge bases without rewriting bucket policies or multiplying IAM roles. The AWS pattern is production-ready for weekly reporting workflows with human review gates.
Use it when:
- You need multiple agents with different knowledge scopes.
- Your data lives in files, not databases.
- You want infrastructure-layer governance, not prompt engineering.
Avoid it when:
- Your data is in RDS, DynamoDB, or Redshift. Use database-native access controls.
- You need real-time agent responses. File sync and indexing add seconds to minutes of latency.
- You have a single agent with a single data source. The access point abstraction is unnecessary overhead.
The missing piece is citation validation. The pattern assumes the agent cites sources correctly. For high-stakes reports, add a validation step that checks citations against S3 access logs.