How to invite a teammate to your S3 bucket
TL;DR
AWS IAM is powerful for service-to-service auth and fine-grained policy — but it's heavy for human collaboration on a single bucket. The simpler pattern: add the server once with one least-privilege key, then invite teammates by email and give each of them a role. S3 Viewer wraps that workflow — Owner, Admin, Editor or Viewer, with per-bucket overrides — and removing someone takes one click and no key rotation.
Steps
Step-by-step.
- 01
Add a server
Click Add server in the sidebar. A server is one set of credentials pointed at one S3-compatible endpoint; it holds the buckets it can reach and the members you invite. - 02
Connect the bucket once
Paste an access key and secret. Use a least-privilege IAM user scoped to the buckets you want exposed — typically withs3:ListBucket,s3:GetObject,s3:PutObject, ands3:DeleteObject. Your whole team uses this one credential through their own logins. - 03
Invite by email
Open the server's bucket list, click Share to open the members dialog, type your teammate's email and pick a role: Viewer (browse and download), Editor (also upload, rename, delete, and create buckets where supported) or Admin (also manage members, rename the server and remove buckets). Owner is not in the picker — it belongs to whoever created the server, and only an Owner can delete it. A bucket can give someone a different role than they have on the server, so the same person can be an Editor on one bucket and a Viewer on another. - 04
Send
You can send up to five addresses at a time, and an invite is good for seven days. Each recipient gets one email; they sign in with an email and password (or with GitHub), accept, and the server appears in their sidebar — no AWS, no IAM, no CLI. - 05
Off-boarding: remove the member
Remove them in the members dialog. They lose access to that server on their next request and you don't need to rotate any AWS keys — they never had any.
Under the hood
What's actually happening.
AWS IAM is built for service-to-service authorization and fine-grained programmatic policy. For a small team that just needs to browse and share files in a bucket, per-person IAM is heavier than it needs to be: a JSON policy per role, a key per person, rotation cycles, and off-boarding to remember. S3 Viewer takes a different approach for that human-collaboration case: the bucket is connected once with a server-level credential, and teammates authenticate to S3 Viewer instead of AWS. Their access is enforced on our server — every request is checked against their role before it is signed, and roles are ordered Viewer < Editor < Admin < Owner, each one adding to the last. When you remove them, no keys need rotating because they never held any. The same model works for Cloudflare R2 and any other S3-compatible provider.
FAQ
Common questions.
Can multiple users access the same S3 bucket without each having an IAM user?
Why use a shared server instead of per-person IAM?
How do I remove a teammate from a bucket?
Can a teammate have different access on different buckets?
How does this work with IAM Identity Center?
Does this work with Cloudflare R2 buckets too?
Use S3 Viewer for this
Skip the CLI. Try it in the browser.
S3 Viewer turns the steps above into a single click. Open source, self-hostable, free.
Use case
Why teams pick this
Related guides
More how-tos
Granular permissions
The IAM s3:prefix Condition that everyone misses, plus when workspace roles are simpler than IAM.
Read-only IAM user
The exact least-privilege policy JSON, the console and CLI steps, and how to connect the keys without s3:ListAllMyBuckets.
Share an S3 file
Copy link for a 15-minute presigned URL, or an email invite for ongoing access — when each is the right call.