S3 Starting Guide
Shottr can upload an image to an S3 bucket, and copy a shareable link to the clipboard with a single click. (You could also configure sharing through Shottr Cloud.)
S3-compatible storage is a modern way of hosting and sharing static files online. Using S3 to share screenshots gives you more control over your files, compared to Shottr Cloud. Besides, Shottr Cloud doesn't guarantee storage beyond one year, while S3 will keep your files indefinitely. Finally, S3 serves images as static files, and they can be embedded in HTML anywhere. The downside of using S3 is that most browsers will open static retina images at wrong scale.
Shottr communicates with your S3 storage directly and the images shared via S3 will never pass through Shottr server.
If you’re new to S3, I recommend choosing Cloudflare R2 as a provider: it takes under five minutes to set up and includes 10 GB of free storage.
How to set up Cloudflare R2
- Create Cloudflare account if you don't have one yet. Go to https://cloudflare.com/, click Log in (upper right corner), then Sign up (under the Log In form).
Proceed to creating an account (Free plan is fine).
- In the dashboard, open R2 Object Storage (search “R2” in the top bar or pick R2 from the left menu).
- Click Create bucket, then enter a bucket name. Remember the bucket name. For Location, leave Automatic/None unless you specifically need EU data residency. Leave Storage Class as is.
- Create S3-compatible credentials: return to R2 home page, click Manage API tokens (upper right corner) → Create User API token → choose Object Read & Write (optionally scope to your bucket) → Create.
Write down Access Key ID and Secret Access Key. The secret key is shown only once, it'll get hidden when you leave the page.
Write down your jurisdiction-specific endpoint (it should be
https://[ACCOUNT_ID].r2.cloudflarestorage.com, unless you selected EU location in step 3). - (Optional) Make the bucket files publicly available. This will make every upload available online to anyone with a link. (Alternatively, let Shottr generate a presigned link for every upload individually; presigned links only stay live for up to 7 days.)
Return to R2 home page → your bucket → Settings → Public Development URL → Enable → type "allow".
Write down the Public Bucket URL.
- (Optional) If you made the bucket public, you could use a custom domain for it.
a. You need to add domain to Cloudflare account first. Go to Cloudflare Account Home in the sidebar menu.
b. Click Onboard a domain, or Buy a domain, and follow prompts.
c. Return to R2 home page → your bucket → Settings → Custom Domains → Add → follow the prompts.
- Your S3 bucket is ready. To configure Shottr, go to Settings → Uploading tab:
Access key: Access Key ID from step 4
Secret key: Secret Access Key from step 4
Bucket name: step 3
Service: Other
Endpoint: jurisdiction-specific endpoint from step 4
Public Bucket URL: URL from step 5, or your custom domain from step 6.
Once you finish, click Test Connection to verify the set up. The uploading icon should appear in the editor window toolbar, right next to the pin icon. Use it to upload screenshots online.
How to set up Amazon S3
- Go to https://aws.amazon.com/ and click "Create Account"
- Fill the form and proceed. Choose "Basic support (free)". You’re not charged to create an S3 bucket; you only pay for what you store/transfer (https://aws.amazon.com/s3/pricing/).
- You should be logged in to AWS Console. Open S3: in the top search bar, type “S3” and hit Enter, click S3.
- In S3, click Create bucket.
Bucket name must be globally unique across all AWS customers. Everyone shares one big name space, so if the name is taken, pick another. Avoid periods (.), they can break HTTPS “virtual hosted” URLs.
AWS Region —
us-east-1orus-west-1are good choices. It doesn't really matter much.Leave Object Ownership = Bucket owner enforced (ACLs disabled).
Click Create bucket.
- Create an IAM user and generate Access key + Secret access key
Open IAM: search for “IAM” in the console search bar → IAM → left nav Users → Create user.
User name: s3-uploader (for example).
Permissions: select "Attach policies directly", then search for and select
AmazonS3FullAccess. If you're using AWS for more than just one bucket, it's prudent to create a minimal policy for only this bucket. - Click the new user → Security credentials tab → Access keys → Create access key → choose Application running outside AWS → Next. Enter any name, then Create.
- Write down the Access key ID and Secret access key right away. The secret is shown only once! Keep it safe.
- (Optional) Make the bucket files publicly available.
This will make every upload available online to anyone with a link. (Alternatively, let Shottr generate a presigned link for every upload individually; presigned links only stay live for up to 7 days.)
In S3 → your bucket → Permissions → Block public access (bucket settings) → Edit → uncheck Block all public access (and confirm).
Still in Permissions → Bucket policy → add a policy that grants anonymous GET for objects (replace BUCKET-NAME with your bucket name):
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::BUCKET-NAME/*" } ] }Then go to S3 → your bucket → Objects → Upload → Add files → pick any small file → Upload.
Click the uploaded object and copy Object URL without the file name. It should look like this: https://mybucket.s3.us-east-1.amazonaws.com/
- Your S3 bucket is ready. To configure Shottr, go to Settings → Uploading tab:
Access key: from the IAM user (step 6).
Secret key: was shown once when you created the key (step 6).
Bucket name: exactly as created in step 4.
Service: Amazon (AWS)
Region: e.g., us-west-2, visible in the S3 bucket list or in the console Region selector.
Public Bucket URL (if you made the bucket public): URL that you copied on step 8.
Once you finish, click Test Connection to verify the set up. The uploading icon should appear in the editor window toolbar, right next to the pin icon. Use it to upload screenshots online.