【发布时间】:2019-05-11 00:05:44
【问题描述】:
我想在我的 rails 应用程序中为用户提供从 Amazon S3 下载非公开文件的链接。这不是用户上传的文件,只是我上传的单个文件,任何登录的人都应该能够下载。
我迷失在 S3 文档/参数/语法中。就像失去了几个小时。这是非公开文件的亚马逊网址:https://s3-us-west-1.amazonaws.com/physicianneedtool/static/Historical_Payer_Profile.xlsx。 S3_BUCKET、S3_KEY、S3_SECRET_KEY 和 S3_REGION 变量已经适用于我在应用程序中设置的载波,所以我知道它们很好。
我当前的非工作代码:
s3 = Aws::S3::Resource.new(region: ENV["S3_REGION"],
access_key_id: ENV["S3_KEY"],
secret_access_key: ENV["S3_SECRET_KEY"])
@file_url = s3.bucket(ENV["S3_BUCKET"])
.object('Historical_Payer_Profile.xlsx')
.get(response_target: 'static/Historical_Payer_Profile.xlsx')
我得到的错误是 Aws::S3::Errors::NoSuchKey。在rails控制台中,我发现 s3.bucket(ENV["S3_BUCKET"]).object('Historical_Payer_Profile.xlsx') 返回一个看似有效的S3对象,所以看起来错误是由最后的.get调用引起的.我在那里做错了什么?为 response_target 指定的路径是我从 S3 控制台中的复制路径按钮获得的确切路径。
【问题讨论】:
-
在
.object(file name should be here)你的情况下.object('Historical_Payer_Profile.xlsx') -
感谢@AjayBarot。我更新了代码(如上面的问题所示),但仍然出现 nosuchkey 错误。有任何想法吗?响应目标值是我在 s3 控制台中对文件使用“复制路径”功能时得到的确切字符串。
-
我什至用文字区域/键/桶字符串替换了 ENV 变量,只是为了消除 ENV 变量存在问题的任何可能性。
-
我想通了,可能很快就会发布我自己的问题的答案。 @AjayBarot 顺便说一句,包含完整路径所需的密钥,所以它是 'static/Historical_Payer_Profile.xlsx'