Ответ 1
Я не знаю ни одного из готового решения. Но базовая установка кажется в пределах досягаемости. Здесь первый проход с использованием динамического сегмента в маршруте и перенаправление в контроллере:
в routes.rb:
get 's3/:file_key', to: 's3_redirects#show'
s3_redirects_controller.rb:
class S3RedirectsController < ApplicationController
def show
bucket = get_bucket
file_key = params[:file_key]
file_key += "." + params[:format] if params[:format].present?
s3_file_link = RightAws::S3Interface.new(your_config_options_here).get_link(bucket, file_key, link_expiration_time)
redirect_to s3_file_link
end
end
Очевидно, вы можете заменить свой любимый метод взаимодействия с вашими файлами S3, и вам нужно определить get_bucket и т.д.
Это, конечно, касается только действительных ключей, в противном случае вы получите "нет такого ключа". Если вы ищете операции индексирования/типа ls, то, конечно, нужно сделать больше, но базовая структура здесь должна позволить вам это сделать, если у вас есть разумный способ получить данные, которые вы ищете, от S3.