2011-03-30 76 views
10

我看到有一個AWS::S3::S3Object.rename但我不能文件夾做到這一點:AWS :: 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] 
) 

old_name_folder包含文件和文件夾,我想改名尊重這個。

我獲得:AWS::S3::NoSuchKey (The specified key does not exist.)

我不知道如果我做錯了什麼,或者它只是不能重命名S3文件夾

回答

26

documentation for AWS::S3解釋得很好。在s3上存儲文件時,不存在文件夾等。有一個桶(大概是APP_CONFIG[:s3_bucket]),並且有物體。這就對了。沒有文件夾。其中一個對象可能被命名爲/files/public/system/whatever/derp.jpg - 但這裏沒有文件夾,只有名稱看起來像路徑的對象,然後是對象的值(駐留在該位置的實際文件)。

所以要回答你的問題,你不能重命名文件夾,因爲在S3上沒有這樣的事情。您必須重命名單個對象。

+0

很好理解,所以我必須將所有*文件路徑*複製到*新文件路徑*並刪除*舊文件路徑*。 – fguillen 2011-03-30 17:29:50

+5

@fguillen - 你不必/不能刪除舊的。只需重命名文件/對象。你看到的文件夾只是虛擬的 - 它們就是gui工具通過裏面的'/'來解釋文件名的方式 – 2011-03-30 17:54:00

+0

@fguillen Geoff是對的,祝你好運! – 2011-03-30 18:05:07