I recently learnt that you can share objects in private S3 buckets by using pre-signed URLs.

The [S3] object owner can share objects with others by creating a presigned URL - using their own security credentials to grant time-limited permission to download the objects.

Source: S3 User Guide

This functionality has been really useful in getting a VideoPlayer GameObject in Unity to directly play a video hosted on S3. You just generate a pre-signed URL for the video 1 and attach it to the VideoPlayer's URL component. No need to deconstruct frames into byte-arrays and such - Unity takes care of it all AND your objects are never made public.


  1. This can be done through the AWS Console or in-script. Here is a .NET code sample ↩︎