2016-08-19 7 views
-1

Bash-Skript nicht Looping arbeitete vor Below Skript nach einer AWS Command Line Interface installieren sauber brach installiert ist und AWS konfiguriert istS3-Objekt wie erwartet

Wenn es nicht durch jede Datei Looping?

## variables are set before this point 
files=$(/usr/local/bin/aws s3api list-objects --bucket "$bucket" --prefix "$target_zipname" --query "Contents[].{Key: Key}") 

##return sample## 
# [ { "Key": "fmpbks_2016_08_18_17_08_35.zip" }, { "Key": "fmpbks_2016_08_18_17_14_39.zip" }, { "Key": "fmpbks_2016_08_19_10_54_24.zip" }, { "Key": "fmpbks_2016_08_19_10_55_57.zip" }, { "Key": "fmpbks_2016_08_19_10_56_29.zip" }, { "Key": "fmpbks_2016_08_19_11_00_56.zip" } ] 
## 
for zip_file in $files 
do 
echo $zip_file # for testing 
delete_path="s3://$bucket/$zip_file" 
deleted=$(/usr/local/bin/aws s3 rm $delete_path) 
break 
done 

output:

[ 
{ 
"Key": 
"fmpbks_2016_08_18_17_08_35.zip" 
}, 
{ 
"Key": 
"fmpbks_2016_08_18_17_14_39.zip" 
}, 
{ 
"Key": 
"fmpbks_2016_08_19_10_54_24.zip" 
}, 
{ 
"Key": 
"fmpbks_2016_08_19_10_55_57.zip" 
}, 
{ 
"Key": 
"fmpbks_2016_08_19_10_56_29.zip" 
}, 
{ 
"Key": 
"fmpbks_2016_08_19_11_00_56.zip" 
} 
] 

Antwort

0

aws s3api list-buckets Der Befehl gibt ein JSON Objekt standardmäßig. Die Schleife for versteht nicht, wie JSON zu interpretieren ist.

Verwenden Sie die --output text Option jede Datei in einer separaten Zeile zur Liste:

files=$(aws s3api list-objects --bucket MY-BUCKET --query 'Contents[*].Key' --output text) 

By the way, wenn Ihr Ziel zu ist es, alle Dateien in einem bestimmten Pfad löschen, könnten Sie verwenden:

aws s3 rm s3://MY-BUCKET --exclude "*" --include "MY-PREFIX*" --recursive 
+0

Vielen Dank, dass es zu lösen. Dies ist ein Backup-System, wo ich jeden Tag ein Verzeichnis zip und verschieben Sie die Datei zu Amazon, aber nur ein Maximum von 3 Backups. Und es funktioniert dank Ihrer Antwort. – Franck

+0

Großartig! Wenn Sie nach einem Backup-Tool suchen, verwende ich gerne [Cloudberry Backup] (http://www.cloudberrylab.com/cloud-backup-windows-desktop.aspx). Es ist jetzt auch als Freeware verfügbar. –