AWS::S3 rename a folder
I see there is an AWS::S3::S3Object.rename
but I can't do it with folders:
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]
)
The old_name_folder contains files and folders and I want the renaming to respect this.
I'm obtaining: AWS::S3::NoSuchKey (The specified key does开发者_C百科 not exist.)
I don't know if I'm doing something wrong or it is just not possible to rename s3 folders.
The documentation for AWS::S3 explains this pretty well. When storing files on s3, there are no such things as folders. There is a bucket (your APP_CONFIG[:s3_bucket]
presumably), and there are objects. That is it. There are no folders. One of your objects might be named /files/public/system/whatever/derp.jpg
- but there are no folders there, only an object with a name that looks like a path, and then the value of the object (the actual file residing at that location).
So to answer your question, you cannot rename folders because there is no such thing on s3. You have to rename individual objects.
You can copy objects from one s3://[path_1]
to another s3://[path_2]
via AWS Console.
https://docs.aws.amazon.com/cli/latest/reference/s3/mv.html
Example move objects between different buckets:
aws s3 mv s3://[s3-name1]/folder1 s3://[s3-name2]/[folder2] --recursive
or within the same S3
aws s3 mv s3://[s3-name1]/folder1 s3://[s3-name1]/[folder2] --recursive
The easiest way to rename the folder in S3 bucket is open AWS CLI https://docs.aws.amazon.com/cli/latest/userguide/ or AWS Cloud Shell https://aws.amazon.com/cloudshell/
The benefit with AWS cloud shell is that no need to configure, CloudShell is pre-authenticated with your console credential. (Note-- This service launch yesterday)
aws s3 --recursive mv s3:///<folder_name_from> s3:///<folder_name_to>
See the example below, where I change the name of the folder "firstname" to "first" folder. Also, this command move all the object inside that new folder from the older folder.
You cant do this because AWS pricing for every request. So they want to more action. Rename folder or delete will not work. Before you must move / delete etc all files.
精彩评论