Exporting

Amazon S3

Connect your own Amazon S3 bucket so Dina can upload recordings and create shareable links.

Amazon S3 lets you store your recordings in your own AWS bucket. There are a few more steps than Vercel Blob, but once it's set up, it runs in the background and you never have to touch it again.

What to expect — You'll create a storage bucket on AWS, open it for public viewing, create a dedicated upload user, and paste four values into Dina. Plan for about 10 minutes.

Before you start

You'll need an AWS account. If you don't have one yet, you can create a free account at aws.amazon.com. The S3 free tier covers a generous amount of storage.

Step 1 — Create a storage bucket

  1. Open the S3 console and click Create bucket.
  2. Choose a Bucket name — it must be unique across all of AWS. Something like dina-shares-yourname works.
  3. Pick an AWS Region close to you. Make a note of it — you'll enter it into Dina later.
  4. Under Object Ownership, leave the default: ACLs disabled — Bucket owner enforced.
  5. Under Block Public Access, uncheck "Block all public access" and confirm when prompted. This step is required so that anyone with a share link can view the video.
  6. Leave all other settings as they are.
  7. Click Create bucket.

Step 2 — Allow public viewing

This step makes it so that the video on your share page can actually load.

  1. Click on your new bucket, then go to Permissions.
  2. Scroll down to Bucket policy and click Edit.
  3. Paste the following, replacing REPLACE-WITH-BUCKET-NAME with your actual bucket name:
JSON
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadDinaShares",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::REPLACE-WITH-BUCKET-NAME/*"
    }
  ]
}
  1. Click Save changes.

Step 3 — Create an upload user

Instead of using your main AWS credentials, you'll create a separate user that can only upload files — this keeps things secure.

  1. Open the IAM consoleUsersCreate user.
  2. Name it dina-uploader and click Next.
  3. On the permissions page, choose Attach policies directly, then click Create policy.
  4. In the policy editor, paste the following — again replacing the bucket name:
JSON
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DinaPutObject",
      "Effect": "Allow",
      "Action": ["s3:PutObject"],
      "Resource": "arn:aws:s3:::REPLACE-WITH-BUCKET-NAME/*"
    }
  ]
}
  1. Name the policy DinaUploaderPolicy and click Create policy.
  2. Go back and attach this new policy to dina-uploader, then finish creating the user.
  3. Open the dina-uploader user → Security credentialsCreate access key.
  4. When asked for a use case, choose Application running outside AWS.
  5. Copy the Access Key ID and Secret Access Key. AWS only shows the secret once — copy it now before closing the page.

Step 4 — Enter your credentials in Dina

  1. Open Dina on your Mac.
  2. Press +, to open Settings, then go to the Cloud tab.
  3. Select Amazon S3 from the provider list.
  4. Fill in the four fields:
    • Access Key ID — from Step 3 (starts with AKIA…)
    • Secret Access Key — from Step 3
    • Region — the region you picked in Step 1 (e.g. us-east-1)
    • Bucket — your bucket name
    • Prefix (optional) — leave blank, or enter something like videos to keep your bucket organized
  5. Click Save.

Your credentials are stored securely in your Mac's Keychain and never leave your device.

Step 5 — Share your first recording

  1. Open any project in Dina.
  2. Click Export, then choose Shareable Link.
  3. Click Export and Share.

Dina will export the recording and upload it directly to your bucket:

Text
Exporting → Uploading to your cloud… → Your video is live

Once done, a shareable link is copied to your clipboard and a preview opens.

Troubleshooting

ProblemWhat to check
"S3 upload failed (403): SignatureDoesNotMatch"The Secret Access Key was copied with a typo or extra space — re-paste it carefully in Settings → Cloud
"S3 upload failed (403): AccessDenied"The IAM policy isn't correctly attached to dina-uploader — re-check Step 3
Upload works but share page shows a broken videoThe bucket policy from Step 2 is missing or incorrect — re-paste it and make sure "Block all public access" is off
"Could not connect to S3"The Region field in Dina doesn't match the region you chose in Step 1

What's next

  • Looking for a simpler option without AWS? Vercel Blob has a shorter setup with no IAM configuration.
  • Want to auto-delete old recordings? You can set up S3 Lifecycle Rules from the AWS console — Dina won't interfere.