/storage_letter.

S3 Bucket Access Points for Large Shared Datasets

Replace unwieldy bucket policies with scoped access points, one per team or application.

Reporter · · 10 min read
Cover illustration for “S3 Bucket Access Points for Large Shared Datasets”
S3 Bucket Fundamentals · August 6, 2026 · 10 min read · 2,221 words

If you've ever been the person who owns a large shared S3 bucket and also owns the bucket policy that controls who gets into it, you already know the problem. What starts as a clean, readable JSON document turns into a sprawling wall of principals, conditions, and prefixes that nobody fully understands anymore. S3 Access Points exist to fix that specific situation, and understanding how they work mechanically tells you exactly when to reach for them and when to leave them alone.

The starting condition is almost always the same. One large bucket. Many consumers. Analytics teams, ML pipelines, downstream applications, cross-account partners. The bucket policy is supposed to handle all of it through a single document that encodes every principal, every prefix, every condition. In practice, that document balloons. A change made for one application can silently break another. Auditing whether any given team actually has the access they should have requires parsing the whole thing. There is no clean way to isolate one team's permissions from another's without restructuring the entire policy.

ACLs are not the answer either. They are coarser, harder to enforce at the prefix level, and being phased out in modern S3 configurations. Access Points are the actual answer: replace one unwieldy document with many small, scoped policies, each owned by the team or application it governs.

What an S3 Access Point Is (and How It Hooks Into a Bucket)

An access point is a named network endpoint that attaches to a bucket. Each one carries its own policy, an IAM-style document that controls exactly what that endpoint permits. Requests routed through an access point are evaluated against both the access point policy and the underlying bucket policy. Both must permit the operation.

That last part is important. The bucket policy does not disappear. But you can write it once to say "trust my access points" and then never touch it again. Complexity moves to the edge, where each team's policy lives independently.

A few other mechanics worth knowing:

  • Each access point gets a unique hostname based on its ARN. Applications address data through that hostname, not the bucket's own endpoint.
  • Naming is intentional. You can call an access point "finance-readonly" or "ml-training-team." The name itself becomes part of how you communicate access governance to the rest of the organization.
  • Access Points are available in all AWS regions at no additional charge beyond normal S3 request and storage pricing.
  • You can create a large number of access points per bucket and per AWS account per region. In practice, most organizations will never get close to that ceiling.

The Network Controls an Access Point Adds on Top of Its Policy

Beyond the policy, access points give you two modes of network origin enforcement.

Internet-accessible: The access point accepts requests from any network origin, subject to its policy.

VPC-restricted: The access point accepts requests only from a specific VPC. Traffic never leaves the AWS network.

VPC restriction is enforced at the access point level, not by adding VPC conditions to the bucket policy. That separation is cleaner and harder to misconfigure. A bucket can have some access points locked to specific VPCs and others open simultaneously. Different consumers get different network controls without anyone touching the bucket policy.

This matters a lot in compliance scenarios. A team with a regulatory requirement that data not traverse the public internet gets a VPC-locked access point. A partner without that requirement uses a different one. The underlying bucket's network configuration does not change at all. Access Points layer on top of it.

How Access Point Policies Scope Permissions to Prefixes and Specific Operations

An access point policy uses the same syntax as a bucket policy. Same condition keys, same principal blocks, same IAM vocabulary. If you can write a bucket policy, you can write an access point policy.

The scoping works in two main directions.

By prefix. A policy can restrict an access point to a specific prefix within the bucket. Something like datasets/genomics/. Reads and writes through that endpoint cannot reach anything outside that prefix.

By operation. A policy can permit GetObject but deny PutObject, DeleteObject, or ListBucket. A downstream consumer that should never write back gets a read-only access point, full stop.

Standard IAM condition keys still apply. IP ranges, MFA presence, request time windows, object tags. The full condition vocabulary is available.

The implication is that each consuming team or service gets a policy that is minimal by design. It expresses only what that consumer needs. Nothing else. The bucket policy becomes a short, stable document. Complexity lives at the edge, where it belongs and where it is easier to reason about in isolation.

Cross-Account Access and Why Access Points Simplify Multi-Org Data Sharing

The classic cross-account S3 problem goes like this. The bucket policy has to name every external account. The external account also has to grant its own principals permission. Both sides have to stay synchronized over time. As the number of external accounts grows, that synchronization becomes a coordination tax nobody wants to pay.

Access Points change the shape of that problem. The data owner creates an access point, sets the policy, and shares the ARN. External principals address requests to that ARN. The access point policy governs what they can do.

Revoking access is just as clean. Delete or restrict the access point. The bucket policy and every other consumer are completely unaffected.

This maps directly to the shared-dataset pattern that shows up in larger organizations. A data platform team owns the bucket. Analytics, ML, and product teams in separate accounts each get their own access point scoped to the data they are authorized to reach. Billing, audit, and access control stay per-team without any restructuring of the underlying bucket.

Where Access Points Fit in ML and AI Training Workflows

The setup in most ML organizations looks like this. A central training corpus or feature store in S3. Multiple teams running experiments, fine-tuning jobs, and production inference simultaneously. Different permission requirements across all of them.

Without Access Points, the ML platform team modifies the bucket policy every time a new team onboards or a job's scope changes. High operational overhead, and a real blast radius if something goes wrong. AWS's own framing for this is direct: customers with shared datasets can control and scale access for hundreds of applications by creating individualized access points with names and permissions customized for each.

The governance win compounds at scale. More than half of organizations report data and storage bottlenecks that limit AI performance and scalability. Unclear or conflicting access controls add friction on top of the technical bottleneck. Access Points reduce one specific category of that friction. Access negotiation. Teams spend less time waiting for policy changes and more time running jobs.

For SageMaker specifically: SageMaker can begin training in fast-file mode without waiting for the full dataset to download. Access Points scope which data a given training job can reach. The job's IAM role addresses a specific access point ARN rather than the full bucket. That is a governance boundary and a practical operational boundary at the same time.

The FSx for ONTAP Integration That Extends Access Points to Enterprise File Data

Announced at re:Invent in December 2025, Amazon S3 Access Points for FSx for ONTAP is worth paying attention to because it signals something broader about where this feature is going.

The problem it addresses is real. Large volumes of enterprise data live in ONTAP file systems, not in S3. Getting that data in front of AI and ML services has historically required copying it or re-architecting around it. Neither option is fun.

The integration works by attaching an S3 Access Point to an FSx for ONTAP volume. The file data is exposed via the S3 API without moving or duplicating it. Per NetApp, roughly 80% of enterprise file data is unstructured. Documents, images, logs, instrument output. The category that is hardest to force into databases and most valuable for RAG pipelines and fine-tuning.

Services that gain access without data movement include SageMaker, Amazon Bedrock Knowledge Bases, AWS Glue, Amazon Athena, Amazon Redshift, Snowflake, Databricks, and anything else with native S3 support.

The governance model carries over completely. Each access point attached to an ONTAP volume has its own policy and network controls. The same scoping and isolation mechanics that apply to object data apply to file data. What this signals is that the Access Point abstraction is becoming a general-purpose data access governance layer, not a bucket-specific feature. That is a meaningful shift.

The Performance Tier That Access Points Now Govern

S3 Standard latency commonly lands in the tens-to-hundreds of milliseconds range for first byte. That is acceptable for batch workloads. For iterative ML training, it is a source of GPU idle time.

Google's analysis of more than two million ML training jobs found that 62% of jobs saw the input data pipeline repeatedly producing batches with delay after the accelerator was ready. That is a documented, measured bottleneck, not a theoretical one.

S3 Express One Zone is the high-performance tier designed for this situation. Single-digit millisecond access, up to 10x faster than S3 Standard, with request costs up to 80% lower than S3 Standard. Data is stored in directory buckets rather than general-purpose buckets. Directory buckets support up to 200,000 reads and 100,000 writes per second by default, with headroom to scale further.

Access Points are fully supported on directory buckets. The same governance layer applies to the high-performance tier. A shared high-performance dataset in Express One Zone, with per-team or per-job access points scoping which prefixes and operations each consumer can reach. Governance and throughput together, not in tension.

After price cuts in April 2025, Express One Zone became more viable for sustained ML training workloads. When an expensive high-performance tier is shared across multiple teams, the governance overhead of managing that access makes Access Points more valuable, not less. You want the control layer to scale alongside the performance tier.

Where Access Points Fall Short and What They Do Not Solve

Venn diagram: S3 Access Points vs. Bucket Policies. Compares Bucket Policies and S3 Access Points; overlap: Shared Mechanics.

No tool is the right tool for everything, and Access Points have real limits worth naming clearly.

They do not replace prefix structure. If the underlying dataset has no prefix organization, scoping by prefix is meaningless. The governance layer is only as precise as the data organization beneath it.

They add an indirection layer. Applications must use access point ARNs or aliases, not the bucket's own hostname. Existing code that hardcodes bucket endpoints must be updated. That is a real migration cost in older systems.

The dual-evaluation requirement can create confusing denies. The access point policy and the bucket policy must both permit the operation. If those two documents fall out of sync, debugging an unexpected deny takes longer than it should.

They do not address data quality, schema enforcement, or lineage. Governance of who can read data is entirely distinct from governance of what the data contains. Access Points solve the former. The latter is a different problem.

They do not solve the latency problem on their own. An access point on a standard bucket is still a standard bucket. The performance tier is a separate choice.

For small teams or single-application buckets, they add process without solving a real problem. Bucket policies remain the right tool when the policy is simple. Access Points are worth the setup cost when the alternative is complexity, not when the alternative is simplicity.

They are an AWS-native construct. They do not travel with the data if a team moves workloads to a different cloud or an S3-compatible endpoint outside AWS. The governance model has to be rebuilt from scratch. If portability is a requirement, that is a risk worth naming upfront.

Object-level permissions still require tagging and condition keys. Access Points scope the entry point, not individual object metadata. Fine-grained object-level control is a different layer.

How to Decide When Access Points Are the Right Tool

The clearest signal that Access Points are worth the setup: more than two or three distinct consumers with meaningfully different permission requirements accessing the same bucket. That is when the bucket policy starts getting complicated. That is when Access Points pay for themselves.

A few other good candidates:

  • Cross-account sharing. Almost always a good fit. Access Points give the external party a stable, revocable endpoint without ongoing bucket policy coordination.
  • Compliance or network isolation requirements. If the security posture requires isolating which network origins can reach which data, VPC-restricted access points deliver that cleanly.
  • Shared ML datasets with multiple pipelines. If multiple training jobs, teams, or pipelines with different read and write requirements are hitting the same dataset, Access Points reduce the operational tax of managing that access over time.

The question worth asking before skipping them: "When this team's access needs to change, how many other consumers are at risk of being affected?" If the answer is more than one, Access Points are probably worth it.

Start with prefix structure before anything else. Access Points reward buckets that are already organized by prefix. Investing in that organization first makes the governance layer that follows more precise and more useful.

And if the team will eventually move off AWS or needs a governance model that is portable across clouds, building deep dependency on Access Points is a risk worth naming before it becomes a problem.

Sources

  1. aws.amazon.com
  2. docs.aws.amazon.com
  3. aws.amazon.com
  4. docs.aws.amazon.com
  5. netapp.com
  6. community.netapp.com

More in S3 Bucket Fundamentals