2017-08-14 5 views
1

Existe-t-il un moyen d'appliquer une balise (ou un ensemble de balises) à tous les objets d'un répertoire S3 en utilisant une seule commande cli put-object-tagging?AWS S3 cli-tag tous les objets dans un répertoire

Ie si j'ai deux fichiers (test0.txt, test.txt) Je peux faire la course les deux commandes suivantes:

>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}]' 

Lorsque vous essayez de passer le dossier lui-même que l'option --key je reçois l'erreur suivante (comme il doit référencer un seul objet):

>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. 

Y a-t-il une solution de contournement pour cela?

Répondre

2

Il n'y a pas de concept de répertoire dans S3. Voici un moyen brut de réaliser ce que vous voulez. D'autres affiches peuvent avoir une meilleure solution. La solution suivante obtient d'abord tous les objets dans le dossier, puis appelle put-object-tagging pour chacun d'eux. Note: Je n'ai pas testé cette solution.

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