【发布时间】:2018-06-03 02:43:56
【问题描述】:
我正在尝试使用以下代码更新保存在 aws s3 上的文件名
gem 'aws-sdk', '~> 2.3'
creds = Aws::Credentials.new(ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY'])
s3 = Aws::S3::Resource.new(credentials: creds, region: ENV['AWS_REGION'])
bucket = s3.bucket(ENV['AWS_S3_BUCKET'])
filename = URI.unescape(document.url).split('/').last
new_file = 'new_file_name'
obj = bucket.object(filename) # create object of original file name
obj.move_to("#{bucket.name}/#{new_file}", acl: 'public-read')
obj = bucket.object(new_file)
更新时在obj.move_to("#{bucket.name}/#{new_file}", acl: 'public-read') 行出现错误:
Aws::S3::Errors::NoSuchKey
The specified key does not exist.
对如何在 s3 上重命名文件有任何建议或想法吗?
谢谢
【问题讨论】:
-
这个输出是什么(放在你的错误行之前)?:
puts obj.inspect -
obj.inspect 输出:"#<:s3::object bucket_name='\"bucket_name\",' key='\"etats_des_stands__copie.pdf?1513753985\"'>"
-
你从哪里得到这个名字?
?1513753985看起来像一个查询字符串,而不是对象键的一部分。 -
@michael - sqlbot 不知道这个时间戳是由 aws 附加到每个 url
-
AWS 之外的其他东西正在这样做。
标签: ruby-on-rails amazon-web-services amazon-s3 paperclip aws-sdk