ruby AWS::S3重命名文件夹

xbp102n0  于 12个月前  发布在  Ruby
关注(0)|答案(4)|浏览(155)

我看到有一个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文件夹 *。

nc1teljy

nc1teljy1#

documentation for AWS::S3很好地解释了这一点。当在s3上存储文件时,没有文件夹之类的东西。有一个桶(大概是你的APP_CONFIG[:s3_bucket]),有对象。就是这样。没有文件夹。你的一个对象可能被命名为/files/public/system/whatever/derp.jpg-但那里没有文件夹,只有一个名称看起来像路径的对象,然后是对象的值(驻留在该位置的实际文件)。
所以回答你的问题,你不能重命名文件夹,因为在s3上没有这样的东西。你必须重命名单个对象。

2o7dmzc5

2o7dmzc52#

您可以通过AWS控制台将对象从一个s3://[path_1]复制到另一个s3://[path_2]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 mv s3://[s3-name1]/folder1 s3://[s3-name1]/[folder2] --recursive

y53ybaqx

y53ybaqx3#

在S3存储桶中重命名文件夹的最简单方法是打开AWS CLI https://docs.aws.amazon.com/cli/latest/userguide/或AWS Cloud Shell https://aws.amazon.com/cloudshell/
使用AWS Cloud Shell的好处是无需配置,CloudShell已使用您的控制台凭据进行预身份验证。(注意-此服务于昨天推出)
aws s3 --recursive mv s3:<folder_name_from>/ s3:/<folder_name_to>
请看下面的例子,我将文件夹的名称“firstname”更改为“first”folder。此外,此命令将旧文件夹中的所有对象移动到新文件夹中。
x1c 0d1x的数据

jslywgbw

jslywgbw4#

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

相关问题