RUby - amazon S3 for remote url attachments - OpenURI::HTTPError: 403 Forbidden

RUby - amazon S3 for remote url attachments - OpenURI::HTTPError: 403 Forbidden

我知道这个问题已经被问过好几次了,但是 none 提供的解决方案对我有用。 我正在使用带有 open-uri 的 Ruby 版本 2.2.1 并尝试为我的电子邮件附件添加远程 url。

我有的是:

@filename = "#{@doc.id}-#{@company.subdomain}-#{@doc.doc_number}-#{@doc.created_at.strftime("%Y-%m-%d")}.pdf"
@file_path = "https://mybucket.s3.amazonaws.com/docs/doc_#{@doc.id}/#{@doc.filename}"

attachments[@filename] = open(URI.parse("#{@file_path}")).read

我也用过

 1. File.read(open("#{@file_path}")
 2. open(Net::HTTP.get(URI.parse("#{@file_path}"))
 3. Added User-Agent

我删除了 URI.parse,尝试使用实例变量但没有字符串插值。什么都不管用。如果我在浏览器上访问一个文件路径,它确实有效,但当我在我的邮件程序中调用它时却无效。

如有任何帮助,我们将不胜感激。

编辑: 如果我只是将工作 url(无字符串插值)硬编码为文件附件,它就可以正常工作。

好吧,这是一个简单的修复,但有点不相关。 我的代码中的其他地方有一个拼写错误,这使得文件名与我用来测试的 url 有点不同。

当我将以下内容用于 file_path 时,我意识到了这一点,并且它立即适用于:

file_path = @doc.filename.url

attachments[@file_name] = open(URI.parse("#{file_path}")).read