【发布时间】:2015-06-02 03:47:37
【问题描述】:
我正在尝试创建一个删除 S3 实例上的文件的方法,但是当我尝试在对象上调用 .head 或 .read 时收到 AWS::S3::Errors::NoSuchKey: No Such Key 错误。
app/models/file_item.rb
def thumbnail
{
exists: thumbnailable?,
small: "http://#{bucket}.s3.amazonaws.com/images/#{id}/small_thumb.png",
large: "http://#{bucket}.s3.amazonaws.com/images/#{id}/large_thumb.png"
}
end
lib/adapters/amazons3/accessor.rb
module Adapters
module AmazonS3
class Accessor
S3_BUCKET = AWS::S3.new.buckets[ENV['AMAZON_BUCKET']]
...
def self.delete_file(thumbnail)
prefix_pattern = %r{http://[MY-S3-HOST]-[a-z]+.s3.amazonaws.com/}
small_path = thumbnail[:small].sub(prefix_pattern, '')
large_path = thumbnail[:large].sub(prefix_pattern, '')
small = S3_BUCKET.objects[small_path]
large = S3_BUCKET.objects[large_path]
binding.pry
S3_BUCKET.objects.delete([small, large])
end
end
end
end
示例 url1
"http://projectname-staging.s3.amazonaws.com/images/994/small_thumb.png"
示例 url2
"http://projectname-production.s3.amazonaws.com/images/994/large_thumb.png"
【问题讨论】:
标签: ruby-on-rails ruby amazon-web-services amazon-s3