2

次を使用して、コレクションのプレフィックスを変更する方法があることがわかります。

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

4

2 に答える 2

3

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への1回の呼び出しでプレフィックスを結合するだけで実現できます。

# enumerate objects with the prefix 'abc/xyz/'
folder1 = 'abc/'
folder2 = 'xyz/'
bucket.objects.with_prefix("#{folder1}#{folder2}").each do |object|
end
于 2012-10-19T04:29:12.943 に答える
0

私の答えを無視してください、もし私があなたの主張を理解していないのなら?

s3バケットに存在するオブジェクトのプレフィックスを変更したい。新しいプレフィックスでオブジェクトをコピーしてから、古いプレフィックスを削除した場合にのみ可能になります。

于 2012-10-15T06:25:48.840 に答える