RUby - 用于远程url附件的amazon S3 - OpenURI :: HTTPError:403 Forbidden

时间:2017-08-23 18:38:33

标签: ruby amazon-s3 open-uri

我知道这个问题已被多次询问,但没有一个解决方案对我有用。 我正在使用Ruby版本2.2.1与open-uri并尝试为我的电子邮件附件添加远程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,尝试使用实例变量而不使用字符串插值。什么都行不通。如果我访问浏览器上的文件路径它确实有效,但是当我在邮件程序中调用它时却没有。

非常感谢任何帮助。

编辑: 如果我只是将一个工作网址(没有字符串插值)硬编码为文件附件,它可以正常工作。

1 个答案:

答案 0 :(得分:0)

嗯,这是一个简单的修复,但有点无关。 我的代码中的其他地方有一个拼写错误,这使得文件名与我以前测试的网址略有不同。

当我使用以下内容代替file_path时,我意识到了这一点,它立即起作用:

file_path = @doc.filename.url

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