AWS S3 Setup

Connect your AWS S3 bucket to Snipish for unlimited screenshot storage using the industry-standard object storage.

Prerequisites

  • An AWS account
  • IAM permissions to create buckets and access keys

Step 1: Create an S3 Bucket

  1. Go to the S3 Create Bucket page
  2. Enter a bucket name (e.g., snipish-screenshots)
  3. Choose an AWS Region close to your users
  4. Keep Block all public access enabled (Snipish uses presigned URLs)
  5. Click Create bucket

Step 2: Configure CORS

In your bucket → Permissions → CORS configuration, add:

[
  {
    "AllowedHeaders": ["*"],
    "AllowedMethods": ["GET", "PUT", "HEAD"],
    "AllowedOrigins": ["https://snipish.app"],
    "MaxAgeSeconds": 3600
  }
]

Step 3: Create an IAM User

  1. Go to IAM → Create User
  2. Name it something like snipish-s3
  3. Attach a custom inline policy with these permissions:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::snipish-screenshots",
        "arn:aws:s3:::snipish-screenshots/*"
      ]
    }
  ]
}

Step 4: Generate Access Keys

  1. In the IAM user's Security credentials tab, click Create access key
  2. Select Third-party service as the use case
  3. Copy the Access Key ID and Secret Access Key
Warning: Save your Secret Access Key immediately — AWS will only show it once.

Step 5: Configure in Snipish

  1. Go to Settings → Storage in Snipish
  2. Click Connect Your Own Bucket
  3. Select AWS S3 as the provider
  4. Enter the Bucket Name and Region (e.g., us-east-1)
  5. Paste your Access Key ID and Secret Access Key
  6. Click Validate & Connect

Step 6: Verify

Upload a test screenshot. Check your S3 bucket in the AWS console — the file should appear within seconds.

Troubleshooting

  • Validation fails with “Access Denied” — Verify the IAM policy has the correct bucket ARN and the user has the right permissions.
  • Images don't load — Ensure the CORS configuration allows GET from your Snipish domain.
  • Wrong region error — Make sure the region you enter in Snipish matches the actual bucket region exactly.