open source решение
Это может быть написанная тобой Лямбда.
конечный пользователь не должен видеть оригинальную ссылку на хранилище
CloudFront обязателен, тем более тебе много и большой статики отдавать. Настраивается и женится с бакетом в касание.
ссылка должна быть одноразовая
Это может быть написанная тобой Лямбда плюс сервис Edge.
некоторые файлы могут быть видны только некоторым ролям пользователей
S3 поддерживает ролевую (если можно так сказать) модель доступа к данным, только тут ты уморишься всё это разруливать даже с Лямдбой на пару.
Если всё обобщить и расширить на грядущие возможные хотелки, то вырисовывается небольшой проект на wordpress. Там и авторизация, и аутентификация, и ещё что до кучи вылезет. WP искаробки работает с S3 и CloudFront. Думаю, плагинов для генерации одноразовых ссылок для быть не в единичном экземпляре.