Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I update the meta-data of a directory using aws s3 cli?

I am attempting to use the following command in a bash script to update the x-amz-meta-uid and x-amz-meta-gid of files and folders recursively.

aws s3 cp s3://$SOURCE_CLOUD_BUCKET_PATH s3://$DESTINATION_CLOUD_BUCKET_PATH --recursive --quiet --metadata-directive "REPLACE" --metadata "uid=$USER_UID,gid=$USER_GID"

However, it only seems to be updating the metadata on files. How can I also get this to update the metadata on the directories/folders also?

aws --version

aws-cli/2.0.43 Python/3.7.3 Linux/5.4.0-1029-aws exe/x86_64.ubuntu.18

like image 705
Tome A Avatar asked Dec 28 '25 19:12

Tome A


1 Answers

As AWS S3 document states : https://docs.aws.amazon.com/AmazonS3/latest/user-guide/using-folders.html

In Amazon S3, buckets and objects are the primary resources, and objects are stored in buckets. Amazon S3 has a flat structure instead of a hierarchy like you would see in a file system. However, for the sake of organizational simplicity, the Amazon S3 console supports the folder concept as a means of grouping objects. Amazon S3 does this by using a shared name prefix for objects (that is, objects have names that begin with a common string). Object names are also referred to as key names.

Since AWS S3 is Object storage service and is not POSIX compliant.

Which means there is no disk level folder structure maintainer.

The folders you are seeing are logical which means a file with name hello/world.text will show hello as parent folder name while world.txt as file name however, the actual filename stored is hello/world.txt.

So the meta-data is also managed at file level and not at folder level since, their are no physical folders.

The CLI behaviour is correct and you need to modify meta-data of files. Though, you can modify meta-data of all files / multiple files in a go.

like image 181
Atul Sharma Avatar answered Dec 30 '25 14:12

Atul Sharma