2017-08-14 98 views
1

有没有办法使用一个单一的put-object-tagging cli命令将标记(或一组标记)应用于S3目录中的所有对象?AWS S3 cli - 标记目录中的所有对象

也就是说,如果我有两个文件(test0.txttest.txt)我可以做运行以下两个命令:

>aws s3api put-object-tagging --bucket mybucket --key foo/bar/test0.txt --tagging 'TagSet=[{Key=colour,Value=blue}]' 
>aws s3api put-object-tagging --bucket mybucket --key foo/bar/test1.txt --tagging 'TagSet=[{Key=colour,Value=blue}]' 

当试图通过文件夹本身作为--key选项我得到以下错误(因为它必须引用单个对象):

>aws s3api put-object-tagging --bucket mybucket --key foo/bar/ --tagging 'TagSet=[{Key=colour,Value=blue}] 
An error occurred (NoSuchKey) when calling the PutObjectTagging operation: The specified key does not exist. 

是否有解决方法?

回答

2

S3中没有目录的概念。这是一个原油的方式达到你想要的。其他海报可能有更好的解决方案。以下解决方案首先获取文件夹中的所有对象,然后为每个对象调用put-object-tagging注意:我没有测试这个解决方案。

aws s3api list-objects --bucket mybucket --query 'Contents[].{Key:Key}' 
    --output text | grep foo/bar/ | xargs aws s3api put-object-tagging 
    --bucket mybucket --tagging 'TagSet=[{Key=colour,Value=blue}]' --key