【问题标题】:How to Rename a file on S3 bucket after save using 'aws-sdk'?使用'aws-sdk'保存后如何重命名S3存储桶上的文件?
【发布时间】: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 上重命名文件有任何建议或想法吗?

object.inspect 输出:

谢谢

【问题讨论】:

  • 这个输出是什么(放在你的错误行之前)?: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


【解决方案1】:

您正在尝试将带有键 x 的对象移动到键 nil。鉴于您的错误,我会先尝试初始化一个新对象y,然后在其上调用 move_to。

【讨论】:

    猜你喜欢
    • 2017-05-21
    • 1970-01-01
    • 2011-03-25
    • 2012-02-14
    • 2020-03-17
    • 2011-01-29
    • 2018-03-06
    • 2022-01-11
    • 2012-05-28
    相关资源
    最近更新 更多