ruby-on-rails - AWS S3 使用 aws-sdk 更改存储桶/前缀

标签 ruby-on-rails ruby amazon-s3 aws-sdk

我可以看到有一种方法可以使用以下方法更改集合的前缀:

objects = collection.with_prefix('a/').with_prefix('b/', :replace)
objects.prefix #=> 'b/'

问题:如何保存此更改?

http://rubydoc.info/github/amazonwebservices/aws-sdk-for-ruby/master/AWS/S3/ObjectCollection:with_prefix

最佳答案

您可以使用 AWS::S3::S3Object#move_to 方法在 S3 中的“文件夹”之间移动对象。

bucket.objects.with_prefix('a/').each do |obj|
  obj.move_to(obj.key.sub(/^a/, 'b'))
end

AWS::S3::ObjectCollection#with_prefix 上的 :replace 和 :append 参数控制 #with_prefix 如何构建用于在链接时过滤枚举对象的前缀的行为。 :append 的示例用法可能如下所示:

# enumerates objects inside folder1 / folder2
bucket.objects.with_prefix(folder1).with_prefix(folder2, :append).each do |obj|
end

当然,您可以通过在一次调用 #with_prefix 中加入前缀来实现此目的:

# enumerate objects with the prefix 'abc/xyz/'
folder1 = 'abc/'
folder2 = 'xyz/'
bucket.objects.with_prefix("#{folder1}#{folder2}").each do |object|
end

关于ruby-on-rails - AWS S3 使用 aws-sdk 更改存储桶/前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12865786/

相关文章:

amazon-web-services - 在多个区域启动 AWS 云信息堆栈

amazon-web-services - 限制对 VPC 的 S3 存储桶访问

amazon-s3 - 运行 FFmpeg 命令

ruby - 我正在尝试使用 yeoman 和backbone 创建示例应用程序,但显示一些错误有人可以帮助我吗?

ruby-on-rails - 验证 Facebook + Twitter + Instagram 的访问 token

ruby - 什么决定了可变类上的 bang 方法是否返回 `nil` ?

jquery - 如何避免 bootstrap 的 select2() 插件中出现重复条目

ruby-on-rails - 从嵌套部分预加载

ruby-on-rails - 如何在 Ruby on Rails 中为表单元素添加 onchange 监听器?

ruby-on-rails - 如何在较新的 Rails 上用只读替换查找?