Videos, Sources & Storage

Amazon S3 file sourcing

Updated May 24, 2026

How to store your original videos on Amazon S3 and deliver them via SmartVideo.

Since April 2023, AWS turns on Block Public Access (BPA) by default for every new bucket, and the old “Make public” button no longer works on its own. SmartVideo only needs to download your file once — so the safest path is a pre-signed URL that expires after we fetch it. If you’d rather keep the bucket open, the steps for that are at the bottom.

1. Upload your video to any S3 bucket. The default settings are fine — leave BPA on.

as_1.png

2. When the upload finishes, click the object’s name to open its details page. From the Object actions menu, choose Share with a presigned URL.

3. Set an expiration. The console allows up to 12 hours; that’s enough — SmartVideo will pull the file the first time the page is previewed or published. Click Create presigned URL and the URL copies to your clipboard.

For AWS’s own walkthrough, see Sharing objects with presigned URLs. If you need longer than 12 hours (for example, you’re queueing a batch), generate the URL with the CLI: aws s3 presign s3://bucket/key --expires-in 604800 (max 7 days).

4a. If you are using our WordPress plugin, paste the copied URL into the Video source field (the gif below shows how this is done using our plugin with the new WordPress editor).

Note: If the video file doesn’t seem to be working with the SmartVideo player, generate a fresh pre-signed URL — the one you used may have expired before SmartVideo pulled the file. You’ll know it’s processed once the post-encode preview loads on your page.

as_3a.gif

4b. If you are not taking advantage of our WordPress plugin, or are on another CMS platform entirely, use the pre-signed URL as the source in a SmartVideo tag.

Note: If the video file doesn’t seem to be working with the SmartVideo player, generate a fresh pre-signed URL — the one you used may have expired before SmartVideo pulled the file.

as_3b.gif

Alternative: make the bucket publicly readable

Use this if you want a stable, non-expiring Object URL — for example, you’re sourcing the same file from several pages. Be aware that anyone with the URL can download the file, and AWS bandwidth charges apply to every request until SmartVideo’s CDN caches it.

1. Open the bucket, go to the Permissions tab, and find Block public access (bucket settings). Click Edit, uncheck Block all public access, and save. AWS asks you to type confirm to acknowledge the change.

2. On the same Permissions tab, scroll to Bucket policy and click Edit. Paste a policy that grants public read on the object you want SmartVideo to fetch:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadForSmartVideo",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::YOUR-BUCKET-NAME/path/to/video.mp4"
    }
  ]
}

3. Upload the video, click its name, and copy the Object URL. Use that URL in step 4a / 4b above instead of the pre-signed URL.

If you’d rather not loosen bucket settings at all, AWS recommends fronting S3 with CloudFront and using either an Origin Access Control or signed CloudFront URLs. That’s documented in Restricting access to an Amazon S3 origin.

And that’s it! 🎉

A few moments after previewing or publishing the page, SmartVideo will download, encode, and store your video on our global delivery network. We recommend keeping the file stored in your S3 bucket in case the video is removed from your website by mistake.

Bring all your videos to SmartVideo

Import from S3, Dropbox, Google Drive, and more — SmartVideo handles formats, storage, and thumbnails.

14-day free trial · No charge until day 15