AWS :: S3重命名文件夹

时间:2011-03-30 16:01:16

标签: ruby amazon-s3

我看到有AWS::S3::S3Object.rename,但我无法使用文件夹

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文件夹

4 个答案:

答案 0 :(得分:27)

documentation for AWS::S3很好地解释了这一点。在s3上存储文件时,没有文件夹这样的东西。有一个桶(大概是你的APP_CONFIG[:s3_bucket]),还有一些物品。这就对了。没有文件夹。您的一个对象可能被命名为/files/public/system/whatever/derp.jpg - 但是那里没有文件夹,只有一个名称看起来像路径的对象,然后是对象的值(驻留在该位置的实际文件)。 / p>

所以要回答你的问题,你不能重命名文件夹,因为在s3上没有这样的东西。您必须重命名单个对象。

答案 1 :(得分:2)

您可以将对象从一个s3:// [path_1]复制到另一个s3:// [path_2] 通过AWS控制台 https://docs.aws.amazon.com/cli/latest/reference/s3/mv.html

在差异存储桶之间移动对象的示例:

aws s3 mv s3://[s3-name1]/folder1 s3://[s3-name2]/[folder2] --recursive 

或同一s3

aws s3 cp s3://[s3-name1]/folder1 s3://[s3-name1]/[folder2] --recursive 

答案 2 :(得分:0)

在S3存储桶中重命名文件夹的最简单方法是打开AWS CLI https://docs.aws.amazon.com/cli/latest/userguide/或AWS Cloud Shell https://aws.amazon.com/cloudshell/

AWS云外壳的好处是无需配置,CloudShell已通过您的控制台凭证进行了预认证。 (注意-该服务昨天启动)

aws s3-递归mv s3:/// <文件夹名称自> s3:/// <文件夹名称至>

请参见下面的示例,在该示例中,我将文件夹“ firstname”的名称更改为“ first”文件夹。另外,此命令还将新文件夹中的所有对象从旧文件夹中移出。

enter image description here

答案 3 :(得分:0)

您不能这样做,因为 AWS 为每个请求定价。所以他们想要更多的行动。重命名文件夹或删除将不起作用。在您必须移动/删除等所有文件之前。