2011-03-30 39 views
10

orada bir AWS::S3::S3Object.rename ama klasörler ile bunu yapamaz bakın bir klasörü yeniden adlandırmak:old_name_folder dosya ve klasörleri içerirAWS :: S3

AWS::S3::Base.establish_connection!(
:access_key_id  => APP_CONFIG[:s3_access_key_id], 
:secret_access_key => APP_CONFIG[:s3_secret_access_key] 
) 
AWS::S3::S3Object.rename(
"assets/old_name_folder", 
"assets/new_name_folder", 
APP_CONFIG[:s3_bucket] 
) 

ve ben saygı için yeniden adlandırılmasını istiyor bu. Yanlış bir şey yapıyorum AWS::S3::NoSuchKey (The specified key does not exist.)

Bilmiyorum yoksa sadece mümkün değil s3 klasörleri adlandırmak etmektir:

ben elde ediyorum.

cevap

26

documentation for AWS::S3 bunu oldukça iyi açıklıyor. Dosyaları s3 üzerinde saklarken, klasörler gibi bir şey yoktur. Bir kova (muhtemelen APP_CONFIG[:s3_bucket]) vardır ve nesneler vardır. İşte bu. Klasör yok. Nesnelerinizden biri /files/public/system/whatever/derp.jpg olarak adlandırılabilir - ancak orada klasör yok, yalnızca bir yola benzeyen bir nesne ve sonra nesnenin değeri (o konumda bulunan gerçek dosya).

Sorunuza cevap vermek için, klasörleri yeniden adlandıramazsınız çünkü s3'te böyle bir şey yoktur. Tek tek nesneleri yeniden adlandırmanız gerekiyor.

+0

oldukça iyi anlaşılmış olduğundan, tüm * dosya yollarını * yeni dosya yollarına * kopyalamalı ve * eski dosya yollarını * kaldırmam gerekir. – fguillen

+5

@fguillen - eskileri kaldırmak zorunda değilsiniz. Sadece dosyaları/nesneleri yeniden adlandırın. Gördüğünüz klasörler sadece sanal - onlar GUI araçlarının '/' ile dosya isimlerini yorumlama şekli onlar/'' lerde –

+0

@fguillen Geoff doğru, iyi şanslar! –