如何隐藏丑陋的 aws s3 url - RoR 应用程序

how to hide the ugly aws s3 url - RoR app

我的 RoR 应用程序在 Heroku 上并且活动存储配置正确。但是,当我在应用程序中获取上传的文档时,url 类似于 https://cremers.s3.eu-west-1.amazonaws.com/cx9xy0pmbieagvuw8a0vzcnfhvcc?response-content-disposition=inline%3B filename%3D"Digeste_9.1.pdf"%3B....

如何将其更改为 "normal" url,例如 https://www.cremers.fr/documents/digest_9.1.pdf

您可以使用 route/controller 作为一种代理。我已经做到了这一点,下面是我使用的大致代码,根据您的具体情况进行了编辑。

显然,我没有使用您的设置对此进行测试,而且我没有在我的案例中使用 ActiveStorage,因此您可能 need/want 进行调整,但这应该让您开始:

# config/routes.rb
Rails.application.routes.draw do
  get '/documents/:filename.:format.:compression', to: 'documents#show'
end
# app/controllers/documents_controller.rb

require 'open-uri'

class DocumentsController < ApplicationController
  def show
    bucket_name = 'cremers'
    aws_region = 'eu-west-1'
    filename = params[:filename]
    s3_url = "https://s3-#{aws_region}.amazonaws.com/#{bucket_name}/#{filename}"
    data = open(s3_url)
    send_data data.read, type: data.content_type
  end
end