Transfer Family Web Apps S3 Access Grants IAM Identity Center CloudFront

Easy File Sharing with AWS Transfer Family Web Apps

We set up a fully managed, no-code file sharing portal for a customer using AWS Transfer Family Web Apps — branded custom domain, SSO authentication via IAM Identity Center, per-user S3 Access Grants for fine-grained permissions, and disaster recovery via Cross-Region Replication. Zero custom code. Zero servers.

VR
Vishnu Rachapudi Cloud & AI Engineer · AWS Community Builder (Security) · 14× AWS Certified
July 2026·6 min read
Section 01

The problem

File sharing shouldn't require teaching users how to navigate the S3 console, install desktop clients, or run CLI commands. You just want to hand someone a URL, let them log in, and let them upload/download files from a specific folder — with proper access control.

Our customer had on-prem Windows file storage that needed to be accessible to distributed team members via a browser. No FTP servers, no VPN required for end users, no training on AWS console. Just a clean, branded portal.

💡
AWS Transfer Family Web Apps is a fully managed, no-code web portal that sits in front of S3. Users authenticate via SSO, see only what they're authorized to access, and get a clean file manager UI — upload, download, copy, delete, create folders. No custom code. No servers to manage.
Section 02

Architecture

The end-to-end flow: on-prem files sync to S3 via DataSync over Site-to-Site VPN. The Transfer Family Web App provides browser-based access. IAM Identity Center handles SSO. S3 Access Grants control per-user permissions. CloudFront delivers it on a custom domain.

Architecture Diagram

Architecture — On-prem to S3 via DataSync, Transfer Family Web App with IAM Identity Center, CloudTrail/CloudWatch/KMS

🖥️ On-prem Windows Storage
Customer's existing file server
🔗 Site-to-Site VPN + DataSync
Secure sync to AWS
🪣 Amazon S3
Primary storage · 11 nines durability
📁 Transfer Family Web App
Managed file portal · no-code · up to 160 GB uploads
↓ authenticated via ↓
🔐 IAM Identity Center
SSO for workforce users
  • SAML / OIDC identity provider
  • Built-in directory
  • Email invitations
🎫 S3 Access Grants
Fine-grained permissions
  • Per-prefix access control
  • Identity-aware (user/group)
  • No bucket policies needed
↓ served via ↓
🌐 CloudFront + Route 53
Custom domain · HTTPS · ACM certificate

AWS services used

ServiceRole
Transfer Family Web AppManaged file transfer portal (no-code)
S3 + S3 Access GrantsStorage + per-prefix identity-aware permissions
IAM Identity CenterSSO authentication for workforce users
DataSync + Site-to-Site VPNOn-prem to S3 sync
CloudFront + Route 53Custom domain for branded access
KMS / CloudTrail / CloudWatchEncryption, audit logging, monitoring
Section 03

Setup

IAM Identity Center

Set up IAM Identity Center with directory users. The web app integrates directly — users get an email invitation, authenticate through SSO, and land in the file manager.

Create the Web App

In the Transfer Family console → Web apps → Create web app. That's it.

Web App Configuration

Transfer Family Web App configuration — endpoint, IAM role, units, customization

IAM Role Trust Policy

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": { "Service": "transfer.amazonaws.com" },
    "Action": ["sts:AssumeRole", "sts:SetContext"]
  }]
}
Section 04

S3 Access Grants

This is where the real power is. Instead of bucket policies, you create grants scoped to specific S3 prefixes per identity group. No IAM user keys. No per-user bucket policies. Identity-aware access at the prefix level.

Grant ScopePermissionGrantee
s3://bucket-name/*Read, WriteDirectory identity group
s3://bucket-name-archive/*ReadDirectory identity group
S3 Access Grants

S3 Access Grants — per-prefix, identity-aware permissions

Why this matters: Traditional approach = one bucket policy per user, updated manually. Access Grants = declare "this group gets read/write to this prefix" and it just works. Scales without policy size limits.
Section 05

Custom domain via CloudFront

The default Transfer Family Web App URL looks like webapp-1622a11999354a5da.transfer-webapp.us-east-1.on.aws — not something you'd share with a customer.

Fix:

  1. Deploy CloudFront distribution using the AWS-provided CloudFormation template
  2. Set custom URL to the customer's branded domain
  3. ACM certificate + Route 53 alias → CloudFront
  4. Update S3 bucket CORS to allow the custom origin
Custom Domain Setup

CloudFront distribution with custom domain and ACM certificate

⚠️
Gotcha: Origin request policy must forward query strings + cookies but NOT the Host header. Cache policy must exclude Host from cache key. Also — update AllowedOrigins in the S3 CORS policy when switching to the custom domain.

S3 CORS configuration

[{
  "AllowedHeaders": ["*"],
  "AllowedMethods": ["GET", "PUT", "POST", "DELETE", "HEAD"],
  "AllowedOrigins": ["https://your-custom-domain.com"],
  "ExposeHeaders": ["ETag", "x-amz-request-id"]
}]
Section 06

End user experience

Users see only their authorized S3 locations with permissions listed. They can upload (up to 160 GB), download, copy, create folders, delete, and search — all through the browser.

Web App Home

Web App landing — shows authorized S3 locations with permission levels

File Operations

File manager UI — upload, download, copy, delete, create folders

Files are transferred over HTTPS with TLS, multipart uploads for large files, and CRC32 end-to-end integrity checks. No desktop client needed.

Section 07

Disaster recovery

Since this is fully managed — no servers, no infrastructure state to maintain — DR is trivial.

S3 Cross-Region Replication (CRR) keeps a live replica in a secondary region. If the primary goes down:

  1. Launch a new Transfer Family Web App in the DR region (minutes)
  2. Point it to the replicated S3 bucket
  3. IAM Identity Center is already global — users just work
  4. Update CloudFront origin or Route 53 failover record
🛡️
No data migration, no restore-from-backup. Your DR plan is a single CloudFormation stack in another region — that's the advantage of building on managed services.
Section 08

Cost breakdown

ComponentPricing
Web app unit~$0.30/hr (250 concurrent sessions)
S3 Access GrantsFree (part of S3)
IAM Identity CenterFree tier
Data transferStandard S3 + CloudFront rates

~$220/month running 24/7. Stop the web app when not needed to cut costs.

Section 09

Takeaways