How to share an S3 file with a non-technical user
Two patterns. Generate a presigned URL — a time-limited bearer link that works in any browser without an AWS account. Or invite the recipient to an S3 Viewer workspace by email — tied to a logged-in user, scoped per bucket, revocable in one click. Use presigned URLs for one-off shares; use workspace invites for ongoing access.
Step-by-step.
- 01
Decide: one-time or ongoing access?
One-time: a presigned URL is the right tool — short-lived, no signup, works in any browser. Ongoing: a workspace invite is safer — tied to a logged-in user, revocable in one click, scoped per bucket. - 02
One-time: presigned URL via the AWS CLI
The link works in any browser and expires after the duration you set (max 7 days with IAM user keys). It's a bearer token — anyone who gets the link can use it until it expires, and it can't be revoked once shared.aws s3 presign s3://my-bucket/contract.pdf --expires-in 3600 - 03
One-time: presigned URL in S3 Viewer
Right-click the file and choose Share link. S3 Viewer signs the URL server-side using your stored credentials and copies it to your clipboard. Same primitive as the CLI — in a UI you can hand to a junior teammate. - 04
Ongoing: invite them to your workspace
Click Invite on the bucket. Type the recipient's email, choose Viewer (read + download only), Editor (read + write), or Admin. They sign in to S3 Viewer with email OTP or GitHub and see only the bucket you shared. - 05
Pick a role per bucket
Roles are assigned per bucket — same person can be Viewer on one and Editor on another. Simpler to operate than authoring per-person IAM users with hand-rolled JSON policies. - 06
Revoke when done
One click. Their session ends and the workspace stops signing S3 calls for them — no IAM key rotation needed because no IAM user was ever minted for them.
What's actually happening.
A presigned URL is a signed query-string version of an S3 GET request. Anyone with the link can fetch the file until it expires (max 7 days with IAM user keys). It's a bearer token — leaking the URL leaks the file, and it can't be revoked once it's out.
A workspace invite ties access to a logged-in user, which means you can revoke at any time, limit them to specific buckets, and avoid minting IAM users. S3 Viewer signs every request server-side using the workspace's stored credentials (encrypted at rest with RSA-4096); the recipient never sees an access key. Off-boarding is a one-click revoke — no AWS keys to rotate because no IAM user was ever created.
Common questions.
How do I send an S3 file to a client who doesn't use AWS?
Are presigned URLs safe to share?
How long can a presigned URL last?
Can I revoke a presigned URL after sharing it?
Can the recipient upload back to me?
Does this work with Cloudflare R2 too?
Skip the CLI. Try it in the browser.
S3 Viewer turns the steps above into a single click. Open source, self-hostable, free for personal use.
Why teams pick this
More how-tos
Invite a teammate
Skip per-person IAM users for human collaboration. Email invite, per-bucket role, one-click revoke.
Granular permissions
The IAM s3:prefix Condition that everyone misses, plus when workspace roles are simpler than IAM.
Download a file
Browser, AWS CLI, or presigned URL — three ways, with auto-inferred filenames and zero key exposure.